배열 생성의 세번째 네번째 방법 질문드립니다.
세번째 방법
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 = {"아메리카노", "카페모카", "라떼","카푸치노"};감사합니다.
자바를 처음 배울 때 이런 고민이 드는 게 정상일까요?
1
146
2
static이 뭐였는지 기억이 안나요 ㅜㅜ
0
119
2
Iterator (알 수 없음) 데이터 삭제 후 초기화 관련 문의
0
72
1
사고력 키우는 법이 어떤게 있나요?
0
94
2
getter setter
0
103
2
섹션9. 66 메소드 오버로딩 시 질문이 있습니다.
0
80
1
안녕하세요 갑자기 프로그램 에러가 떠서 안되네요
0
76
2
변수 이름짓는법
0
114
2
intelli J 실행오류
0
115
2
혹시 이건 수학적 사고가 부족한 걸까요?
0
152
2
영상이 재생이 안됩니다.
0
167
3
이중 반복문 (후반전) 오른쪽으로 치우친 별 쌓기에 질문이 있습니다.
0
117
2
응용이 어렵습니다.
0
207
2
IntelliJ가 보이지 않습니다.
0
187
3
JDK 버전 문의
0
130
2
BlackBox 파일 내에서 메소드 정의
0
136
1
동기화
0
123
2
Iterator 문의
0
105
1
코드 순서 문의
0
143
1
클래스 메소드
0
150
2
Quiz_05 관련 질문드립니다 !
0
118
2
다운로드가 안됩니다
0
165
2
다형성
0
120
2
HashMap
0
81
2





