220109 혼자공부하는자바 Ch5 모르는 부분 리마인드
05-2) 배열
배열 생성
배열 생성 방법1) 값 목록으로 배열 생성
타입[] 변수 = { 값0, 값1, 값2, ... };
ex) String[] names = { "초코", "복실", "미미" };
배열 생성 방법1) new연산자로 배열 생성
타입[] 변수 = new 타입[길이];
변수[인덱스] = 값;
ex) int[] intArray = new int[5];
intArray[3] = 값
배열 길이
배열 변수.length;
다차원 배열
ex1) int[][] scores = new int[2],[3]; ㅡ> 2 X 3 행렬의 구조
각 배열의 길이를 구하는 방법은
scores.length --> 2
scores[0].length -->3
scores[1].length -->3
ex2) int[][] scores = new int[2],[]; ㅡ> 계단식 구조
scores[0].length = new int[2];
scores[1].length = new int[3];
위 코드에서 배열의 길이를 구하는 방법은
scores.length -->2
scores[0].length -->2
scores[1].length -->3
주의할 점
배열의 정확한 길이를 알고 인덱스를 사용해야 함
타입[ ][ ] 변수 = { {값1, 값2, ....}, {값1, 값2, ....}, .... };
그룹 0값 목록 그룹 1값 목록
객체를 참조하는 배열
참조 타입(클래스, 인터페이스) 배열으 각 항목에 객체의 번지를 갖고 있음
ex) String은 클래스이므로 String[ ] 배열은 각 항목에 문자열이 아니라, String 객체의 번지를 가지고 있음
즉, String[ ] 배열은 String 객체를 참조하게 됨. 따라서 배열의 항목도 결국 String 변수와 동일하게 취급되야함
그니까 String[ ] 배열 항목간 문자열을 비교하려면 equals( ) 메소드를 사용
배열 복사
방법1) for문 사용
int[] oldIntArray = {1,2,3};
int[] newIntArray = new int[5];
for(int i=0; i<oldIntArray.length; i++) { //i=0,1,2,3
newIntArray[i] = oldIntArray[i];
}
for(int i=0; i<newIntArray.length; i++) { //i=0,1,2,3,4
System.out.print(newIntArray[i]+", "); //1,2,3,0,0, -->복사되지 않은 항목은 int[] 배열의 기본초기값: 0 유지
}
방법2) System.arraycopy( )메소드 사용
String[] oldStrArray = {"java", "array", "copy"};
String[] newStrArray = new String[5];
System.arraycopy(oldStrArray, 0, newStrArray, 0, oldStrArray.length);
for(int i=0; i<newStrArray.length; i++) {
System.out.print(newStrArray[i]+", ");
}
향상된 for문
for( 타입 변수 : 배열 ) { 실행문; }
05-3) 열거 타입
열거 타입 선언
public enum 열거타입이름 { 열거 상수1, 열거 상수2, 열거상수 3,... }
정리
- 열거 타입 선언: enum 타입 { 상수, 상수, ... } 형태로 열거 타입 선언
ex) enum Week { MONDAY, TUESDAY, ... }
- 열거 상수: 열거 타입 선언 때 주어진 상수를 말하며 타입, 상수 형태로 사용
ex) Week.MONDAY로 사용
- 열거 타입 변수: ex) Week today = Week.FRIDAY;에서 today가 열거 타입 변수임