인프런 커뮤니티 질문&답변

skyjoon2님의 프로필 이미지
skyjoon2

작성한 질문수

나도코딩의 자바 기본편 - 풀코스 (20시간)

배열

배열 생성의 세번째 네번째 방법 질문드립니다.

해결된 질문

작성

·

168

0

세번째 방법

 String[] coffees = new String[] {"아메리카노", "카페모카", "라떼","카푸치노"};

 

 

네번째 방법

String[] coffees = {"아메리카노", "카페모카", "라떼","카푸치노"};

 

강의에서 세번재 네번째 배열 선언의 방법이 같다고 하셨는데 new 를 이용하여 배열을 생성한다면 coffees라는 배열의 주소를 생성한다는 개념으로 알고있는데요.

네번째 방법의 경우 new 를 사용하지 않아도 동일하게 객체의 주소가 생성되는것인지요.

 

new의 정확한 이해도가 부족하여 생긴문제같은데 설명해주시면 감사하겠습니다.

답변 1

1

나도코딩님의 프로필 이미지
나도코딩
지식공유자

안녕하세요?
다음과 같은 방식으로 하게 되면 길이가 4인 String 배열을 선언(생성)하고 4개의 문자열을 각 인덱스에 넣게 됩니다.

String[] coffees1 = new String[4];
coffees1[0] = "아메리카노";
coffees1[1] = "카페모카";
coffees1[2] = "라떼";
coffees1[3] = "카푸치노";

이때 coffees1 배열은 String 배열이며 String 은 기본형(Primitive)이 아닌 참조형(Reference) 타입이므로, 클래스 객체를 만드는 것처럼 coffees[0] = new String("아메리카노"); 와 같이 해야 하지만 String 은 예외적으로 그냥 큰 따옴표 "아메리카노" 로 작성할 수 있도록 new 부분은 생략 가능합니다. 그리고 각 배열의 요소는 "아메리카노", "카페모카" 와 같은 객체를 직접 저장하는 게 아니라 그 값들이 존재하는 메모리 공간상의 주소를 저장하게 됩니다.

위 배열은 아래와 같이 선언과 동시에 값 초기화를 할 수 있으며, new String[] 부분은 생략할 수 있습니다. 생략하더라도 배열이 생성되는 방식은 동일합니다 😊

String[] coffees3 = new String[] {"아메리카노", "카페모카", "라떼","카푸치노"};
String[] coffees4 = {"아메리카노", "카페모카", "라떼","카푸치노"};

감사합니다.

skyjoon2님의 프로필 이미지
skyjoon2

작성한 질문수

질문하기