반응형
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 |