java를 공부하면서 처음에는 늘 이론에 대해 읽고 공부를 하며 넘어갔다.
그렇지만 개념적인 부분이 아무리 읽는다고한들 사실 이해가 잘 되지 않았다.
결국 내가 이해할 수 있는 상황은 코드를 작성하고,
작성된 코드들이 어느 부분이 다른지 보면서 깨닫게 된다.
그래서 위에서 설명한 static 메서드와 static 변수를 어떤 상황에 쓸 수 있고 어떤 상황에 써야 좋은지를 코드를 작성하면서 알아보고자 한다.
static int a = 0; // static멤버변수
public static void myName(){} // static메소드
class Score{
static int num1 = 0; //클래스 필드
int num2 = 0; //인스턴스 필드
}
public class Static_ex {
public static void main(String[] args) {
Score raise = new Score(); //첫번째 number
Score check = new Score(); //두번째 number
raise.num1++; //클래스 필드 num을 1증가시킴
raise.num2++; //인스턴스 필드 num을 1증가시킴
System.out.println(check.num1); //두번째 number의 클래스 필드 출력
System.out.println(check.num2); //두번째 number의 인스턴스 필드 출력
}
}
- 결과
class Person{
static void myName() { //클래스 메소드
System.out.println("홍길동");
}
void friend() { //인스턴스 메소드
System.out.println("철수");
}
}
public class Static_ex {
public static void main(String[] args) {
Person.myName(); //인스턴스를 생성하지 않아도 호출이 가능
Person name = new Person(); //인스턴스 생성
name.friend(); //인스턴스를 생성하여야만 호출이 가능
}
}
- 결과