= 정적 멤버 (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이라고 할 수 있습니다.
'수업 복습하기 > Java' 카테고리의 다른 글
Day 14 - 추상 (abstract) (0) | 2021.09.06 |
---|---|
Day 13 - Final (변수, 클래스, 메소드) (7) | 2021.09.06 |
Day 12 - 다형성 (casting, instanceof) (2) (0) | 2021.09.02 |
Day 12 - 다형성(Polymorphism) (1) (0) | 2021.09.02 |
Day 11 - 캡슐화(Encapsulation) (0) | 2021.08.31 |