▶ 1. 클래스와 데이터 : 클래스 생성 + 클래스의 이해
https://zoooom-in.tistory.com/65
[김영한_자바기본][1.클래스와 데이터] (보충) 배열 / 클래스 생성 / 배열 + 클래스 이해 (p.14, p.17,
▶ 배열의 선언과 생성 이해 https://zoooom-in.tistory.com/44 [김영한_자바입문][9.배열] 배열의 선언과 생성 이해하기 (p.2-7) 배열 선언은 아파트 부지 확보, 생성은 몇 개의 아파트를 확보할 것인지 배열
zoooom-in.tistory.com
[BigData / Data 코드] Java에서 클래스의 멤버 변수는 선언 시에만 초기화할 수 있다
public class BigData {
Data data = new Data();
Data data2; //null값
data2 = new Data();
}
- 클래스의 멤버 변수인 data는 선언과 동시에 객체를 생성할 수 있다.
- 하지만 data2와 같이 클래스의 멤버 변수를 선언한 후에 다른 위치에서 객체를 생성하는 것은 불가하다.
[해결방법1] 생성자 생성
public BigData() {
data2 = new Data();
}
- 생성자 : 초기 객체값 부여
[해결방법2] 객체 생성과 동시 초기화
Data data2 = new Data();
▶ 기본형 / 참조형 - 메서드 이해
https://zoooom-in.tistory.com/49
[김영한_자바기본][2.기본형과 참조형] (보충) 기본형 / 참조형 - 메서드, 문제 풀이 해석 (p.11-20, p.
▶ 기본형과 참조형 이해 https://zoooom-in.tistory.com/45 [김영한_자바기본][2.기본형과 참조형] 기본형 / 참조형 이해 (p.1-6) 참조값에 접근한다는 것은 설계도와 부지 위치에 접근해서 같이 공동 작업
zoooom-in.tistory.com
▶기본형 / 참조형 이해
https://zoooom-in.tistory.com/45
[김영한_자바기본][2.기본형과 참조형] 기본형 / 참조형 이해 (p.1-6)
참조값에 접근한다는 것은 설계도와 부지 위치에 접근해서 같이 공동 작업을 하는 것이다. 기본형은 실제 값이 저장되어 독립적으로 관리되지만, 참조형은 변수에는 객체 위치(참조값)가 저장
zoooom-in.tistory.com
* 객체 전달 : 메서드 매개변수로 객체를 전달해 메서드 내부에서 객체의 상태를 변경/활용할 수 있다.
이는 객체 참조를 전달하므로, 메서드에서의 변경이 호출자에게 영향을 미친다.
* 객체 반환 : 메서드에서 생성 or 초기화한 객체를 반환하며,
이는 호출자가 변수에 할당하거나 직접 활용할 수 있다.
[p.17 / Method1] 메서드 매개변수에 객체 전달
public class Method1 {
public static void main(String[] args) {
Student student1 = new Student();
inputData(student1, "학생1", 15,90);
Student student2 = new Student();
inputData(student2, "학생2", 16, 80);
printData(student1);
printData(student2);
}
public static void inputData(Student student, String name, int age, int grade) {
student.name = name;
student.age = age;
student.grade = grade;
}
public static void printData(Student student) {
System.out.println("이름 : " + student.name + ", 나이 : " + student.age + ", 성적 : " + student.grade);
}
}
- 매서드 매개변수는 멤버변수이기도 하며, 외부에서 호출된 데이터를 사용한다.
[p.17 / Method1_메서드 발췌] 메서드 매개변수에 객체 참조값 전달
public static void inputData(Student student, String name, int age, int grade) {
student.name = name;
student.age = age;
student.grade = grade;
}
- 객체 참조값을 기반으로 메서드 내에서 해당 객체의 멤버 변수를 조작할 수 있다.
- 참조값 기반 name 데이터 입력
- name은 지역변수 name 사용 : 즉 외부에서 호출한 내용이 전달됨
*메서드 객체 참조값 전달 도식화
[p.17 / Method2] 메서드에서 객체 생성 및 초기화 후 반환
public class Method2 {
public static void main(String[] args) {
Student student1 = inputData("학생1", 15,90);
Student student2 = inputData("학생2", 16, 80);
printData(student1);
printData(student2);
}
public static Student inputData(String name, int age, int grade) {
Student student = new Student();
student.name = name;
student.age = age;
student.grade = grade;
return student;
}
public static void printData(Student student) {
System.out.println("이름 : " + student.name + ", 나이 : " + student.age + ", 성적 : " + student.grade);
}
}
- 기존 new Student 객체 생성을 동일하게 유지하기 때문에 동일한 위치에 호출자를 넣고, 변수에 저장한다.
- Student 타입을 반환하는 메서드를 생성하고, 내부에서 Student 타입 객체를 생성한다.
- 객체에 내부 데이터를 담고(초기화하고), 객체의 참조값(위치)를 반환한다.
- 반환한 데이터를 Student 타입의 변수에 저장한다.
*메서드 내부 객체 생성/초기화 후 반환 도식화
객체 생성은 main과 무관하게 클래스내에서 언제든지 사용할 수 있다.
또한, 타입을 지정하고 멤버변수 내에서만 사용할 경우 초기값은 자동으로 null이 지정되며,
내부적으로 접근해야할 경우 객체 생성을 만들 수 있는 코드를 작성해야 한다.
▶ NullPointerException 이해
https://zoooom-in.tistory.com/50
[김영한_자바기본][2.기본형과 참조형] Null/NullPointerExcepiton 이해 (p.23-29)
null은 가리키는 대상이 없거나, 나중에 입력하고 싶을때 사용된다. nullPointerException은 null이 없는 곳(참조 주소가 없음)을 찾아갈 때 발생한다. NullPointerException 이해하기 [p.23 / Data 클래스] public cla
zoooom-in.tistory.com
[p.29 / NullMain4] NullPointerException 이해
public static void main(String[] args) {
BigData bigData = new BigData();
bigData.data = new Data();
System.out.println("bigData.count = " + bigData.count);
System.out.println("bigData.data = " + bigData.data); // null
//System.out.println("bigData.data.value = " + bigData.data.value);
}
[p.28 / BigData] Data 클래스를 가져오긴 했으나, 아무런 값도 입력하지 않아 null로 표기됨
public class BigData {
Data data;
int count;
}
- Data 클래스 기반으로 Data타입의 변수를 생성하긴 했으나, 해당 변수에 어떠한 표기도 없기에 초기값 null로 설정된다.
[p.28 / BigData_보완] Null해결 방법① : BigData클래스에 Data 객체 생성
Data data = new Data();
- 클래스 내에서 main 메서드를 사용하지 않고도 객체 생성이 가능하다.
- main 메서드는 Java 프로그램의 시작점이지만, 객체 생성은 main 메서드와는 독립적으로 클래스 내에서
언제든지 할 수 있다.
[p.29 / NullMain4] Null해결 방법② : Main에서 BigData에 접근해 Data 객체 생성
public static void main(String[] args) {
BigData bigData = new BigData();
bigData.data = new Data();
System.out.println("bigData.count = " + bigData.count);
System.out.println("bigData.data = " + bigData.data); // null
System.out.println("bigData.data.value = " + bigData.data.value);
}
*Data와 BigData의 상관성 도식화 : BigData → Data 접근 가능
'Java > [inflearn] 자바 기본' 카테고리의 다른 글
[김영한_자바기본][6. 접근 제어자] (보충) 접근 제어자 - 클래스 / 클래스 내부 동일한 클래스 객체 생성(p.10-11) (0) | 2024.02.15 |
---|---|
[김영한_자바기본][3. 객체 지향 프로그래밍] (보충) 객체 지향 메서드 이해 (p.8-9, p.12) (0) | 2024.02.15 |
[김영한_자바기본][1.클래스와 데이터] (보충) 배열 / 클래스 생성 / 배열 + 클래스 이해 (p.14, p.17, p24-27) (0) | 2024.02.14 |
[김영한_자바기본][11. 다형성2] 다형성 사용 이유 및, 순수 추상 클래스(p.1-20) (0) | 2024.02.13 |
[김영한_자바기본][10. 다형성1] 상속과 메모리 구조(p.1-23) (2) | 2024.02.10 |