기본형과 참조형 - 활용
이전 포스팅에서 개발했던 학생 성적 클래스를 수정해보자.
변경 전
public class ClassStart5 {
public static void main(String[] args) {
Student student1 = new Student(); // 학생을 실제 메모리에 만든다.
student1.name = "학생1";
student1.age = 14;
student1.grade = 90;
Student student2 = new Student();
student2.name = "학생2";
student2.age = 15;
student2.grade = 80;
Student[] students = {student1, student2};
for(Student s : students) { //향상된 for문
System.out.println("이름:" + s.name + " 나이: " + s.age + " 성적: " + s.grade);
}
}
}
변경 후
public class Method1 {
public static void main(String[] args) {
Student student1 = new Student();
initStudent(student1, "학생1", 15, 90);
Student student2 = new Student();
initStudent(student2, "학생2", 18, 50);
printStudent(student1);
printStudent(student2);
}
static void initStudent(Student student, String name, int age, int grade){
student.name = name;
student.age = age;
student.grade = grade;
}
static void printStudent(Student student) {
System.out.println("이름:" + student.name + " 나이: " + student.age + " 성적: " + student.grade);
}
}
=> 참조형은 메서드를 호출할 때 참조값을 전달한다. 따라서 메서드 내부에서 전달된 참조값을 통해 객체의 값을 변경하거나, 값을 읽어서 사용할 수 있다.
메서드에서 객체 반환
코드를 잘 보면 아직도 중복이 남아있다. 이 부분도 개선해보자.
Student student1 = new Student();
initStudent(student1, "학생1", 15, 90);
Student student2 = new Student();
initStudent(student2, "학생2", 18, 50);
=> 생성하면서 초기화 할 수 없을까?
public class Method2 {
public static void main(String[] args) {
Student student1 = createStudent("학생1", 15, 90);
Student student2 = createStudent( "학생2", 18, 50);
printStudent(student1);
printStudent(student2);
}
static Student createStudent(String name, int age, int grade) {
Student student = new Student();
student.name = name;
student.age = age;
student.grade = grade;
return student;
}
static void printStudent(Student student) {
System.out.println("이름:" + student.name + " 나이: " + student.age + " 성적: " + student.grade);
}
}
* 인프런 '김영한의 실전 자바 - 기본편'을 참고하여 작성하였습니다.
'프로그래밍언어 > Java' 카테고리의 다른 글
[Java 기본] null (0) | 2024.07.02 |
---|---|
[Java 기본] 변수와 초기화 (0) | 2024.07.02 |
[Java 기본] 기본형과 참조형 - 메서드 호출 (0) | 2024.07.02 |
[Java 기본] 기본형과 참조형 (0) | 2024.07.01 |
[Java 기본] 배열 (0) | 2024.07.01 |