JAVA

배열 (힙,스택영역)

연93 2022. 9. 7. 11:02

new = 힙이라는 영역에 메모리를 생성하는 역활.

 

*참조타입기준*

= 기준으로 좌측은 스택, 오른쪽은 힙 

public static void main(String[] args) {
		
		//배열 : 기본데이터 타입으로 배열생성(값타입배열). 예> int[], double[], char[],....8개
		
		int[] arr1 = new int[3]; // 배열생성. 초기값이 0으로 세팅.
		for(int i=0; i<3; i++) { // 0, 1, 2 - 3개
			System.out.println("arr1[" + i + "] : " + arr1[i]);
		}
		
		arr1[0] = 10; // 0 -> 10
		arr1[1] = 20;
		arr1[2] = 30;
		
		for(int i=0; i<3; i++) { // 0, 1, 2 - 3개
			System.out.println("arr1[" + i + "] : " + arr1[i]);
		}
		
		// 초기값 0.0
		double[] arr2 = new double[3]; // 힙영역의 생성된 기억장소의크기. 8 * 3 = 24바이트
		for(int i=0; i<3; i++) { // 0, 1, 2 - 3개
			System.out.println("arr2[" + i + "] : " + arr2[i]);
		}
		
		arr2[0] = 0.1;
		arr2[1] = 0.2;
		arr2[2] = 0.3;
		
		for(int i=0; i<3; i++) { // 0, 1, 2 - 3개
			System.out.println("arr2[" + i + "] : " + arr2[i]);
		}
		/*----------------------------------------------------*/
		
		// 클래스로 생성한 배열 : 객체배열. 메모리 참조하는 구조가 조금 다르다.
		
		String[] arr3 = new String[3];
		
		//객체배열(클래스배열)은 기본값이 null이다. 참조하고 있지 않다.
		for(int i=0; i<3; i++) { // 0, 1, 2 - 3개
			System.out.println("arr3[" + i + "] : " + arr3[i]);
		}
		
		//힙영역
		arr3[0] = "1월";
		arr3[1] = "2월";
		arr3[2] = "3월";
		
		for(int i=0; i<3; i++) { // 0, 1, 2 - 3개
			System.out.println("arr3[" + i + "] : " + arr3[i]);
		
		
	}

}

arr1[0] : 0
arr1[1] : 0
arr1[2] : 0
arr1[0] : 10
arr1[1] : 20
arr1[2] : 30
arr2[0] : 0.0
arr2[1] : 0.0
arr2[2] : 0.0
arr2[0] : 0.1
arr2[1] : 0.2
arr2[2] : 0.3
arr3[0] : null
arr3[1] : null
arr3[2] : null
arr3[0] : 1월
arr3[1] : 2월
arr3[2] : 3월