작성
·
251
0
ArrayList<Student> list = new ArrayList<>(); list.add(new Student("유재석", "파이썬")); list.add(new Student("박명수", "자바")); list.add(new Student("김종국", "자바")); list.add(new Student("조세호", "C")); list.add(new Student("서장훈", "파이썬"));
안녕하세요 프로그래밍 입문 일주일차입니다..
강의 볼때마다 어쩔땐 new를 붙일때 있고 어쩔땐 new를 안붙이고 할때가 있는데 new가 뭔가요..???
강의를 보면서 할때는 이해가 가는데
혼자서 해볼려고 하면 머리 속이 새하얘지는데 계속 하다보면 나아 질까요..??
답변 2
0
Student student = new Student();
이렇게 만들면 ( )아래 빨간줄 그어지면서
"Expected 2 arguments but found 0" 이 에러가 뜨는데 대체 왜 그럴까요ㅠㅠ
0
안녕하세요?
프로그래밍 입문 일주일차라니, 지금까지 꾸준히 학습하고 계시다는 것부터 너무나 멋있습니다 😍
질문에 답변드리면, new는 객체를 생성하는 키워드입니다. 객체를 생성할 때는 메모리에서 해당 객체를 위한 공간을 할당하고, 그 공간에 대한 참조를 반환받아 사용합니다.
'참조' 단원에서 배웠던 내용 기억나실까요? 😁
자바에서는 클래스로부터 객체를 생성하기 위해 new 키워드를 사용해요. 예를 들어, Student라는 클래스를 가지고 있을 때, Student 객체를 생성하기 위해 new Student()와 같이 사용할 수 있습니다.
Student student = new Student();
위의 코드는 Student 클래스로부터 객체를 생성하고 student 변수로 참조합니다. 이제부터는 student 변수를 사용하여 해당 객체에 접근하고 그에 따른 작업을 할 수 있지요.
때때로 new 를 붙이지 않고 사용하는 경우도 있습니다. 이는 이미 생성된 객체를 가리키는 참조 변수를 다른 변수에 할당할 때 발생할 수 있습니다.
예를 들어
Student student1 = new Student(); // Student 객체 생성
Student student2 = student1; // student1 의 참조를 student2 에 할당
이렇게 코드를 작성하게 되면 student1 과 student2 는 같은 객체를 가리키고 있으므로 객체가 두 번 생성되는 것이 아니라, 기존에 생성된 객체에 대한 참조를 두 변수가 공유하게 됩니다.
ArrayList<Student> list = new ArrayList<>();
위 코드의 경우 ArrayList 객체를 생성하고 list 변수로 참조합니다. <Student> 는 제네릭(Generic)을 사용하여 ArrayList 에 저장되는 요소의 타입을 지정하는 부분이구요. 리스트를 이용하면 여러 개의 값들을 한 번에 관리할 수 있습니다. 강의에서처럼 list.add() 를 통해서 말이죠. add() 의 괄호 속에는 Student 클래스로부터 만들어진 객체를 넣으면 됩니다.
가령 이렇게 new 를 이용하여 직접 Student 객체를 만들어서 넣을 수도 있구요.
list.add(new Student());
또는 앞에서 new 를 이용하여 Student 객체를 만든 이를 참조하는 student 를 넣을 수도 있습니다.
Student student = new Student();
list.add(student);
이렇게 하는 경우 list.add( ) 안에서 new 는 사용할 필요가 없게 되지요. 두 경우를 비교해보시면 언제 new 를 쓰는지 보다 쉽게 구분하실 수 있을 것 같습니다.
혼자서 프로그래밍을 공부하다보면 어려움을 겪을 수 있습니다. 그러나 꾸준한 노력과 실습을 하시다보면 조금씩 이해도와 능력이 향상되는 게 느껴질 거에요 ✨ 공부하시다가 모르는 문제, 궁금한 내용이 생기면 언제든지 편하게 질문 남겨주세요 😊
감사합니다.
앗, 죄송합니다 😅
설명을 위해 짧게 적은 코드다 보니 우리 예제에서 바로 실행 가능한 형태는 아니었어요.
Student 클래스의 생성자에 name, certification 를 받도록 정의되어 있는데 이 2개 값이 누락되어서 발생한 오류입니다. 다음과 같이 모든 Student() 를 Student(이름, 자격증) 형태로 바꿔주시면 될거에요 😊
감사합니다.