Java/정리

[Java] 배열

콧등치기국수 2021. 5. 5. 18:26

1. 배열 선언

자료형[ ]   배열명;
자료형   배열명[ ];

▶ int[ ] arr;

: arr 이란 변수 생성 → 배열의 주소값이 담김(0x200)

 

 

 

2. 배열 할당

→ 할당되고 나면 크기는 나중에 변경이 불가능하다.

자료형[ ] 배열명 = new 자료형[배열크기];
자료형 배열명[ ] = new 자료형[배열크기];

▶ arr = new int[3];

: 3개의 칸이 있는 배열 생성, 배열의 값이 0x200번지에 저장됨

( ※ 0x : 16진수 )

 

 

 

int[ ] myArray = new int[5];

출처: https://stackoverflow.com/questions/8936997/memory-structure-for-an-array-of-pointers-to-objects-visualization

참조변수로 데이터 값은 heap영역에 할당되며 stack에 배열공간의 주소를 저장한다.

stack영역에 있는 배열공간의 주소를 이용해 배열의 인덱스를 참조하여 값을 가져옴

 

 

3. 배열 초기화

3-1. for문을 이용한 초기화

for(int i = 0; i < arr.length; i++) {        //배열이름.length : 배열의 길이 (()없음)

    arr[i] = i;

}

 

3-2. 선언과 동시에 초기화

int[] arr = {1,2,3,4,5};     //중괄호 블럭을 사용하는 경우 --> new연산자 사용 X,내부적으로 수행

int[] arr = new int[] {1,2,3,4,5};

String frit[] = {"사과","포도","참외"};

 

3-3. 주소값 출력 & 값 출력

double[] dArr = new double[3];

System.out.println("dArr : " + dArr);                       // 주소값
System.out.println("dArr의 해쉬코드 : " + dArr.hashCode);    // 주소값의 십진수

for(int i=0; i<dArr.length; i++) {                         //배열을 따로 초기화하지 않으면 
	System.out.println(dArr[i]);                       //JVM이 지정한 자료형의 기본값으로 배열을 초기화(double->0.0)
}

 

결과

dArr의 주소값 : [I@3830f1c0
dArr의 해쉬코드 : 942731712

0.0
0.0
0.0
0.0
0.0

1) System.out.println( 배열이름 )  주소값

2) System.out.println( 배열이름.hashCode )  주소값 십진수 값