반응형
static이 붙은 변수, 메소드, 구역 등은 프로그램 실행시 가장 먼저 메모리에 올라간다.
static이 붙은 메소드는 내부에서 객체의 필드에 올라오는 일반 전역변수와
일반 메소드는 사용할 수 없다. (메모리에 아직 올라오지 않았기 때문에)
따라서 static이 붙은 전역변수, static이 붙은 메소드, 자기 자신 안에 선언된 지역변수만 사용할 수 있다.
static이 붙은 전역변수, 메소드는 모든 객체가 공유한다.
따라서 static 필드는 클래스 이름으로 직접 접근이 가능하다.
실제로 공유해야 하는 값, 메소드에는 static을 붙여서 사용한다.
(공유하지 않아야 하는 값들에는 무조건 static을 붙이면 안된다.)
ex) Car class에서 wheel
public class Car {
String brand;
String color;
int price;
static int wheel = 4;
public Car() {}
public Car(String brand, String color, int price) {
this.brand = brand;
this.color = color;
this.price = price;
}
}
static 변수 wheel = 4 => mycar.wheel-- 을 해도 static 변수는 하나의 공간으로 할당되기 때문에 어떤 객체로 접근해도 같은 공간을 참조한다.
public class Road {
public static void main(String[] args) {
Car mycar = new Car("Ferrari", "Red", 65000);
Car momcar = new Car("K7", "White", 7000);
mycar.wheel--;
System.out.println(mycar.wheel); //3
System.out.println(momcar.wheel); //3
System.out.println(Car.wheel); //3
}
}
보통 상수에는 필수로 쓰이며 간단한 연산메소드에는 자주 쓰인다.
반응형
'Back-End > JAVA' 카테고리의 다른 글
[Java] Casting(Upcasting, Downcasting), instanceof (0) | 2021.05.27 |
---|---|
[Java] 상속(inheritance) (0) | 2021.05.27 |
[Java] 클래스 배열 (0) | 2021.05.24 |
[Java] 다형성(Polymorphism) (0) | 2021.05.24 |
[Java] Storage Class(저장 기억 부류), 클래스, 생성자 (0) | 2021.05.24 |