Cute Running Puppy

Language/[Java] 자바 완전 정복

2주차_05. 참조 자료형 1

R.silver 2022. 1. 27. 17:45
반응형

8개의 기본 자료형 외의 모든 자료형은 참조 자료형 

대표적으로 배열, 클래스, 인터페이스 등이 있다. 

배열

동일한 자료형을 묶어서 저장하는 참조 자료형 

특징

1. 생성할 때 크기를 지정해야 한다. 

2. 한 번 크기를 지정하면 절대 변경할 수 없다.

 

배열 생성하기 

배열 선언하기 
첫 번째 방법
자료형[] 변수명;

두 번째 방법
자료형 변수명[];

 

//첫번째 방법
int[] arr;

//두번째 방법
int arr[];

 

 

힙 메모리에 배열의 객체 생성하기 

 

힙 메모리에 객체를 생성하기 위해서는 new 키워드를 사용해야 한다. 

 

new 자료형 [배열의_길이];

 

//배열의 객체 생성하기 
new int [3]; // 3칸짜리 배열 생성

 

배열의 크기를 지정하지 않으면 오류가 난다. 

 

 

배열 자료형 변수에 객체 대입하기 

 

첫번째 방법
자료형[] 변수명 = new 자료형 [배열의_길이];

두 번째 방법
자료형[] 변수명;
변수명 = new 자료형[배열의_길이];

 

//첫번째 방법
int[] a = new int[3];

//두번째 방법
int[] a;
a = new int[3];

 

 

객체에 값 입력하기 

 

참조_변수명 [인덱스] = 값;

 

int[] a = new int[3];

a[0] = 0;
a[1] = 1;
a[2] = 2;

 

 

배열 객체 값 읽어오기

 

참조_변수명 [인덱스];

 

System.out.println(a[0]);

 

1차원 배열을 생성하는 다양한 방법 

1. 배열 객체를 생성하고 값 대입하기 

 

자료형[] 참조_변수명 = new 자료형[배열의_길이];

참조_변수명[0] = 값;
...
참조_변수명[n-1] = 값;

 

int[] a = new int[3];

a[0] = 0;
a[1] = 1;
a[2] = 2;

 

 

2. 배열 객체 생성과 함께 값 대입하기 

 

자료형[] 참조_변수명 = new 자료형[] {값1, 값2, ...};

 

int[] a = new int[]{1, 2, 3};

 

 

3. 대입할 값만 입력하기 

 

자료형[] 참조_변수명 = {값1, 값2, ...};

 

int[] a = {1, 2, 3};

 

이 방법은 변수 선언과 대입을 분리할 수 없다. 

즉, 선언과 동시에 값을 대입할 때에만 사용할 수 있다. 

 

//선언과 동시에 객체 대입 분리 가능
int[]a = new int[] {1, 2, 3};

int[] a; 
a = new int[]{4, 5, 6}; // 가능

//선언과 객체 대입 분리 불가능
int[] a = {1, 2, 3};

int[] a; 
a = {4, 5, 6} //불가능

 

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

기본 자료형 참조 자료형
스택 메모리에 실제 데이터 값을 저장  스택 메모리에 저장된 객체의 위치를 저장 

 

배열의 길이 구하기 

배열_참조_변수.length

 

int[] a = new int[] {1, 2, 3};

System.out.println(a.length); // 3

 

for-each 문

배열이나 컬렉션 등의 집합 객체에서 원소들을 하나씩 꺼내는 과정을 반복하는 구문 

집합 객체의 원소들을 출력할 때 사용 

 

for (원소_자료형_변수명: 집합_객체) {
}

 

int[] a = new int[] {1, 2, 3};

for(int k: a) {
	System.out.println(k); // 1, 2, 3 
}

 

2차원 정방 행렬 배열 

모든 행의 길이가 같은 이차원 배열 

2차원 배열은 1차원 배열을 원소로 가지는 1차원 배열이다. 

(메모리는 2차원 배열을 바로 저장할 수 없다)

2차원 배열의 선언 방법

 

1. 자료형 [][] 변수명;

2. 자료형 변수명 [][];

3. 자료형[] 변수명[]; 

 

// 1번 방법
int[][] a; 

// 2번 방법

int a[][];

//3번 방법
int[] a[];

 

2차원 비정방 행렬 배열 

생성 방법 1

배열 객체의 행 성분부터 생성하고 열 성분 생성하기

 

자료형[][] 참조_변수명 = new 자료형[행의_길이][];

참조_변수명[0] = 1차원_배열의_생성;
...
참조_변수명[행의_길이-1] = 1차원_배열의_생성;

 

int [][] a = new int[2][];

a[0] = new int [2];
a[0][0] = 1; a[0][1] = 2;

a[1] = new int [3];
a[1][0] = 3; a[1][1] = 4; a[1][2] = 5;

 

생성 방법 2

자료형과 대입할 값만 입력하기 

 

자료형[][] 참조_변수명 = new 자료형[][] {{값1, 값2, ....}, {값1, 값2, ....}};

 

int[][] a = new int[][] {{1, 2}, {1, 2, 3}};

//배열의 선언과 객체의 대입을 분리해 표현 가능
int [][] b;
b = new int[][] {{1, 2}, {1, 2, 3}};

 

생성 방법 3

대입할 값만 입력하기 

 

자료형[][] 참조_변수명 = {{값1, 값2, ...}, {값1, 값2, ...}};

 

int[][] a = {{1, 2}, {1, 2, 3}};

//배열의 선언과 객체의 대입을 분리해 표현 불가능
int [][] b;
b = new int[][] {{1, 2}, {1, 2, 3}}; //오류

 

 

반응형

'Language > [Java] 자바 완전 정복' 카테고리의 다른 글

2주차_06. 클래스와 객체  (0) 2022.01.27
2주차_05. 참조 자료형 2  (0) 2022.01.27
2주차_04. 제어문과 제어 키워드  (0) 2022.01.27
1주차_03. 연산자  (0) 2022.01.20
1주차_02. 자료형  (0) 2022.01.20