< 배열 메모리구조
: 같은 자료형의 변수를 하나의 묶음으로 다루는 것. (자료구조)
:묶여진 변수들은 하나의 배열명으로 불려지고 구분은 index를 이용함
(index는 0부터 시작하는 정수)
배열의 특징
1. 한가지 자료형만 저장 가능하다
2. 여러 값을 저장할 수 있다
3. 한 번 크기를 지정하면 변경 불가능하다
1. 인덱스를 이용한 초기화
arr[0] = 1;
arr[1] = 2;
2. for문을 이용한 초기화
for(int i = 0; i < arr.length; i++){
arr[i] = i;
}
*index가 순차적으로 증가함에 따라 초기화 할 리터럴 값이 규칙적이라면 반복문을 통해 배열 초기화 가능
3. 선언과 동시에 초기화
int[] arr = {1, 2, 3, 4, 5};
int[] arr = new int[] {1, 2, 3, 4, 5};
String fruit[] = {"사과", "포도", "참외"};
.
.
1-1 변수 선언
int num;
이렇게 선언하고 나면 Stack 영역에 int 자료형을 저장 할 수 있는 공간 4byte를 생성(할당)하고 그 공간에 num이라는 이름을 부여
1-2 변수 대입
num = 10;
생성된 num이라는 변수 공간에 10을 대입
1-3 변수 사용
System.out.println("num에 저장 된 값 : " + num);
num이 작성된 자리에 num에 저장 된 값을 읽어와서 출력
2-1 배열 선언
int[] arr;
어떤 자료형을 만들지에 따라 앞에가 다름
Stack영역에 int 자료형 공간을 4byte 할당하고 그 공간에 arr이라는 이름을 부여
해당 변수는 참조형으로 안에 값이 있는게 아니라 주소값(4byte)만을 저장 할 수 있음
2-2 배열 할당
arr = new int[3];
new : "new 연산자" 라고 하며, Heap 메모리 영역에 새로운 공간(배열, 객체)을 할당
int[3] : int자료형 변수 3개를 하나의 묶음으로 나타냄
new int[3] : Heap영역에 int 3칸짜리 int[]생성 (할당)
생성된 int[]에는 시작주소가 지정된다
2-3 배열 요소 값 대입
arr[0] = 10;
arr[1] = 50;
arr[2] = 1000;
arr은 int[] 참조형 변수이지만
arr[0]~[2] 자료형 변수이기때문에 정수 값을 대입할 수 있다
2-4 배열 요소 값 읽어오기
System.out.println(arr);
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
얕은 복사
: 객체의 주소 값만 가져와 참조형 변수에 저장하고 하나의 객체를 두 변수가 참조하는 것
int[] arr1 = new int[4]
int[] arr2 = arr1;
깊은 복사
: 새로운 배열 객체를 생성하여 기존 배열의 데이터를 복사하는 것
for(int i = 0; i < arr1.length; i++) {
arr2[i] = arr[i];
}
System.arraycopy(arr1, 0, arr1.length);arr2 = Arrays.copyOf(arr1, arr1.length);
arr2 = arr1.clone();