JVM 메모리 구조
Static: static예약어로 선정된 필드,메소드가 저장되는 공간 클래스 변수 등
Heap: new연산자에 의해 동적으로 할당하고 저장되는 공간,객체,배열 등
STACK: 메소드를 호출하면 자동생성 메소드가 끝나면 자동소멸 지역변수,매개변수,메소드 호출
스택 등
배열:
같은 자료형의 변수를 하나의 묶음으로 다루는 것
배열은 저장된 값마다 인덱스 번호가 0부터 시작하여 설정
배열의 특징:
1.한 가지 자료형만 저장 가능하다.
2.여러 값을 저장할 수 있다.
3.한 번 크기를 저장하면 변경 불가능하다.
배열 선언과 할당 :
배열 선언
자료형[] 배열명;
자료형 배열명[];
배열 할당
자료형[]배열명 = new자료형[배열크기];
자료형 배열명[] = new자료향[배열크기];
ex) int[] arr = new int[3];
int arr[] = new int[3];
배열 저장구조: 배열은 참조 변수로Heap영역에 할당되며 배열 공간의 주소를 저장
배열 공간의 주소를 이용해 인덱스를 참조하는 방식으로 값 처리
배열 초기화
인덱스를 이용한 초기화
ex) arr[0] = 1;
arr[1] = 2;
for문을 이용한 초기화
ex) for(int i = 0; i < arr.length; i++) {
arr[i] =i;
}
선언과 동시에 초기화
ex0 int[] arr = {1,2,3,4,5};
int[] arr = new int[] {1,2,3,4,5};
String fruit[] = {"사과","포도","참외"};
*index가 순차적으로 증가함에 따라
초기화할 리터럴 값이 규칙적이라면
반복문을 통해 배열 초기화 가능
배열 복사
얕은 복사
객체의 주소값만 가져와 참조형 변수에 저장하고 하나의 객체를 두변수가 참조하느 것
int[] arr1 = new int[4];
int[] arr2 = arr1;
깊은 복사 : 새로운 배열 객체를 생성하여 기존 배열의 데이터를 복사하는 것
for(int i = 0; i < arr1.length; i++) {
arr2[i] = arr1[i];
}
System.arraycopy(arr1, 0, arr2, 0, arr1.length);
arr2 = Arrays.copyOf(arr1,arr1.length);
arr2 = arr1.clone();