Java

220109 혼자공부하는자바 Ch5 모르는 부분 리마인드

행인데어 2022. 1. 11. 23:48

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가 열거 타입 변수임

댓글수0