Java

[JAVA] 2-2. 기본형과 참조형 - 멤버 변수, 지역 변수와 초기화

kyer5 2024. 6. 28. 17:36

'김영한의 실전 자바' 강의를 보고 정리하였습니다.

 

변수와 초기화

변수의 종류

멤버 변수(필드): 클래스에 선언

  • 지역 변수: 메서드에 선언 (매개변수도 지역 변수의 한 종류)

멤버 변수, 필드 예시

public class Student {
    String name;
    int age;
    int grade;
}

Student 클래스 내에 선언

 

name, age, grade 👉🏻 멤버 변수

 

지역 변수 예시

public static void main(String[] args) {
        Student student1;
        student1 = new Student();
        Student student2 = new Student();
}

main() 메서드 내에 선언

student1, student2 👉🏻 지역 변수

 

public class MethodChange1 {
    public static void main(String[] args) {
        int a = 10;
        System.out.println("메서드 호출 전: a = " + a);
        changePrimitive(a);
        System.out.println("메서드 호출 후: a = " + a);
    }

    static void changePrimitive(int x) {
        x = 20;
    }
}

changePrimitive() 메서드 내에 선언

a, x(매개변수)  👉🏻 지역 변수

 

지역 변수는 이름 그대로 특정 지역에서만 사용되는 변수라는 뜻이다.

변수 x는 changePrimitive() 메서드의 블록에서만 사용되고, 메서드가 끝나면 제거된다.

마찬가지로, 변수 a도 main() 메서드가 끝나면 제거된다.

 

변수의 값 초기화

  • 멤버 변수: 자동 초기화
    • 인스턴스의 멤버 변수는 인스턴스를 생성할 때 자동으로 초기화된다.
    • 숫자(int) = 0, boolean = false, 참조형 = null
    • 개발자가 초기값을 직접 지정할 수 있다.
  • 지역 변수: 수동 초기화
    • 지역 변수는 항상 직접 초기화해야 한다.

멤버 변수의 초기화

public class InitData {
    int value1; // 초기화 하지 않음
    int value2 = 10; // 10으로 초기화
}

 

public class InitMain {
    public static void main(String[] args) {
        InitData data = new InitData(); 
        System.out.println("value1 = " + data.value1);
        System.out.println("value2 = " + data.value2);
    }
}

 

💡new로 생성하는 것들은 자바에서 인스턴스 값들을 알아서 초기화해 준다.

 

실행 결과

 

value1은 초기값을 지정하지 않았지만 자동으로 0으로 초기화된 것을 확인할 수 있다.

value2는 10으로 초기값을 지정해 두었기 때문에 객체를 생성할 때 10으로 초기화된다.