메소드 영역
JVM을 시작할 때 생성
로딩된 클래스 바이트 코드 내용을 분석후 저장
모든 스레드가 공유
힙 영역
JVM을 시작할 때 생성
객체/배열 저장
사용되지 않는 객체는 GC(Garbage Collection)가 자동 제거
JVM 스택
스레드별로 생성
메소드를 호출할 때마다 Frame을 스택에 추가(push)
메소드가 종료하면 Frame을 제거(pop)

기본 타입 변수는 스택에 데이터가 저장됨
char v1 = 'A';
int v2 = 100;
double v3 = 3.14;
boolean v4 = true;
참조 변수는 스택에 힙 영역의 번지가 저장됨
String name1 = new String("신용권");
String name2 = new String("신용권");

refVar1 == refVar2 // false
refVar1 != refVar2 // true
refVar2 == refVar3 // true
refVar2 != refVar3 // false

refVar2 == null // true
int[] intArray = null;
int Array[0] = 10; // NullPointerException
String str = null;
System.out.println("총 문자수 : " + str.length()); // NullPointerException
String name1 = "신용권";
String name2 = "신용권";
name1 == name2; // true
name1.equals(name2); // true

String name1 = new String("신용권");
String name2 = new String("신용권");
name1 == name2; // false
name1.equals(name2); // true

int[] intArray;
double[] doubleArray;
String[] strArray;
int intArray[];
double doubleArray[];
String strArray[];
int[] intArray = {1, 2, 3}; // 변수 선언과 동시에 값 목록 대입
int[] intArray;
intArray = new int[]{1, 2, 3}; // 변수 선언 후 값 목록 대입
int[] intArray = new int[5]; // int값 5개 저장 가능
// 인덱스 0~4까지 저장


int[] scores = new int[10]; // [ 0 0 0 0 0 0 0 0 0 0 ]
int[] intArray = {10, 20, 30};
int num = intArray.length; // num = 3

int[][] scores = new int[2][3] //

score.length // 2 (배열 A)
score[0].length // 3 (배열 B)
score[1].length // 3 (배열 C)
int[][] scores[2][]; // 2차원 배열을 정하지 않음
scores[0] = new int[3];
scores[1] = new int[5];
//int[][] scores[2][3]는 2차원 배열을 각각 따로 배열 길이 지정 불가능
int [][][] scores =
{ { {1, 2, 3, 4, 5}, {6, 7, 8, 9, 10} },
{ {11, 12, 13, 14, 15}, {16, 17, 18, 19, 20} }
};
// scores[2][2][5]
- `기본 타입` : 각 항목에 <span style="color: LightPink">직접 값</span>을 가짐
- `참조 타입` : 각 항목에 <span style="color: LightPink">객체의 번지</span>를 가짐
String[] strArray = new String[3];
strArray[0] = "java";
strArray[1] = "C++";
strArray[2] = "C#";
String[] oldStrArray = {"java", "array", "copy"};
String[] newStrArray = new String[5];
System.arraycopy(oldStrArray, 0, newStrArray, 0, oldStrArray.length);
/*
(옮겨질 배열, 옮겨질 배열의 시작 인덱스, 옮겨넣을 배열,
옮겨넣을 배열의 시작 인덱스, 옮겨 넣을 배열의 길이)
*/
int[] scores = {95, 71, 84, 93, 87};
int sum = 0;
for (int score : scores){
sum = sum + score;
}
열거 타입 소스 파일 생성 : ~.java
열거 타입 이름의 첫 문자는 대문자로 작성
Week.java
MemberGrade.java
소스 작성 방법
public enum Week {MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY,
SATURDAY, SUNDAY}