본문 바로가기

프로그래밍언어/Java

[Java 기본] 기본형과 참조형 - 활용

기본형과 참조형 - 활용


이전 포스팅에서 개발했던 학생 성적 클래스를 수정해보자. 

 

변경 전

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