728x90
자바에서 배열은 특정 타입의 데이터를 고정된 개수만큼 묶어서 사용합니다.
1. 선언과 초기화
// 사용할 자료형 뒤에 []를 붙여 선언
char[] guk = {'가', '나', '다', '라', '마'};
// length : 배열의 길이 반환
int length = guk.length;
// [] 안에 인덱스 정수를 넣어 접근
// 0부터 시작
char first = guk[0];
//String first_string = guk[0]; //에러 발생 -> 타입이 다름
char last = guk[guk.length - 1];
// 초기화하지 않고 선언 -> 타입[] 변수명 = new 타입[] -> new 타입[]안의 값은 요소의 개수
// 요소에 null이 가능하면 요소가 null이 되고 null을 허용하지 않는다면 해당타입에서 가장 작은 값으로 자동 초기화된다.
boolean[] boolArr = new boolean[3]; //boolArr: [false,false,false]
int[] intArr = new int[3]; //intArr:[0,0,0]
double[] dblArr = new double[3]; //dblArr:[0.0,0.0,0.,]
String[] strArr = new String[3]; //strArr:[null,null,null]
// 다음과 같이 원하는 위치의 값 변경
intArr[0] = 123;
intArr[1] = 456;
intArr[2] = 789;
// intArr: [123,456,789]
//선언과 초기화 -> 아래 둘다 가능
int[] intArr2 = new int[]{1,2,3}; // 정석
int[] intArr3 = {4,5,6};
//선언을 먼저 해놓고 초기화를 나중에 할때는 정석적인 방법만 가능
int[] intArr4;
//intArr4 = {1,2,3}; // 에러
intArr4 = new int[]{1,2,3}; // 가능
//int lastValue = intArr4[intArr4.length]; //ArrayIndexOutOfBoundsException 에러 발생 -> 인덱스는 0부터 시작하기 때문
int lastValue = intArr4[intArr4.length - 1]; // 3 -> 마지막 인덱스의 값
2. 다중배열
// 이중 배열
boolean[][] twoArray = new boolean[3][3];
int[][] twoArray2 = new int[][] {
// 요소 배열의 크기가 다를 수 있음
{1, 2, 3},
{4, 5},
{6, 7, 8, 9},
};
//값을 꺼낼 때는 다중배열의 인덱스를 사용 -> 이중 배열은 행렬이라고 생각하면 됨
int int1 = twoArray2[0][1]; //2 -> 처음 0번째 인덱스의 값 : {1,2,3} 여기서 1번째 인덱스의 값: 2
int int2 = twoArray2[2][3]; //9 -> 처음 2번째 인덱스의 값: {6,7,8,9} 여기서 3번째 인덱스의 값: 9
int[] intArray = twoArray2[1]; // intArray: [4,5]
// 삼중 배열
int[][][] triArray = {
{{1, 2}, {3, 4}},
{{5, 6}, {7, 8}},
{{9, 10}, {11, 12}},
};
int[][] intdbArr = triArray[0]; // {{1,2},{3,4}}
int[] intdbArr2 = intdbArr[0]; //intdbArr2:[1,2]
int int3 = intdbArr2[1]; //2
int int4 = triArray[2][0][1];
// 10 -> 처음 두번째 인덱스의 값: {{9, 10}, {11, 12}} -> 여기서 0번째 인덱스의 값: {9,10} -> 여기서 1번째 인덱스의 값: 10
3. 원시자료형과 참조자료형의 비교
// 원시 자료형은 값 자체를 복사 - 별개의 값이 됨
boolean bool1 = true;
boolean bool2 = false;
bool2 = bool1; // bool1 = true, bool2 = true
bool1 = false; // bool1 = false, bool2 = true
int int1 = 1; // int1 = 1
int int2 = 2; // int2 = 2
int2 = int1; // int1 = 1, int2 = 1
int2 = 3; //int1 = 1, int2 = 3
// 참조 자료형은 값 주머니의 주소를 복사
// 두 변수가 같은 주소를 가리키게 됨 -> 따라서 값이 같이 변하게 됨
boolean[] boolArr1 = { true, true, true }; //boolAry1 = { true, true, true }
boolean[] boolArr2 = { false, false, false }; // boolArr2 = { false, false, false }
boolArr2 = boolArr1; // boolArr1 = boolArr2 = [true,true,true]
boolArr1[0] = false; // boolArr1 = boolArr2 = [false, true, true]
int[] intArr1 = { 1, 2, 3 }; //intArr1 = [ 1, 2, 3 ]
int[] intArr2 = { 4, 5 }; // intArr2 = [ 4, 5 ]
intArr2 = intArr1; // intArr1 = intArr2 = [ 1 , 2 , 3 ]
intArr2[1] = 100; // intArr1 = intArr2 = [1 , 100 , 3]
// 문자열은 객체(참조형)지만 원시형처럼 다뤄짐
String str1 = "아조씨"; // str1 = "아조씨"
String str2 = "누군데요"; //str2 = "누군데요"
str2 = str1; //str2 = "아조씨"
str1 = "굿굿"; // str1 = "굿굿" str2 = "아조씨"
// 상수 배열의 경우
final int[] NUMBERS = {1, 2, 3, 4, 5};
// 다른 배열을 할당하는 것은 불가
//NUMBERS = new int[] {2, 3, 4, 5, 6}; //에러 발생
// 배열의 요소를 바꾸는 것은 가능
NUMBERS[0] = 11; //NUMBERS = [11 , 2 , 3 , 4 , 5]
'JAVA Programming > Java' 카테고리의 다른 글
[JAVA] 제어문 (0) | 2024.07.09 |
---|---|
[JAVA] 타입 추론 (0) | 2024.07.09 |
[JAVA] 문자열 메서드 (0) | 2024.07.02 |
[JAVA] final필드와 상수 (0) | 2024.07.02 |
[JAVA] 삼항연산자 (0) | 2024.06.28 |