K-DigitalTraining 강의/1. Java
[2주차] 27. 클래스 관련 변수들(멤버변수=인스턴스변수, static변수=클래스변수)*
이대곤
2022. 5. 20. 16:55
* 아래의 두 변수들은 초기화 해주지 않아도 자동으로 0으로 초기화 되지만(boolean형 변수는 false로)
일반 지역변수의 경우는 자동으로 초기화 되지 않으므로, 초기화 해준 뒤에 사용해야 한다.
* 멤버변수 = 인스턴스변수
'멤버변수'란 클래스 내부의 변수들인데, 인스턴스를 만들어야 변수에 대한 공간이 할당되므로 '인스턴스 변수'라고
부르기도 함.
* static변수 = 클래스변수
객체를 생성하기 전부터 생성되어, 같은 클래스로 생성된 모든 객체가 공유하게 되는 변수인데,
클래스 이름으로 접근하는게 일반적이라서 '클래스변수'라고 부르기도 한다.
객체를 통해서도 접근해도 실행은 되지만 이 변수는 하나의 객체에 한정되어 존재하는게 아니기 때문에
경고 메세지가 뜰 것임.
코드
class Person {
// 멤버변수(=인스턴스변수)
String name;
int age;
double height;
// static변수(=클래스변수)
static String nation;
}
public class Ex05_01_클래스 {
public static void main(String[] args) {
Person.nation = "Korea"; // 아무런 객체를 생성하지 않았는데 접근 가능한 변수
Person p1 = new Person();
p1.name= "윤아";
p1.age = 30;
p1.height = 159.7;
Person p2 = new Person();
p2.name="박보검";
p2.age = 23;
p2.height = 189.3;
System.out.println(p1.name);
System.out.println(p1.age);
System.out.println(p1.height);
System.out.println(p1.nation); // 경고는 뜨지만 실행은 됨
System.out.println();
System.out.println(p2.name);
System.out.println(p2.age);
System.out.println(p2.height);
System.out.println(p2.nation); // 경고는 뜨지만 실행은 됨
}
}
실행결과
윤아
30
159.7
Korea
박보검
23
189.3
Korea