본문 바로가기

Backend Study/Java

[JAVA] static 변수와 메서드

1.1 static 변수 

 

class kimkyuriFamily{
	String lastname="김";
}

public class Sample {
	public static void main(String[] args){
    	kimkyuriFamily kim1 = new KimkyuriFamily();
        kimkyuriFamily kim2 = new kimkyuriFamily();
    }
}

 

 

위 코드는 김규리 가족을 나타내는 클래스이다. 위처럼 클래스를 만들고 객체를 생성한다면, 객체마다 lastname을 저장하기 위한 메모리가 별도로 할당된다. 하지만 lastname은 모든 객체의 공통값이기 때문에, 메모리가 별도로 할당될 필요는 없다.

이렇게 값이 변하지 않는다면 static 변수를 사용하는 것이 유리하다.

 

class kimkyuriFamily{
	static String lastname="김";
}

public class Sample {
	public static void main(String[] args){
    	kimkyuriFamily kim1 = new KimkyuriFamily();
        kimkyuriFamily kim2 = new kimkyuriFamily();
    }
}

 

위와 같이 lastname 변수에 static 키워드를 붙이면 메모리 할당을 딱 한번만 하게 된다.

* 여기에 final이라는 키워드를 붙여주면, 한번 설정된 값을 변경할 수 없다.

 

static 변수는 공유의 목적으로 많이 사용한다. static변수를 사용하면 같은 곳의 메모리 주소를 향하기 때문에 변수를 모두 공유하게된다.

 

1.2 static 메서드

메서드 앞에 static 키워드가 붙으면 static method가 된다.static 메서드는 Counter.getCount() 처럼 객체 생성없이 클래스를 통해 메서드를 직접 호출할 수 있다. 

 

class Counter {
	static int count=0;
    Counter(){
    	count++;
        System.out.println(count);
    }
    
    public static int getCount() {
    	return count;
    }
}

public class Sample {
	public static void main(String [] args) {
    	Counter c1 = new Counter();
        Counter c2 = new Counter();
        
        System.out.println(Counter.getCount());
    }
}

 

static method 안에서는 객체 변수 접근이 불가능하고, static 변수만 접근 가능하다. 위 예제에서는 count가 static 변수이기 때문에 접근이 가능하다. 

 

static method는 유틸리티성 메서드를 작성할 때 많이 사용된다. 

 

 

참고) https://wikidocs.net/228

'Backend Study > Java' 카테고리의 다른 글

[JAVA] 람다와 스트림  (0) 2023.02.13
[JAVA] 힙 메모리 사용률  (0) 2023.02.09
[JAVA] 제네릭 (Generic)  (0) 2023.02.06
[JAVA]링크드리스트로 큐 구현하기 (Queue)  (0) 2023.02.06
[JAVA] 오버로딩 vs 오버라이딩  (0) 2023.02.02