이것이 자바다 정리 #1 참조 타입 (Reference Type)
이것이 자바다 책을 참고하였습니다.
primitive type)reference type)


JVM은 운영체제에서 Runtime Data Area 메모리 영역을 할당받아 다음과 같이 세부 영역으로 구분해서 사용한다.

main 쓰레드만 존재하며, JVM 스택 영역도 1개이다.push)하고 메소드가 종료되면 해당 프레임을 제거(pop)한다.printStackTrace() 메소드는 이 스택 영역을 기준으로 프레임을 출력한다.push) 되고 제거(pop) 된다.push)된다.pop)나간다.int a = 1;
if ( a == 1 ) {
int b = 1;
int c = 1;
} // b와 c는 블록이 끝나면서 `pop`된다.
int d = 1;
==, != 연산은 값이 같은지 다른지 확인한다.==, != 연산읜 참조하는 주소의 값이 같은지 다른지 확인한다.null을 갖는다.null을 갖는 참조 타입 변수도 초기화되었다고 생각하기 때문에 스택 영역에 올라간다.null을 가진 참조 타입 변수를 이용하려고 하면, NullPointerException이 발생한다.String은 참조 타입 변수다.new String()과 같이 새로운 객체를 생성한 경우에는 다른 주소를 참조한다.String 끼리의 내용을 비교할 때는 .equals() 메소드를 쓰는게 정확하다.int[] array1;
int array1[];
[])나 변수명 옆에 대괄호([]) 어느 방식으로도 가능하다.null을 참조하여 초기화될 수 있다.int[] a = {1, 2, 3};
int b[] = new int[] {1, 2, 3};
int[] c = new int[] {1, 2, 3};
int d[];
d = new int[] {1, 2, 3};
위 코드 중
a의 경우가 특별한데, 배열 생성 후 즉시 초기화 할 때만 문법에서new int[]가 생략된다고 이해하면 쉽다.


byte[]: 0char[]: \u0000short[]: 0int[]: 0long[]: 0Lfloat[]: 0.0Fdouble[]: 0.0boolean[]: false클래스[]: null인터페이스[]: null배열변수.lengthint[][] scores = new int[2][3];
2개의 트리에 3개의 자식트리가 각각 달리니 2*3만큼의 공간이 생긴다.int stair = new int[2][];
stair[0] = new int[2];
stair[1] = new int[3];
stair[0]에는 2개의 공간이 연결된 반면에 stair[1]에는 3개의 공간이 연결되어 있다.System.arraycopy() 메소드를 이용해 주로 복사한다.for문 처럼 카운터 변수(i)와 증감식(i++)을 사용하지 않는 형태이다.int[] scores = {95, 71, 84, 93, 87};
int sum = 0;
for (int score : scores) {
sum += score;
}
public enum Week {
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
...
}
_)로 구분한다.MONDAY_MORNING, LOGIN_SUCCESSWeek today = Week.SUNDAY;
name() 메소드Week today = WEEK.SUNDAY;
today.name(); // "SUNDAY"
ordinal() 메소드Week monday = WEEK.MONDAY;
Week sunday = WEEK.SUNDAY;
monday.ordinal(); // 0, 첫번째 열거 상수
sunday.oridnal(); // 6, 마지막 열거 상수
compareTo() 메소드Week monday = WEEK.MONDAY;
Week wednesday = WEEK.WEDNESDAY;
monday.compareTo(wednesday); // -2
wednesday.compareTo(monday); // 2
values() 메소드Week[] days = Week.values();
for (Week day : days) {
System.out.println(day); // MONDAY, TUESDAY ...
}