Java : Static
2023. 3. 20. 15:31ㆍjava
// static 제어자
// - '클래스의', '공통적인' 의 의미
// - 일반 필드 같은 경우, 인스턴스(객체)가 생성된 후 만들어진다.
// 각 객체마다 다른 값을 유지한다.
// - static 멤버 변수는 인스턴스에 관계없이 같은 값을 갖는다.
// → 하나의 변수를 서로 공유한다.
// static 멤버 변수
// - 모든 인스턴스 공통적으로 사용하는 클래스 변수
// = 객체가 가지는 변수가 아닌 클래스가 가지는 변수
// - 인스턴스를 생성하지 않고 사용 가능
// = 클래스를 통해서 static 멤버 변수에 접근
// - JVM이 클래스를 로드할 때 생성
// static 메서드
// - 인스턴스를 생성하지 않고 사용 가능
// - static 메서드 내에서는 static 멤버만 접근 가능
// 즉, 인스턴스 멤버에는 접근할 수 없다.
// static 멤버의 특성
// - 공간적 특성
// 클래스에 하나 생성
// 인스턴스(객체)에 생성되는 것이 아니다.
// - 시간적 특성
// 클래스를 로드할 때 생성
// 아무런 참조 변수가 없어도 사라지지 않는다.
// 프로그램이 종료될 때 사라진다.
// - 공유 특성
// 동일한 클래스의 모든 인스턴스들이 공유한다.
class SimpleA {
// 인스턴스 변수
int defaultData;
// static 멤버 변수 / 클래스 변수
static int staticData;
// 인스턴스 메서드
void defaultPrint() {
System.out.println("defaultData = " + defaultData);
System.out.println("staticData = " + staticData);
}
// static 메서드
static void staticPrint() {
// System.out.println("defaultData = " + defaultData);
// 인스턴스 멤버는 객체를 생성한 다음 접근이 가능하기 때문에
// 생성되는 시기가 맞지 않아 접근할 수 없다.
System.out.println("staticData = " + staticData);
}
}
public class File01_Static {
public static void main(String[] args) {
SimpleA s1 = new SimpleA();
// 객체를 통해서 각 멤버에 접근
s1.defaultData = 100;
s1.staticData = 200;
System.out.println("s1.defaultData = " + s1.defaultData);
System.out.println("s1.staticData = " + s1.staticData);
SimpleA s2 = new SimpleA();
System.out.println("s2.defaultData = " + s2.defaultData);
System.out.println("s2.staticData = " + s2.staticData);
// 클래스에 생성된 변수이며
// 클래스를 통해서 접근하는 것이 원칙이다.
System.out.println("SimpleA.staticData = " + SimpleA.staticData);
//---------------------------------------------------------------
s1.defaultPrint();
//---------------------------------------------------------------
String.format(null, args);
Math.abs(-11);
double pi = Math.PI;
}
}
'java' 카테고리의 다른 글
| Java : Inheritance(상속) (0) | 2023.03.20 |
|---|---|
| Java : Final (0) | 2023.03.20 |
| Java : Modifier(제어자) (0) | 2023.03.20 |
| Java : Object Array(객체 배열) (0) | 2023.03.20 |
| Java : This (0) | 2023.03.20 |