자바 튜토리얼 영상에 달린 댓글을 보니까 static이 무슨 의미인지 조금은 와닿는다.
Well "static" makes sense, because it does mean standing still: its in a ✨fixed position in memory✨ and its impossible for it to be instanced like with non static fields
✨메모리 안에 '고정되어' 있기 때문에✨ 인스턴스화 될 수 없다. 그러므로 '고정된'이라는 static의 의미와 연결된다.
Changes made in an instance variable using one object will not be reflected in other objects as each object has its own copy of the instance variable. In the case of static, changes will be reflected in other objects as static variables are common to all objects of a class."
Source - GeeksforGeeks
인스턴스 변수와 달리, static 변수는 클래스 내 모든 객체에서 나눠 쓰기 때문에, 예를 들어 apple이라는 변수를 여기 저기서 쓰고 있을 때 apple 변수 값을 하나만 바꿔도 다른 apple까지 같이 변한다.
public class Staticky {
int a = 0;
public static void main(String[] args) {
int b = 1;
💢System.out.println(a);💢
}
public void show () {
System.out.println(a);
}
}
a는 전역변수라 show 메소드처럼 어디서든 접근 가능해야 하는데 main 메소드에서는 접근할 수 없다('Cannot make a static reference to the non-static field a'라는 에러 메시지가 나온다.)
이클립스가 추천해 주는 대로 전역변수에 static을 붙이면 에러가 사라지고 main 메소드에서도 a를 사용할 수 있게 된다. 🔽
public class Staticky {
🎆static int a = 0;
public static void main(String[] args) {
int b = 1;
System.out.println(a);
}
public void show () {
System.out.println(a);
}
}
왜 그럴까? 이유는 모르겠지만 static 키워드를 왜 쓰는지는 알았다.
public class Staticky {
<int a = 0;
public static void main(String[] args) {
int b = 1;
Staticky s = new Staticky();
System.out.println(s.a);
}
}
Staticky 클래스는 a에 접근할 수 있으니까,
우선 Staticky 클래스의 인스턴스를 만들고
인스턴스를 통해 a에 접근해야 한다. 😱
Alex lee 유튜브 영상(링크)을 참고했습니다.