목차
선언과 동시에 배열 초기화
다음과 같이 작성하면 선언과 동시에 배열을 초기화할 수 있습니다.
샘플 코드
static void arraySample() { String[] s = {"사과", "귤", "바나나"}; } System.out.println(s[1]);
출력 결과:
귤
배열의 요소 수 얻기 – 길이
배열에 몇 요소가 들어 있는지를 취득하고 싶은 경우는 length 를 사용합니다. length 는 메소드가 아니고, 필드인 점에 약간의 주의가 필요합니다.
샘플 코드
static void lengthSample() { String[] s1 = {"사과", "귤", "포도"}; String[] s2 = {}; System.out.println(s1.length); System.out.println( s2.length); }
출력 결과:
3 0
배열 복사 – clone
어느 배열과 같은 배열을 만들고 싶은 경우는, clone 가 편리합니다.
샘플 코드
static void cloneSample() { String[] s1 = {"사과", "귤", "포도"}; String[] s2 = s1.clone(); System.out.println(s1[0] + ' ' + s1[1] + ' ' + s1[2]); System.out.println(s2[0] + ' ' + s2[1] + ' ' + s2[2]); }
출력 결과:
사과 귤 포도 사과 귤 포도
배열 복사 – System.arraycopy
Java 의 배열은, 초기화시의 사이즈로 고정되어 버립니다. 한 번 만든 배열의 크기를 늘리려면 System.arraycopy를 사용해야 합니다.
arraycopy 는 clone 과 같이 배열을 복사할 때 사용하지만 clone 보다 세밀한 설정을 할 수 있습니다.
arraycopy (Object src, int srcPos, Object dest, int destPos, int length) src ... 카피 원의 배열 srcPos ... 카피 원 배열 (src)의 카피하는 개시 위치 dest ... 카피 처의 배열 destPos. .. 복사 대상 배열 (dest) 복사할 시작 위치 length... 복사할 요소 수
샘플 코드
static void arraycopySample() { String[] s1 = {"사과", "귤", "포도"}; String[] s2 = new String[5]; System.arraycopy(s1, 0, s2, 0, 3) ; s2[3] = "바나"; s2[4] = "체리"; System.out.println(s1[0] + " " + s1[1] + " " + s1[2]); System.out .println(s2[0] + " " + s2[1] + " " + s2[2] + " " + s2[3] + " " + s2[4]); }
출력 결과:
사과 귤 포도 사과 귤 포도 바나나 체리
배열의 결합을 하는 경우도 arraycopy 를 사용하면 편리합니다.
샘플 코드
static void joinArraySample() { String[] s1 = {"사과", "귤", "포도"}; String[] s2 = {"바나나", "체리", "모모"}; int rLen = s1. length + s2.length; String[] rStr = new String[rLen]; //s1 및 s2 길이의 배열을 모두 초기화 System.arraycopy(s1, 0, rStr, 0, s1.length); System .arraycopy(s2, 0, rStr, s1.length, s2.length); // 대상 배열의 시작 위치 설정이 포인트 System.out.println(rStr[0] + " " + rStr[1] + " + rStr[2] + " " + rStr[3] + " " + rStr[4] + " " + rStr[5]); }
출력 결과:
사과 귤 포도 바나나 체리 모모
다차원 배열 만들기
배열에 배열을 만들어 다차원 배열을 만들 수 있습니다. 테이블 데이터를 저장할 때 유용합니다.
샘플 코드
static void twoDArraySample() { int[] a1 = {38, 84, 98}; int[] a2 = {32, 11, 56}; int[] a3 = {82, 77, 8}; int[][] twoDArray = {a1, a2, a3}; for (int[] a : twoDArray) { for (int score : a) { System.out.print(score + ""); } System.out.println("") ; } }
출력 결과:
38 84 98 32 11 56 82 77 8