int[] grade1 = new int[3];
int[] grade2 = new int[3];
grade1[0] = 85;
grade1[1] = 65;
grade1[2] = 90;
grade2[0] = 85; // 배열의 길이보다 적은 수의 배열 요소만 초기화
for (int i = 0; i < grade1.length; i++) {
System.out.print(grade1[i] + " "); // 85 65 90
}
// char의 경우 \u0000 (null 문자), byte, short, int는 0, long은 0L, float는 0.0, double은 0.0d, boolean은 false, 이외의 타입은 null로 자동 초기화됨
for (int i = 0; i < grade2.length; i++) {
System.out.print(grade2[i] + " "); // 85 0 0
}
System.out.print(grade[4]); // ArrayIndexOutOfBounds error
int[] grade1 = {70, 90, 80}; //값을 직접 지정하거나
int[] grade2 = new int[]{70, 90, 80}; // 새로운 배열 객체를 전달해 선언과 동시에 초기화 가능
int[] grade3;
grade3 = {70, 90, 80}; // 선언된 배열에 값을 직접 대입하면 오류 발생
int[] grade4;
grade4 = new int[]{70, 90, 80}; // 이미 선언된 배열은 이 방법으로만 초기화할 수 있음
/*
* 다음과 같이 선언해도 됨
* int[][] arr = {{1, 2, 3}, {4, 5, 6}};
*/
int[][] arr = new int[2][3];
int n = 1;
for (int i = 0; i < arr.length; i++){
for (let j = 0; j < arr.length; j++ {
arr[i][j] = k;
n++;
}
}
/*
1 2 3
4 5 6
*/
for (int i = 0; i < arr.length; i++){
for (let j = 0; j < arr.length; j++ {
System.out.println(arr[i][j] + " ");
}
System.out.println();
}
int[][] arr = new int[3][];
arr[0] = new int[2];
arr[1] = new int[4];
arr[2] = new int[1];
int[] arr1 = new int[]{1, 2, 3, 4, 5};
int newLen = 10;
/*
* 1. System 클래스의 arraycopy() 메소드
* 매개변수 순서는 (원본배열, 원본배열에서 복사해올 시작점, 값을 받을 배열, 값을 받을 배열에서의 시작점, 원본배열에서 복사할 길이) 순서로 작성됨
* 네이티브로 작성되어있기 때문에 가장 빠른 성능을 보여주고 세밀한 배열 조작이 가능하지만, 읽고쓰기 복잡함
*/
int[] arr2 = new int[newLen];
System.arraycopy(arr1, 0, arr2, 0, arr1.length);
/*
* 2. Arrays 클래스의 copyOf() 메소드
* 매개변수 순서는 (원본배열, 복사해올 길이)
* System.arraycopy를 래핑한 객체로, 가독성이좋으나 속도가 arraycopy에 비해서는 느림
* 일반적으로 배열을 복사할때는 이 메서드를 가장 많이 사용함
*/
int[] arr3 = Arrays.copyOf(arr1, 10);
/*
* 3. Object 클래스의 clone() 메소드
* 객체를 복사해오는 방식이기 떄문에 이전과 같은 길이의 배열밖에 생성할 수 없음
*/
int[] arr4 = (int[])arr1.clone();
/*
* 4. for 문과 인덱스를 이용한 복사
*/
int[] arr5 = new int[newLen];
for (int i = 0; i < arr1.length; i++) {
arr5[i] = arr1[i];
}
// for문과 동일한 문법을 사용하나 조건식의 내부를 (타입 변수이름: 순회할 대상) 으로 작성한다는 차이가 있음
int[] arr = new int[]{1, 2, 3, 4, 5};
for (int e : arr) {
System.out.print(e + " "); // 1 2 3 4 5
}
출처
http://www.tcpschool.com/java/java_array_memory
https://stackoverflow.com/questions/18638743/is-it-better-to-use-system-arraycopy-than-a-for-loop-for-copying-arrays