4장은 조건문과 반복문에 대한 내용으로 스킵했습니다.
int[] score;
int score[];
타입 뒤 또는 변수 뒤에 대괄호[]를 붙이면 된다.
int[] score;
score = new int[5];
그림과 같이 초기값은 int의 default값인 0으로 채워진다.
여기서 score
변수는 참조변수라고 한다. 배열의 선언은 참조변수를 위한 공간을 만드는 것이고, 배열을 생성해야 값을 저장할 수 있는 공간이 만들어진다.
참조변수란, 참조하는 메모리 주소값을 저장하는 변수를 말한다.
그러면 출력하면 어떻게 될까?
타입@주소
와 같이 출력이 된다. 하지만 @주소
부분은 실제 주소가 아닌 내부 주소를 가르키고 있다. 이는 뒷 장에서 설명
int[] score = new int[5];
System.out.println(score[6]) // 실행 시 에러 발생
배열의 선언과 다를게 없다.
String[] name
String[] name;
name = new String[3];
참조형 변수의 default값은 null값이다.
name[0] = new String("Kim");
name[1] = new String("Park");
name[2] = new String("Lee");
배열에 값이 아닌 객체의 주소가 저장되어 있다. 이처럼 기본형 배열이 아닌 참조형 배열의 경우에는 객체의 주소가 저장된다.
String str = "java";
str = str + "8"; // "java8"이라는 새로운 문자열이 생성된다.
System.out.println(str); // "java8"
기존에 갖고 있던 "java"의 값을 갖고 있는 주소값을 가르키고 있던 str변수는 새로운 "java8"이라는 값을 갖고 있는 주소값을 가르키게 된다.
그 다음 "java"라는 쓸모없어진 String객체는 Garbage collector에 의해 자동으로 정리된다.