2020. 11. 6. 10:28ㆍ자바 Java/자바 공부 java study
배열이란 무엇일까?
같은 타입의 여러 변수를 하나의 묶음으로 다루는 것을 '배열'이라고 한다.
배열의 선언 // 생성된 배열을 다루는데 사용될 참조 변수 선언 (주소)
타입 [] 변수 이름;
타입 변수이름 [];
배열의 생성 // 값을 저장할 수 있는 공간 생성
변수 이름 = new 타입[배열크기];
배열도 객체이기 때문에 멤버 변수와 메서드를 갖고 있으며 이중 멤버 변수 length는 배열의 크기에 대한 정보 담음
배열은 한번 생성 되면 크기를 변경 할 수 없기 때문에 배열의 length는 변하지 않는다.
배열의 초기화
배열이 생성될 때 각 타입의 기본 값으로 초기화 된다.
자료형 | 기본값 |
boolean | false |
int | 0 |
참조형 변수(ex String) | null |
원하는 값으로 초기화 하고 싶을 경우
기초형인 경우
int [] score = new int [3];
score [0] = 100;
score [1] = 90;
score [2] = 80;
or
int [] score = {100,90,80};
참조형인 경우
String[] name = new String[2];
name [0] = new String ("Kim");
name [1] = new String ("Park");
or
String [] name= {new String("Kim"), new String("Park")};
or
String [] name = { "Kim", "Park" } ;
or
String [] name = new String [] { new String ("Kim") , new String ("Park") };
* ArrayIndexOutOfBoundsException (배열의 index가 배열의 범위를 벗어났다는 에러)
* String클래스의 charAt(int idx) 는 문자열 중에서 idx 번째 위치에 있는 문자를 반환한다.
(String 클래스는 char 배열을 내부 데이터로 갖고 있으며 char 배열을 다루는데 필요한 다양한 메서드를 제공한다.)
다차원 배열
선언방법
타입 [] [] 변수이름 ;
타입 [] 변수이름 [] ;
3차원 이상의 고차원 배열은 [] 개수를 차원 수 만큼 추가 (실제로는 2차원 이상 잘 사용 하지 않음)
2차원 배열은 주로 테이블 형태의 데이터 담는데 사용
ex) 5행 3열의 테이블 생성시
행 열
int [] [] score = new int [5] [3] ;
score [0][0] ~ score [5][3] 까지 15개의 공간 생김
저장하는 방법
score [0][0]=100;
score [0][1]= 100;
.....
or
int [] [] score = new int [] [] { {100,100,100}, {20,20,20} ..... } ;
100 | 100 | 100 |
20 | 20 | 20 |
30 | 30 | 30 |
40 | 40 | 40 |
50 | 50 | 50 |
score.length = 5 ;
score[0].length = 3 ;
가변 배열
2차원 이상의 배열에 대해서 '배열의 배열' 형태로 처리한다는 사실을 이용하면 자유로운 형태의 배열을 구성할 수 있다.
int [] [] score = new int[5] []; // 두번째 차원의 크기는 지정하지 않는다.
score[0] = new int [4] ;
score[1] = new int [1] ;
score[2] = new int [3] ;
score[3] = new int [2] ;
score[4] = new int [4] ;
배열의 복사
1. For 문을 사용 ( 기존 배열 보다 더 큰 크기의 새로운 배열을 만든 다음 기존 배열의 내용을 for 문을 사용해서 복사)
2. System 클래스의 arraycopy() 사용
참조 : 자바의 정석 책
'자바 Java > 자바 공부 java study' 카테고리의 다른 글
입출력-미완성 (0) | 2020.03.18 |
---|---|
스레드(thread)&멀티스레드&동기화-미완성 (0) | 2020.03.17 |
예외처리 (Exception ) (0) | 2020.03.17 |
래퍼클래스 (wrapper class) (0) | 2020.03.16 |
제네릭(generic) -미완성 (0) | 2020.03.16 |