참조자료형 - 2. 1차원 배열 (세 가지 초기값 부여방식 및 출력하기)

1. 1차원 배열의 생성 및 값 대입

 - 방법 1. (배열 객체의 생성 + 값 대입)

// 기본 문법 구조
자료형[] 참조변수명 = new 자료형 [배열의 길이];
참조변수명[0] = 값;
참조변수명[1] = 값;
	…
참조변수명[배열의 길이 - 1] = 값;

// Example
int[] arr = new int[3];
arr[0] = 3;
arr[1] = 4;
arr[2] = 5;

 

 - 방법 2. (배열 객체의 생성 및 값 대입)

    ※ 방법 2는 선언과 값의 대입 분리 가능 (3은 불가능)

// 기본 문법 구조
자료형[] 참조변수명 = new 자료형[] {값, 값, ..., 값};

// Example
int[] arr = new int[]{3, 4, 5};

 

 - 방법 3. (값 대입) : 대입할 값만 입력

// 기본 문법 구조
자료형[] 참조변수명 = {값, 값, ..., 값};

// Example
int[] arr = {3, 4, 5};

 

2. 배열 객체의 강제 초기값

    - 초기값을 부여하지 않는 경우, 빈칸으로 존재

// Example
int[] arr;
arr = new int[3];

 

    ※ Stack 메모리의 초기값
        - 초기값을 부여하지 않는 경우 빈칸으로 존재 (읽기 불가능)

// Example
int a; 			// stack 메모리에 공간 생성 (빈칸으로 존재)
System.out.println(a);	// 오류 발생

 

  ※ Heap 메모리의 초기값
        - 빈칸으로 존재할 수 없으며, 디폴트 초기값이 강제 설정
        - 기본자료형
            - 숫자(int, double 등) 디폴트값 : 0
            - boolean 디폴트 : false
        - 참조자료형 디폴트값 : null

// Example
int var = 3;
int[] numbers = new int[3];
System.out.println(var);	// 3
System.out.println(numbers[0]);	// 0

 

3. 참조자료형으로서의 배열의 특징

    ※ '='는 stack 메모리의 값을 복사

 - 기본자료형의 변수 복사 : 값의 복사

// Example
int a = 3;
int b = a;
b = 7;
System.out.println(a);		// 3
System.out.println(b);		// 7

 

 - 참조자료형의 변수 복사 : 위치(번지) 복사

// Example
int[] a = {3, 4 ,5}
int[] b = a;
b[0] = 7;
System.out.println(a[0]);	// 7
System.out.println(b[0]);	// 7

 

4. 반복문을 이용한 데이터 읽기

 - for 반복문을 이용

    ※ 속성과 기능 : 참조 데이터가 가진 데이터들 (arr.length 같이 arr.기능명)

// Example
int[] arr;
arr = new int[3];
arr[0] = 10;
arr[1] = 20;
arr[2] = 30;
for (int i = 0; i < arr.length; i++) {		// arr.length : 배열의 길이를 나타냄
	System.out.println(arr[i]);
}
// 결과 : 
// 10
// 20
// 30

 

 - for-each 반복문을 이용한 배열 데이터 읽기

// 기본 문법 구조
for ( 원소자료형 변수 : 묶음 참조자료형) {
}

// Example
int[] arr = new int[] {3, 4, 5, 6, 7};
for (int k : arr) {
	System.out.print(k + " ");
}
// 결과 :
// 3 4 5 6 7

 

 - 배열을 문자열로 출력 : Arrays.toString(1차원배열)

// Example
import java.util.Arrays;

int[] arr = new int[] {1, 2, 3, 4, 5};
System.out.println(Arrays.toString(arr));
// 결과 :
// [3, 4, 5, 6, 7]