[Java의 정석] 5장 배열

이정규·2022년 1월 13일
0

Java의 정석

목록 보기
4/7

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 배열

String 배열의 선언

배열의 선언과 다를게 없다.

String[] name

String 배열의 생성

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에 의해 자동으로 정리된다.

profile
강한 백엔드 개발자가 되기 위한 여정

0개의 댓글