작성
·
59
0
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오) 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예
[질문 내용]
여기에 질문 내용을 남겨주세요.
섹션2 배열도입 11:42부분 그림을 보고 궁금증이 생겼습니다. 왜 student1,student2 객체를 따로 만들어서 students배열에 대입하는 건가요? for(int i=0;i<students.length;i++) students[i]=new students(); 이렇게 객체를 생성하는것이 메모리 낭비가 없기 때문에 더 효율적인 것 아닌가요?
답변 2
0
안녕하세요. yne325님
예제의 경우에는 쉽게 풀어서 설명하기 위해서 student1, student2를 별도로 만든 것입니다 🙂
따라서 배열에서 생성하고 사용하셔도 괜찮습니다.
그러면 생각하신 것 처럼 참조 변수 student1, student2가 없어도 되니 메모리가 아주 조금이나마 아껴지겠지요?
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다.
yne325님, 배열 내에 객체를 생성하는 방법에 대한 질문을 주셨군요. Student
객체를 배열에 할당하는 방식이 메모리 효율성 측면에서는 어떻게 작용하는지 궁금하신 것 같습니다.
객체를 배열로 처리할 때, 일반적으로 사용되는 두 가지 접근 방식은 아래와 같습니다:
Student[] students = new Student[2];
students[0] = new Student();
students[1] = new Student();
이 방식은 명확하고, 각 객체의 초기화와 배열에의 할당이 구분되어 있습니다. 각 배열 위치에 별도로 객체를 생성하고 초기화하여 할당할 수 있습니다. 이는 코드의 가독성을 높이고, 각각의 객체가 어떤 경우에 어떻게 초기화되는지를 명확히 알 수 있습니다.
for (int i = 0; i < students.length; i++) {
students[i] = new Student();
}
이 방법은 초기화와 할당을 루프로 처리하여 코드 간결성을 제공합니다. 각 배열 요소를 일관되게 초기화해야 할 때 효과적입니다. 특히 같은 타입의 객체를 동일하게 초기화할 경우 효율적입니다.
두 방법 모두 객체를 배열에 할당하는 데 실질적인 메모리 낭비가 발생하지는 않지만, 선택하는 방식에 따라 전체 코드의 가독성과 유연성이 달라집니다. 특정 상황에서 동적으로 객체를 관리해야 할 때, 첫 번째 방법이 유리할 수 있으며, 반면 반복적인 패턴으로 객체를 생성할 경우 두 번째 방법이 더 효율적입니다.
관련된 추가 설명은 아래 링크에서 확인해 보실 수 있습니다:
- 객체를 따로 생성해주는 이유
- 배열의 메모리값 할당에 관한 질문
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
루프를 통한 객체 생성과 동시에 할당 이 방식의 경우도 Student[] students = new Student[2]; 와 같이 배열초기화가 필요한 거 아닌가요? students.length를 알려면 객체 할당 전 배열 초기화가 필요하다고 생각했습니다. 1 과 2 방법은 같은 거 아닌가요? 차이점이 잘 이해가 가지 않습니다ㅠㅠ