JAVA
-
Test081 배열의 개요2020.09.05
-
Test080 생성자와 초기화 블럭2020.09.05
-
Test079 생성자(4)2020.09.05
-
Test078 생성자(3)2020.09.05
-
Test077 생성자(2)2020.09.05
Test081 배열의 개요
○ 배열의 개요
1. 배열이란 크기와 성격이 같은 일련의 원소들이 모여 공동의 집합 구조를 갖는 자료의 집합체를 의미하는 것으로
"동질적인 성격을 가진 자료들" 에 대해 개별적으로 자료형(Data Type)을 부여하지 않고 하나의 이름을 가지고 일괄적 으로 처리할 목적으로 사용된다.
2. 자바에서 배열은 다음과 같은 순서에 의해 사용된다.
배열 선언 → 배열에 메모리 할당 → 배열 요소의 사용
(배열 사용)
○ 배열의 형식 및 구조
자료형[] 변수명;
변수명 = new 자료형[요소크기];
변수명[인덱스] = 값;
int[] arr;
arr = new int[3];
arr[0] = 10;
arr[1] = 20;
arr[2] = 30;
public class Test081 { public static void main(String[] args) { // 배열 선언 int[] arr; // 메모리 할당 arr = new int[10]; // 배열은 다음과 같이 선언과 동시에 초기화 // 메모리 할당및 초기화가 가능하다 int[] arr2 = new int[10]; int[] arr3 = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}; int arr4[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0}; // 배열 요소 사용(접근) arr[0] = 1; arr[1] = 2; arr[2] = 3; // ※ 값을 할당하지 않은 나머지 배열 공간은 // 자동으로 초기화된다. → 0 (int형 배열) int num = 10; System.out.println("num : " + num); //--==>> num : 10 System.out.println("arr : " + arr); //--==>> arr : [I@15db9742] //-- 배열을 출력하기 위해 배열 변수를 일반 변수처럼 사용하여 // 출력하는 구문을 작성하게 되면 // 배열의 각 방에 들어있는 데이터가 출력되는 것이 아니라 // 우리가 알아볼 수 없는 코드가 출력된다. // (자바는 메모리 주소값에 사용자가 직접 접근하는 것을 // 허용하지 않기 때문에...) System.out.println("arr[0] : " + arr[0]); //--==>> arr[0] : 1 System.out.println("arr[1] : " + arr[1]); //--==>> arr[1] : 2 System.out.println("arr[2] : " + arr[2]); //--==>> arr[2] : 3 System.out.println(arr[0] + " " + arr[1] + " " + arr[2] + " " + arr[3] + " " + arr[4] + " " + arr[5] + " " + arr[6] + " " + arr[7] + " " + arr[8] + " " + arr[9]); //--==>> 1 2 3 0 0 0 0 0 0 0 // ------------- // 반복문을 활용하여 배열에 담긴 데이터 전체 출력 for(int i = 0; i<10; i++) //i → 0 1 2 3 4 5 6 7 8 9 { // 테스트 //System.out.println("i : " + i); // 테스트 //System.out.printf("%2d", arr[i]); System.out.printf("arr 배열의 %d번째 방 : %2d\n", i, arr[i]); //--==>> /* num : 10 arr : [I@15db9742 arr[0] : 1 arr[1] : 2 arr[2] : 3 1 2 3 0 0 0 0 0 0 0 arr 배열의 0번째 방 : 1 arr 배열의 1번째 방 : 2 arr 배열의 2번째 방 : 3 arr 배열의 3번째 방 : 0 arr 배열의 4번째 방 : 0 arr 배열의 5번째 방 : 0 arr 배열의 6번째 방 : 0 arr 배열의 7번째 방 : 0 arr 배열의 8번째 방 : 0 arr 배열의 9번째 방 : 0 계속하려면 아무 키나 누르십시오 . . . */ } System.out.println(); } }
'JAVA > 자바 기본 프로그래밍' 카테고리의 다른 글
Test083 배열의 기본적 활용(2) (0) | 2020.09.05 |
---|---|
Test082 배열의 기본적 활용(1) (0) | 2020.09.05 |
표기법 정리 (1) | 2020.09.05 |
Test068 실행 흐름의 컨트롤(제어문) return (0) | 2020.09.04 |
Test067 실행 흐름의 컨트롤(제어문) continue (0) | 2020.09.04 |
표기법 정리
표기법 정리
○ 파스칼 표기법(Pascal Notation: Pascak Case)
파스칼 표기법은 첫 글자를 대문자로 구성하며 단어가 합성될 때 마다 각 단어의 첫 글자를 대문자를 표기하는 방식(방법)이다.
ex) class MainTitle class CircleTest class UserStatus
자바에서는 클래스의 명명 규칙인 첫 글자를 대문자로 한다는 규칙에 캐멀 표기법이 합쳐진 형태이다.
○ 언더스코어 표기법(Underscore Notation: Underscore Case: 밑줄 표기법)(Underscore == Underline)
주로 데이터베이스나 자바스크립트에서 지역 변수를 사용할 경우에 언더바(underline)를 사용하는 언더 스코어 표기법을 사용하기도 한다.
ex) content_name user_data
○ 캐멀 표기법(Camel Notation: Camel Case: 낙타 표기법)
캐멀 표기법은 두 단어 이상의 변수명을 표현할 때 두 번째 단어부터 첫글자를 대문자로 표기하는 방법.
ex) addData rainbowColor userName
변수의 명명규칙(naming Rule)인 첫 글자를 소문자로 한다는 규칙과 캐멀 표기법이 합쳐져서 네이밍이 이루어진다.
캐멀 표기법은 자바에서 시작된 것으로 변수명 혹은 클래스명을 작성할 때 단어마다 단어의 첫 글자를 대문자로 표기하는 것이다. 이 표기법은 각 단어의 첫 글자가 대문자로 표기되어 꼭 낙타의 등처럼보이기 떄문에 캐멀 표기법이라고 불리게 되었다고 알고있는 사람들이 많지만 이는 사실과 다르다.
- 클래스 이름
: 맨 앞 글자를 대문자로 한다. 두번쨰로 오는 의미있는 단어의 앞 글자는 대문자이다.
ex) public class MyClass{....} //--(○)
public class Myclass{....} //--(X)
- 변수 이름
: 맨 앞 글자를 소문자로 한다.
두 번째로 오는 의미있는 단어의 앞 글자는 대문자이다.
ex) String myName; //--(○)
String MyName; //--(X)
- 메소드 이름
: 맨 앞 글자를 소문자로 한다.
두 번째로 오는 의미있는 단어의 앞 글자는 대문자이다.
(변수 이름의 명명법과 동일한 방법)
단, 메소드의 이름은 가급적 동사로 시작할 수 있도록 명명하는 것이 좋다.
ex) public String createMyName() {....} //--(○)
public String createmyname() {....} //--(X)
public String myName() {....} //--(동사가 아닌 명사이므로 추천하지 않음)
○ 헝가리언 표기법(Hungarian Notation: Hungarian Case)
헝가리언 표기법은 Microsoft 사의 Charles Simonyi 라는 프로그래머가 만들게 되었다고 한다.
그가 코딩할 때 습관적으로 즐겨쓰던 접두어 변수 명명 방식이 빌 게이츠의 눈에 띄어 표준화(일반화)된 것이라 한다.
변수를 표기할 때 앞에 접두어로 쉽게 알아볼 수 있도록 표기하였는데, 이를 통해 자료형을 쉽게 알아볼 수 있다.
ex) int nNum float fNum
argument of String → args
Data Type Prefix Example
----------- --------- --------------
boolean b bContinue
int n nIndex
short n nNum
char c cFirstInitial
String s(str) sCustomerName(strCustomerName)
※ 실제 자바 프로젝트에서... 클래스는 파스칼 표기법으로 변수나 메소드의 이름은 캐멀 표기법으로 사용하며,
간혹 오래된 프로젝트를 유지보수 하다보면 헝가리언 표기법으로 네이밍하는 개발자들도 적지 않다.
'JAVA > 자바 기본 프로그래밍' 카테고리의 다른 글
Test082 배열의 기본적 활용(1) (0) | 2020.09.05 |
---|---|
Test081 배열의 개요 (0) | 2020.09.05 |
Test068 실행 흐름의 컨트롤(제어문) return (0) | 2020.09.04 |
Test067 실행 흐름의 컨트롤(제어문) continue (0) | 2020.09.04 |
Test066 실행 흐름의 컨트롤(제어문) break (0) | 2020.09.04 |
Test080 생성자와 초기화 블럭
public class Test080 { int n; int m; // 생성자(Constructor) Test080() { n = 100; m = 200; System.out.println("생성자 실행..."); } // 초기화 블럭(Initialized Block) { n=20; m=40; System.out.println("초기화 블럭 실행..."); } // 생성자 Test080(int n, int m) { this.n = n; this.m = m; System.out.println("매개변수 있는 생성자 실행..."); } // 출력 메소드 정의 void write() { System.out.println("n:" + n + ", m:" + m); } public static void main(String[] args) { Test080 ob1 = new Test080(); ob1.write(); //--==>> 초기화 블럭 실행... // 생성자 실행 // n:100, m:200 Test080 ob2 = new Test080(1234, 4567); ob2.write(); } }
'JAVA > 클래스와 객체' 카테고리의 다른 글
Test102 정보은닉과 접근제어 지시자(2) (1) | 2020.09.06 |
---|---|
Test101 정보은닉과 접근제어지시자(1) (0) | 2020.09.06 |
Test079 생성자(4) (0) | 2020.09.05 |
Test078 생성자(3) (0) | 2020.09.05 |
Test077 생성자(2) (0) | 2020.09.05 |
Test079 생성자(4)
생성자 오버로딩(Overloading)
public class Test079 { int val1; double val2; Test079() { val1 = 0; val2 = 0; System.out.println("매개변수 없는 생성자..."); } Test079(int x) { val1 = x; val2 = 0; System.out.println("int형 데이터를 매개변수로 받는 생성자"); } Test079(double y) { val1=0; val2=y; System.out.println("double형 데이터를 매개변수로 받는 생성자..."); } Test079(int x, double y) { val1=x; val2=y; System.out.println("int형 변수와 double형 변수를 매개변수로 받는 생성자..."); } public static void main(String[] args) { Test079 ob1 = new Test079(); //--==>> 매개변수 없는 생성자... Test079 ob2 = new Test079(4); //--==>> int형 데이터를 매개변수로 받는 생성자 Test079 ob3 = new Test079(4.0); //--==>> double형 데이터를 매개변수로 받는 생성자 Test079 ob4 = new Test079(4, 4.0); //--==>> int형 변수와 double형 변수를 매개변수로 받는 생성자 System.out.println(ob1.val1 + ", " + ob1.val2); //--==>> 0, 0.0 System.out.println(ob2.val1 + ", " + ob2.val2); //--==>> 4, 0.0 System.out.println(ob3.val1 + ", " + ob3.val2); //--==>> 0, 4.0 System.out.println(ob4.val1 + ", " + ob4.val2); //--==>> 4, 4.0 } }
실행 결과
// 실행 결과 /* 매개변수 없는 생성자... int형 데이터를 매개변수로 받는 생성자 double형 데이터를 매개변수로 받는 생성자... int형 변수와 double형 변수를 매개변수로 받는 생성자... 0, 0.0 4, 0.0 0, 4.0 4, 4.0 계속하려면 아무 키나 누르십시오 . . . */
'JAVA > 클래스와 객체' 카테고리의 다른 글
Test101 정보은닉과 접근제어지시자(1) (0) | 2020.09.06 |
---|---|
Test080 생성자와 초기화 블럭 (0) | 2020.09.05 |
Test078 생성자(3) (0) | 2020.09.05 |
Test077 생성자(2) (0) | 2020.09.05 |
Test076 생성자(1) (0) | 2020.09.05 |
Test078 생성자(3)
※ 생성자의 이름은 항상 예외없이 클래스의 이름과 동일해야 하며, 필요한 경우 인수를 받아들이는 것도 가능하고,
같은 이름의 메소드를 정의하는 중복정의가 가능하지만 리턴값(반환값)은 가질 수 없다.
※ 생성자는 다른 일반 메소드처럼 호출될 수 없고 "new" 연산자를 이용하여 객체를 생성하기 위해 호출되며,
각 클래스의 인스턴스인 객체를 생성한 후에 생성된 객체의 멤버를 초기화시키는 작업을 수행한다.
※ 생성자 내부에서 다른 생성자를 호출하는 것은 가능하다. 단, 생성자 내부에서 가장 먼저 실행되어야 한다.
public class Test078 { int x; // ※ 생성자의 이름은 항상 예외없이 클래스의 이름과 동일해야 하며 // 필요한 경우 인수를 받아들이는 것도 가능하고, // 같은 이름의 메소드를 정의하는 중복정의가 가능하지만 // 리턴값(반환값)은 가질 수 없다. // ※ 생성자는 다른 일반 메소드처럼 호출될 수 없고 // "new" 연산자를 이용하여 객체를 생성하기 위해 호출되며, // 각 클래스의 인스턴스인 객체를 생성한 후에 // 생성된 객체의 멤버를 초기화시키는 작업을 수행한다. Test078() { // ※ 생성자 내부에서 다른 생성자를 호출하는 것은 가능하다. // 단, 생성자 내부에서 가장 먼저 실행되어야 한다. //생성자 호출 this(1000); System.out.println("인자가 없는 생성자"); System.out.println("Test078이 갖고있는 x : " + x); } Test078(int x) { this.x = x; System.out.println("인자가 하나인 생성자"); System.out.println("Test078이 갖고있는 x : " + this.x); } public static void main(String[] args) { Test078 ob1 = new Test078(); Test078 ob2 = new Test078(100); System.out.println(); System.out.println("main 에서 ob1.x : " + ob1.x); System.out.println("main 에서 ob1.x : " + ob2.x); } }
'JAVA > 클래스와 객체' 카테고리의 다른 글
Test080 생성자와 초기화 블럭 (0) | 2020.09.05 |
---|---|
Test079 생성자(4) (0) | 2020.09.05 |
Test077 생성자(2) (0) | 2020.09.05 |
Test076 생성자(1) (0) | 2020.09.05 |
Test075 클래스와 인스턴스(4) (0) | 2020.09.05 |
Test077 생성자(2)
class NumberTest2 { int num; // 사용자 정의 생성자 → int형 매개변수를 갖는 생성자 NumberTest2(int n) { num = n; System.out.println("생성자 호출 시 매개변수 전달 : " + n); } int getNum() { return num; } } public class Test077 { public static void main(String[] args) { // NumberTest2 인스턴스 생성 //NumberTest2 ob1 = new NumberTest2(); //--==>> 에러 발생(컴파일 에러) //-- NumberTest2 클래스에는 // 사용자 정의 생성자가 존재하고 있는 상황이기 때문에 // 컴파일을 수행하는 과정에서 // "default 생성자" 가 자동으로 삽입되지 않으며, // 사용자 정의 생성자는 매개변수를 갖는 형태로 정의했기 때문에 // 위와 같이 매개변수 없는 생성자 호출 시 문제가 발생할 수 밖에 없다. NumberTest2 ob1 = new NumberTest2(10); //--==>> 생성자 호출 시 매개변수 전달 : 10 System.out.println("메소드 반환 값 : " + ob1.getNum()); //--==>> 메소드 반환 값 : 10 NumberTest2 ob2 = new NumberTest2(3925); System.out.println("메소드 반환 값 : " + ob2.getNum()); //--==>> 메소드 반환 값 : 3925 } }
'JAVA > 클래스와 객체' 카테고리의 다른 글
Test079 생성자(4) (0) | 2020.09.05 |
---|---|
Test078 생성자(3) (0) | 2020.09.05 |
Test076 생성자(1) (0) | 2020.09.05 |
Test075 클래스와 인스턴스(4) (0) | 2020.09.05 |
Test074 클래스와 인스턴스(3) (0) | 2020.09.05 |