글 작성자: 취업중인 피터팬
728x90
기본 환경
JDK : 1.8.0_261 버전
JRE : 1.8.0_261 버전
JAVA VERSION : 8 업데이트 261
Eclipse IDE VERSION : 2020-06버전

 

목표

자바에서 사용하는 배열에 대해 이해한다.


 

 

 

코드
package ex06array;

public class E01OneDimArray01 {

	public static void main(String[] args) {
		
		/*
		자바에서는 배열을 객체를 통해 생성하게 된다.
		생성된 배열은 Heap(힙) 영역에 저장되고, 할당된 메모리의
		주소값을 반환하게 된다. 그래서 배열명(배열변수)는 주소값(참조값)을 할당받게 된다.
		해당 주소를 통해 배열에 접근한다.
		 */
		
		int[] numArr = new int[3];
		numArr[0] = 10;
		numArr[1] = 20;
		numArr[2] = 30;
		System.out.println("배열명(numArr) = " + numArr);// [I@15db9742 => 참조값 출력
		System.out.println("numArr 2번방의 값 : " + numArr[2]);// 30 출력
		System.out.println("==============================");
		/*
		배열의 선언 및 초기화
			: 배열은 여러개의 변수를 사용하기 위해 선언하므로
			접근을 위해 일반적으로 반복문을 사용한다.
		배열명.length : 해당 배열의 크기를 반환한다. 배열의
			크기가 변경되는 경우에 유연하게 사용할 수 있다.
		 */
		int[] arrNumber = new int[40];
		
		for(int i = 0; i < arrNumber.length; i++) {
			arrNumber[i] = i+10;
		}
		
		for(int i = 0; i<40; i++) {
			System.out.println(i + "번방의 값 = " + arrNumber[i]);
		}
		
		System.out.println("============================");
		
		/*
		 객체 배열
		 		: 기본자료형을 저장하는 배열이 아니라, 객체의 참조값을
		 		저장할 용도로 생성하는 배열이다. 사용방법은 동일하다.
		 */
		String[] strArr = new String[3];
		strArr[0] = "java";
		strArr[1] = "jsp";
		strArr[2] = "spring";
		
		for(int j = 0; j<strArr.length; j++) {
			System.out.println(strArr[j]);
		}
		
		System.out.println("=====================");
		
		System.out.println("배열의 선언과 초기화");
		System.out.println("방법 1 : 배열의 선언 이후 초기화");
		int[] initArr = new int[1];
		initArr[0] = 100;
		System.out.println("initArr[0] = " + initArr[0]);
		
		/*
		 배열의 선언과 동시에 초기화를 하는 경우 자바 컴파일러는 
		 초기값의 갯수를 통해 크기를 결정할 수 있으므로 이련경우
		 크기는 생략하도록 약속되어있다.
		 */
		System.out.println("방법2 : 선언과 동시에 초기화");
		//int[] initArr2 = new int[3] {1, 20, 300};
		int[] initArr2 = new int[] {1, 20, 300};
		
		/*
		 배열 요소의 갯수를 통해 배열을 즉시 생성한다.
		 이때 new 키워드는 생략한다.
		 */
		System.out.println("방법 3 : 초기값만으로 선언");
		int[] initArr3 = {11,13,17,19,23};
		int arrSum = 0;
		for(int x = 0; x < initArr3.length; x++) {
			arrSum += initArr3[x];
		}
		System.out.println("배열요소의 합은 = " + arrSum);
	}
}

자바의 배열 첫번째 예제입니다. 배열이란 변수에 계속 똑같은 패턴의 값을 초기화해야할 때 개발자가 귀찮기도 하고 물리적으로 그것을 다 초기화하기 불가능한 프로젝트를 하기 위해서 만든 것입니다. 위에 보면 배열을 선언하는 방법이 여러가지가 있습니다. 그 중에서 생소한 것은 객체를 초기화하기 위한 배열일텐데 자바에서 문자열은 객체입니다. 아직 클래스를 안해서 객체가 뭔지도 모르고 String에 대해 아는 것이 없으니 일단 넘어가고 다음에 자세히 알아보도록 합시다 지금은 배열을 완벽하게 이해하도록 합니다.

배열의 값은 힙(heap)영역에 저장되고 할당된 배열은 주소값을 stack으로 받습니다. 이부분은 자료구조에 대한 이야기인데 다음 그림과 같습니다.

 

보통 자료구조를 나타낼때 method영역 heap영역 stack영역으로 표시합니다. method는 static을 올리기 위한 영역인데 뒤에 자세히 할것이니 일단 stack과 heap영역에 집중하도록 합시다. heap영역에는 배열에 집적 입력한 값들이 들어있고 그 값들은 하나의 주소가 대표합니다. 그럼 그 주소가 stack영역에서 알고 있어 배열의 값을 참조할 때는 A번지라는 주소값을 가지고 참조하게 됩니다. 그래서 다음과 같은 결과 값이 나오게 되는 것입니다.

 

결과 값

 

'Java > Java_기초부터 _끝까지' 카테고리의 다른 글

Java 기초 배열(3)  (0) 2020.10.22
Java 기초 배열(2)  (0) 2020.10.21
Java 기초 함수 - 연습문제(4)  (0) 2020.10.19
Java 기초 함수 - 연습문제(3)  (0) 2020.10.19
Java 기초 함수 - 연습문제(2)  (0) 2020.10.19