김영한님의 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술을 듣다가
내가 자바공부를 더 해야겠다는 생각에 자바 기초부터 다시 공부해보려합니다.
Scope
변수들은 사용가능한 범위를 가지는데 이것을 scope라고 합니다.
public class VariableScopeExam{
int globalScope = 10;
public void ScopeTest1(int value){
int localScope = 20;
System.out.println(globalScope);
System.out.println(localScope);
System.out.println(value);
}
public void ScopeTest2(int value2){
System.out.println(globalScope);
System.out.println(localScope); // X
System.out.println(value); // X
}
-ScopeTest1,ScopeTest2메소드는 VariableScopeExam 클래스 안에 포함되어있으므로 변수 globalScope는 두 메소드에서 실행될 수 있다.
-변수 localScope와 value는 ScopeTest1메소드 영역 안에서 만들어진 변수이기때문에 ScopeTest2메소드에서 사용될 수 없다.
Static
public class VariableScopeExam{
int globalScope = 10;
public void ScopeTest1(int value){
int localScope = 20;
System.out.println(globalScope);
System.out.println(localScope);
System.out.println(value);
}
public void ScopeTest2(int value2){
System.out.println(globalScope);
System.out.println(localScope); // X
System.out.println(value); // X
}
public static void main(String[] args){
System.out.println(globalScope); // X
System.out.println(localScope); // X
System.out.println(value); // X
}
}
-main 메소드는 static이라는 키워드가 붙어있다 이런 메소드를 static 한 메소드라고 한다.
-static한 필드나 static한 메소드는 class가 인스턴스화 하지 않아도 사용할 수 있다.
public class VariableScopeExam {
int globalScope = 10;
static int staticVal = 7;
public void scopeTest(int value){
int localScope = 20;
}
public static void main(String[] args) {
System.out.println(staticVal); // O
}
}
static 변수 공유
-static한 변수는 저장공간이 하나다. 인스턴스가 여러개 생성되도 저장할 수 있는 값은 하나 밖에 없다.
-staticVal같은 static한 필드를 클래스 변수라고 한다.
-클래스 변수는 레퍼런스.변수명으로 사용하기보다는 클래스명.변수명으로 사용하는것이 더 바람직하다. (VariableScopeExam.staticVal)
ValableScopeExam v1 = new ValableScopeExam();
ValableScopeExam v2 = new ValableScopeExam();
v1.golbalScope = 20;
v2.golbalScope = 30;
System.out.println(v1.golbalScope); //20 이 출력된다.
System.out.println(v2.golbalScope); //30이 출력된다.
v1.staticVal = 10;
v2.staticVal = 20;
System.out.println(v1.statVal); //20 이 출력된다.
System.out.println(v2.statVal); //20 이 출력된다.