public class PrintArray {
public static void main(String[] args) {
int[] arr = { 1, 2, 3, 4, 5 };
System.out.println(arr); // ?? }}
[ 결과 ] I@762efe5d
위와 같이 그냥 배열 변수(arr)를 출력하면 알수 없는 값이 출력됩니다.
여기서 출력된 값은 arr라는 변수가 가리키고 있는,
[1, 2, 3, 4, 5] 값이 들어있는 메모리의 주소값이기 때문입니다.
배열을 출력하기 위해서는 반복문을 사용하거나, 배열을 출력할 수 있는 특별한 메소드를 사용해야 합니다.
1. 반복문 사용하기
public class PrintArray {
public static void main(String[] args) {
int[] arr = { 1, 2, 3, 4, 5 };
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]); }
}
}
[ 결과 ] 12345
위 코드는 반복문을 사용해서
배열의 각 index값을 읽어서, 값을 출력하였습니다.
2. java.util.Arrays의 toString() 메소드 사용하기
[ 코드 ]
import java.util.Arrays;
public class PrintArray {
public static void main(String[] args) {
int[] arr = { 1, 2, 3, 4, 5 };
System.out.println(Arrays.toString(arr));
}
}
[ 결과 ][1, 2, 3, 4, 5]
Arrays.toString(arr);
위 코드에서는 배열의 값을 출력하기 위해서
java.util.Arrays.toString() 메소드를 사용하였습니다.
java.util.Arrays.toString() 메소드는 파라미터로 배열을 입력받아서,
배열에 정의된 값들을 문자열 형태로 만들어서 리턴해 줍니다.
2차원 이상의 배열을 다차원 배열이라고 하며, 메모리 용량이 허용하는 한 차원의 제한은 없지만 주로 1, 2차원 배열이 사용되므로 2차원 배열은 1차원 배열에서 대괄호([ ])가 하나 더 추가된다. 주로 테이블 형태의 데이터를 담는데 사용되며, n행 m열의 데이터를 담기 위한 배열이다.
2차원 배열 선언 및 생성
2행 3열의 데이터를 담기 위한 배열을 생성하려면 아래와 같이 작성한다.
ex) int[ ][ ] score = new int[2][3]; // 2행 3열의 2차원 배열 생성.
위의 배열을 생성하면, 2행 3열의 데이터로 6개의 int값을 저장할 수 있는 공간이 생긴다.
2차원 배열 초기화
2차원 배열도 1차원 배열과 같이 { }를 사용해 선언, 생성 및 초기화를 동시에 할 수 있다.
ex) int[ ][ ] score= {{70, 80, 90}, {80, 90, 100}};
//new int[ ][ ] 가 생략. 2행 3열의 2차원 배열 선언, 생성 및 초기화.
2차원 배열 인덱스
2차원 배열은 행(row)과 열(column)로 구성되어 있기 때문에 index도 행과 열에 하나씩 존재한다. 인덱스는 1이 아닌 0부터 시작되는 것에 유의해야된다. 2차원 배열의 각 원소에 접근하는 방법은 "배열이름[행 인덱스][열 인덱스]"이다.
int[ ][ ] score= {{70, 80, 90}, {80, 90, 100}};
// 2행 3열의 배열을 만들었을 때 각 인덱스마다 원소값은 아래와 같다.
score[0][0]=70; //1행 1열의 값
score[0][1]=80; //1행 2열의 값
score[0][2]=90; //1행 3열의 값
score[1][0]=80; //2행 1열의 값
score[0][1]=90; //2행 2열의 값
score[0][2]=100; //2행 3열의 값
2차원 배열 길이
2차원 배열은 배열의 배열로 구성되어 있다. 여러 개의 1차원의 배열을 묶어서 하나의 배열을 만든 것으로 볼 수 있다.
int[ ][ ] score= {{70, 80, 90}, {80, 90, 100}};로 2행 3열의 배열을 만들었을 때, score.lnegth의 값은 2이다. 그리고 score[0].length의 값은 3이다.
참조변수 score[0]이 참조하고 있는 배열의 길이이기 때문이다. 여기서 score[1].length의 값도 3이다.
score.length=행의 길이 / score[i].length=열의 길이로 보면 될 것 같다.
for문으로 2차원 배열 출력
이 외에 deepToString()메소드를 이용해 출력할 수 있다.
ex) System.out.println(Arrays.deepToString(score)); //[70, 80, 90], [80, 90, 100]