Coding/JAVA

[JAVA] 코드 리팩토링

민톨이 2024. 8. 20. 21:54
728x90

📋 기존 코드

package class1;

public class StudentClass3 {

    public static void main(String[] args) {
        Student student1;
        student1 = new Student(); //학생을 실제 메모리에 만든다 //x001 주소
        student1.name = "학생1"; // 클래스 만든 것을 .을 통해 접근 가능
        student1.age = 15;
        student1.grade = 90;

        Student student2 = new Student(); //x002 주소
        student2.name = "학생2";
        student2.age = 16;
        student2.grade = 80;

        System.out.println("이름:"+student1.name+" 나이:"+student1.age+" 성적:"+student1.grade);
        System.out.println("이름:"+student2.name+" 나이:"+student2.age+" 성적:"+student2.grade);



    }
}

 

그냥 클래스를 사용하여 객체 생성만 해둔 상태의 코드

 

📋 리팩토링 1

package class1;

public class StudentClass4 {

    public static void main(String[] args) {
        Student student1;
        student1 = new Student(); //학생을 실제 메모리에 만든다 //x001 주소
        student1.name = "학생1"; // 클래스 만든 것을 .을 통해 접근 가능
        student1.age = 15;
        student1.grade = 90;

        Student student2 = new Student(); //x002 주소
        student2.name = "학생2";
        student2.age = 16;
        student2.grade = 80;

        Student[] students = new Student[2]; //2개짜리 배열
        students[0] = student1;
        students[1] = student2;


        System.out.println("이름:"+students[0].name+" 나이:"+students[0].age+" 성적:"+students[0].grade);
        System.out.println("이름:"+students[1].name+" 나이:"+students[1].age+" 성적:"+students[1].grade);



    }
}

 

배열을 사용하여 student1,2 데이터를 넣어 보관. 인덱스만 바꿔서 호출

Student 타입의 변수는 Student 인스턴스의 참조값을 보관. Student 배열의 각각의 항목도 Student 타입의 변수 = Student 타입의 참조값을 보관한다.

 

// 자바에서 변수의 대입(=)은 모두 변수에 들어있는 값을 복사해서 전달하는 것이다.

❗️변수에는 인스턴스 자체가 들어있는 것이 아니라 인스턴스의 위치를 가리키는 참조값이 들어있을 뿐이다. 따라서 대입(=)시에 인스턴스가 복사되는 것이 아니라 참조값만 복사된다.

 

📋 리팩토링 2

package class1;

public class StudentClass5 {

    public static void main(String[] args) {
        Student student1;
        student1 = new Student(); //학생을 실제 메모리에 만든다 //x001 주소
        student1.name = "학생1"; // 클래스 만든 것을 .을 통해 접근 가능
        student1.age = 15;
        student1.grade = 90;

        Student student2 = new Student(); //x002 주소
        student2.name = "학생2";
        student2.age = 16;
        student2.grade = 80;

        //생성과 선언을 동시에 하여 최적화
        //Student[] students = new Student[]{student1,student2};도 가능
        Student[] students = {student1,student2};

//        for(int i=0;i<students.length;i++){
//            System.out.println("이름:" + students[i].name + " 나이"+students[i].age +" 성적:"+students[i].grade);
//        }

        for(int i=0;i<students.length;i++){
            Student s = students[i];
            System.out.println("이름:" + s.name + " 나이"+s.age +" 성적:"+s.grade);
        }

        //향상된 for문
        for(Student s: students){
            System.out.println("이름:" + s.name + " 나이"+s.age +" 성적:"+s.grade);
        }

    }
}

 

1. 배열 선언과 동시에 선언을 하여 최적화

2. for문을 2가지 방식으로 최적화 가능. 

  ➡️ 1. index i를 이용하여 반복문

  ➡️ 2. 향상된 for문 이용

'Coding > JAVA' 카테고리의 다른 글

[JAVA]기본형과 참조형  (0) 2024.08.21
[JAVA] 영화 리뷰 프로그램  (0) 2024.08.20
[JAVA] Class 사용 - 인스턴스 생성  (0) 2024.08.20
[JAVA] Class가 필요한 이유  (0) 2024.08.20
[JAVA] 입출금 리팩토링  (0) 2024.08.18