변수의 종류
변수의 선언된 위치에 따라 멤버변수와 지역변수로 나뉘고 멤버변수 중 static이 붙은 것은 클래스변수(static변수, 공유변수), 붙지 않은 것은 인스턴스변수이다.
class Person {
int age; // 인스턴스 변수
static int countryCode; // 클래스 변수
void isPretty(){
boolean goodLooking = true; // 지역변수
}
}
인스턴스 변수, 클래스 변수
인스턴스변수와 클래스변수는 모두 클래스 영역에서 선언된다.
인스턴스변수
- 클래스의 인스턴스를 생성할 때 만들어진다.
- 인스턴스마다 독립적인 저장공간을 가지므로 인스턴스마다 서로 다른 값을 가질 수 있다.
클래스변수
- 클래스가 메모리에 올라갈 때 생성되며 프로그램이 종료될 때까지 유지된다.
- 모든 인스턴스가 공통된 저장공간(변수)를 공유하므로 한 클래스의 모든 인스턴스들이 공통적인 값을 유지해야하는 속성의 경우 클래스변수로 선언한다.
- 인스턴스를 생성하지 않아도 '클래스이름.클래스변수'와 같은 형식으로 사용한다.
- public을 붙이면 프로그램 내 어디서나 접근 가능한 전역변수(global variable)로 사용하 수 있다.
public class Test {
public static void main(String[] args){
Person person1 = new Person();
Person person2 = new Person();
Person.countryCode = 82;
System.out.println("person1의 국가코드: "+person1.countryCode);
System.out.println("person2의 국가코드: "+person2.countryCode);
person1.countryCode = 1;
System.out.println("person1의 국가코드: "+person1.countryCode);
System.out.println("person2의 국가코드: "+person2.countryCode);
}
}
출력 결과:
person1의 국가코드: 82
person2의 국가코드: 82
person1의 국가코드: 1
person2의 국가코드: 1
Person.countryCode, person1.countryCode, person2.countryCode 모두 같은 저장 공간을 참조하므로 항상 같은 값을 갖게 된다.
지역 변수
메서드 내에 선언되어 메서드 내에서만 사용 가능하며, 메서드가 종료되면 소멸된다.
for문, while문, if문 등 블럭 내에 선언된 지역변수는 블럭을 벗어나면 소멸되어 사용할 수 없게 된다.
참고: 자바의 정석 - 남궁성
🤞자바의 정석 스터디 1일차 p230-257🤞
728x90
'JAVA' 카테고리의 다른 글
[JAVA] 생성자와 변수의 초기화 (0) | 2022.12.01 |
---|---|
[JAVA] 메서드(Method) (0) | 2022.11.30 |
[JAVA] 클래스와 객체 (0) | 2022.11.29 |
[JAVA] 객체 지향의 4가지 특징 (1) | 2022.11.27 |
[JAVA] 싱글톤 패턴 정리 (0) | 2022.10.05 |
댓글