자바에서는 JVM이 모든 배열의 길이를 별도로 관리하며, '배열이름.length'를 통해서 배열의 길이에 대한 정보를 얻을 수 있다. 또한 아래 코드처럼 길이가 0인 배열도 생성이 가능하다.
int[] arr = new int[0];
int[] arr2 = {};
int[] arr = {100, 200, 300};
// [100, 200, 300]
System.out.println(Arrays.toString(arr));
Arrays.toString()을 이용하면 주석처럼 출력할 수 있다.
char[] arr = {'a', 'b', 'c'};
// abc
System.out.println(arr);
char 배열은 출력하면 전부 붙여서 출력된다.
for을 이용하는 방법이 있겠지만 가장 빠르고 간단한 방법은 System.arraycopy()를 이용하는 것이다.
int[] arr1 = {1,2,3};
int[] arr2 = new int[6];
// 복사할 배열, 복사를 시작할 index, 붙여넣기할 배열, 붙여넣기를 시작할 index, 복사할 길이
System.arraycopy(arr1, 0, arr2, 0, arr1.length);
String 배열도 여타 배열들과 똑같이 선언하고 생성한다.
String[] name = new String[3];
name[0] = "kim";
name[1] = "park";
name[2] = "yi";
String[] name2 = {"kim", "park", "yi"};
그렇지만 String 객체이므로 사실은 다음과 같이 선언해야한다.
String[] name = new String[3];
name[0] = new String("kim");
name[1] = new String("park");
name[2] = new String("yi");
하지만 String만 특별히 줄여서 사용하는 것이 허용된다.
따라서 String 배열이 저장된 것을 그림으로 간략하게 나타내면 다음과 같다.
String 클래스는 char 배열에 여러 가지 기능을 추가하여 확장한 클래스다. 기본 char배열로도 문자열을 처리가능하다.
하지만 String 클래스를 사용하는 이유는 여러 가지 편리한 기능이 String 클래스에 있기 때문이다.
char 배열과 String 클래스의 한 가지 중요한 차이가 있는데, String 객체는 값을 변경할 수 없다는 것이다.
String str ="java";
str = str + "8";
위 코드를 실행할 경우, str은 기존의 "java" 리터럴 대신 새로 만든 "java8" 리터럴을 가리키게 된다.
"java" 리터럴은 갈비지 컬렉션에 의해 사라진다.
또, char 배열을 String 클래스로 변환하거나, 그 반대도 가능하다.
char[] charr = {'A', 'B', 'C'};
String str = new String(charr); // char 배열 -> String
char[] tmp = str.toCharArray(); // String -> char 배열
실제 실행파일을 만들고, 커맨드 창에서 파일을 실행하며 값을 입력할 수 있다.
java test abc 123 "hi hello"
위 커맨드를 입력해 test파일을 실행하면
public static void main(String args[]) {
for(int i = 0; i < args.length; i++) {
System.out.println(args[i]);
}
}
위 코드처럼 main 메소드의 args를 이용해 사용할 수 있다.
공백을 통해 각 매개변수를 구분하기 때문에 "hi hello" 처럼 공백이 있는 문자는 큰 따옴표로 감싸줘야한다.
입력을 전부 String으로 받으므로 입력한 것을 숫자로 바꾸고 싶으면 다음과 같이한다.
int num = Integer.parseInt("123");
만약 입력된 매개변수가 없다면, JVM이 크기가 0인 배열을 생성해서 args에 전달한다.
2차원 배열은 다음과 같이 선언할 수 있다.
int[] score1[] = new int[4][3];
int score2[][] = new int[4][3];
int[][] score3 = new int[4][3];
int[][] score4 = { {1,2,3}, {4,5,6} };
n차원 배열도 마찬가지로 []의 갯수만 맞춰주면 된다.
2차원 배열은 다음과 같이 배열들의 배열로 저장된다.
배열들의 배열이라는 점을 활용해서 다음과 같은 가변 배열을 선언할 수 도 있다.
int[][] arr = new int[4][];
arr[0] = new int[3];
arr[1] = new int[2];
arr[2] = new int[2];
arr[3] = new int[1];