본문 바로가기

수업 복습하기/Java

Day 13 - 정적 멤버 (Static)

728x90
728x90

= 정적 멤버 (Static)

 

Static 영단어 뜻 : 고정된

한마디로, 자바에서 사용 될 때는 객체를 생성 하지 않고, 클래스에 고정된 멤버로

객체를 생성하지 않으며 사용할 수 있는 필드와 메소드를 말한다. (=정적 필드, 정적 메소드)

 

대표적으로 빠르게 정적이란 단어를 이용 할 수 있는건

우리가 컴퓨터에서 계산기를 2개 키면, 매 번 다른 변수를 넣어서 값을 찾아내야 하지만 고정된 값이 있다.

바로 𝝿 파이와 같은 값 말이다.  객체에서 변수에 붙으면 

 

static의 가장 큰 특징으로는 클래스의 바깥에 위치해서, 모든 클래스에 같은 

이제는 예시를 통해서 static을 풀어 헤쳐보자.

 

 

<변수에 static 사용하기>

public class Count()
public int a;
public static b;

< MainClass >
Count c1 = new Count();
c1.a++;
c2.b++;

system.out.println("C1의 a:"+c1.a);
system.out.println("c1의 b:"+c1.b);

Count c2 = new Count();
c2.a++;
c2.b++:

system.out.println("C2의 a:"+c2.a);
system.out.println("c2의 b:"+c2.b);

<출력값>

c1의 a: 1

c1의 b: 1

c2의 a: 1

c2의 b: 2

 

출력값에서 a는 계속 1에서 유지가 되는 중인데, b는 2로 늘어났습니다.

여기서 알 수 있는 부분은 static은 클래스 외부에 생성되기 때문에,

객체사이에 값을 공유해서, count c1과 count c2에 같은 b의 값이 사용 되기 때문에, 마지막에 2값이 나온 것 입니다.

(객체마다 다른 변수의 값을 의미했던 a같은 경우에는 그저 1의 값만이 도출되었죠)

객체와는 관계없이 "클래스 이름 .변수"와 같은 형태로 사용이 가능합니다.

 

 

<메서드에 static 사용하기>

public class Count{

public int a;
public static b;

//일반 메서드 - 일반 멤버변수, 정적 멤버변수 모두 사용이 가능합니다.
public int method1(){
	a=10;
    return b++;
   }
   
//정적 메서드 - static이 붙은 변수나 메서드만 사용이 가능.
public static int method2(){
	Count c = new Count();
    c.a = 10;
    //a = 10; (x)
    
    return ++b;
    }

 

public class static_.method;

public class MainClass{
	pulic static void main(String[] args) {
    
    //일반 변수 사용할 때,
    //Count c = new Count();
    //c.a = 10;
    
    //static 메서드 사용 : 클래스이름.메서드의 형태로 사용
    Count.b++;
    Count.method2();
    }
}

우리가 평소에 사용했던, Math.random()이나 Arrays.toString()같은 경우들이 static을 사용한 메서드입니다.

왜냐? 클래스명.메서드의 형식으로 사용되고 있는데, 평소에 우리가 이 메서드들을

Math math = new Math();의 형태로 만들지도 않고 바로 사용할 수 있게 해주는 것이 바로

static이라고 할 수 있습니다.

728x90