※ 배열(Array)
동일 자료형의 데이터 묶음, Java에서의 배열은 무조건 다른 메모리를 참조하는 구조, 참조형,
대표 자료구조의 한 형태, 생성 시 각 인덱스가 초기화된다
- 배열 선언 방법
: int[ ] arr; // int 배열타입의 arr 변수 선언
int arr[];
→ 선언 후 생성을 해야 사용 가능!
- 배열 생성
: arr = new int[3]; // 배열 생성, 생성 시 각 방이 0값으로 자동 초기화
여기서 new는 예약어이다.
=는 연산자이며 대입을 한다.
(arr이 3개짜리 방 갖는 구조가 아니라, 4byte의 메모리만 가지고있음.
1000번지에 대한 정보값만 가지고 있음, 참조만 함)
직접 값을 가지는게 아니라 자동 인덱스가 제공되는 참조형이다.
- 읽는 법
: int[] arr = new int[3]; // int배열타입의 arr이 선언되었음, arr 변수의 인덱스 크기는 3이다.
· 배열을 사용하게 되면 계산법이 단순해짐
int score1 = 10;
int score2 = 8;
int score3 = 4;
int totalScore = score1 + score2 + score3;
위의 계산을 아래 배열로 변경 가능하다.
int [] scoreArr = new int[3];
scoreArr[0] = 10;
scoreArr[1] = 8;
scoreArr[2] = 4;
totalScore = 0;
for(int i = 0; i<3; i++){
totalScore += scoreArr[i];
}
※ float[] fArr = new float[2]; // 0.0값으로 자동 초기화
boolean[] bArr = new boolean[2]; // false값으로 자동 초기화
char[] cArr = new char[2]; // 유니코드의 null값(0x00)으로 자동 초기화
String[] sArr = new String[2]; // java의 예약어 null값으로 자동 초기화
자바에서의 참조자료형은 직접 값을 갖는 자료형태가 X
다른 메모리를 참조하는 구조
참조형에는 null값 가능, null = 아무 값도 참조 하지않고있다는 뜻
※ 배열 길이 얻기 : length 필드 사용
int [] scoreArr = new int[3]; 일 때
sop(scoreArr.length); // 3, 배열의 인덱스 갯수만 반환
sop(scoreArr[-1]); // 실행 시 ArrayIndexOutOfBoundsException 발생
sop(scoreArr[3]); // 실행 시 ArrayIndexOutOfBoundsException 발생
배열용 전용 클래스의 미리 설정되어 있는 멤버변수가 있는데, length는 그 중의 하나이며 배열의 필드이다.
필드기 때문에 length();가 아니다.
※ 배열 초기화
int [] scoreArr = new int[3]; int []arr2 = {1,2,5,7}; // 배열 선언, 배열 생성
int [] scoreArr = new int[3]; sop(arr2.length); // 4
int [] scoreArr = new int[3]; arr2[0] = 9; //이렇게 대입하면 값 변경 가능
int [] scoreArr = new int[3]; arr2 = {10,20} // (X) 이렇게 초기화는 불가능
int [] scoreArr = new int[3]; arr2 = new int[]{10,20};// 재초기화, 배열을 재초기화하려면 다시 한번 이렇게 써야함
※ 2차원 배열 //4차원 배열은 잘 사용 안함
int [][] arrTwo = new int[3][2];
arrTwo[0][0] = 1;
arrTwo[0][1] = 2;
arrTwo[1][0] = 3;
arrTwo[1][1] = 4;
arrTwo[2][0] = 5;
arrTwo[2][1] = 6;
sop(arrTwo.length); // 3
sop(arrTwo[0].length); // 2
※ 2차원 배열 초기화
int [][]arr3 = {{1}, {2,3}, {4,5,6}};
sop(arr3.length); //3
sop(arr3[0].length); //1
sop(arr3[1].length); //2
※ 배열은 참조형이라 정보값이 출력된다
sop(arr); 을 하면 정보값(10000번지 정보값)이 출력됨
그래서 배열의 내용을 확인하려면 행, 열 배열을 돌면서 확인해야함
sop(arr[행][열]);
배열 초기화는 선언, 생성, 대입을 한꺼번에 하는 것
재초기화는 꼭 new int[] {10,20} 이런 식으로 해야한다.
int [][]arr3 = { {1}, {2,3}, {4,5,6}}
위 아래 같은 말
int [][]arr3 = new int[3][];
arr3[0] = new int[1];
arr3[1] = new int[2];
arr3[2] = new int[3];
'언어 > Java' 카테고리의 다른 글
배열 예제 (0) | 2023.07.26 |
---|---|
이클립스 class 생성법 (0) | 2023.07.26 |
반복문 4(do while) (0) | 2023.07.25 |
반복문 3 (0) | 2023.07.25 |
반복문 2 (0) | 2023.07.25 |