해결된 질문
작성
·
167
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 = {"아메리카노", "카페모카", "라떼","카푸치노"};
감사합니다.