본문 바로가기
Spring/Spring 기본 도구 복습

Static 에 관하여.

by sehunbang 2024. 1. 15.

1. 모든 객체의 메모리가 모두 같은 값이 된다.

예를 들어 객체 box 가 있다고 합시다

box 안에 static 으로 된 리스트가 있습니다.

public class box {
    static List ls = new ArrayList();
    public box(int a) {
        for (int i = 0; i < 10; i++) {
            ls.add(a);
        }
    }
}

그리고 이박스들을 불러옵니다

box a  랑 box b 로 다른 두개의 객체를 만들었습니다

public static void main(String[] args) {
    box a = new box(1);
    box b = new box(2);
    // box a 는 1 b 는 2
    // 하지만 둘다 1로 출력되
    System.out.println("box a 는 1 b 는 2 :  ");
    System.out.println("box a : "+a.ls.get(1));
    System.out.println("box b : "+b.ls.get(1));
    // b 를 초기화 하고 2값을 넣었음
    b.ls.clear();
    b = new box(77);
    System.out.println("box b 박스 리스트 초기화 / 77 넣음");
    System.out.println("box a : "+a.ls.get(1));
    System.out.println("box b : "+b.ls.get(1));
}

하지만 결과는 박스 하나에 ls 값을 바꾸니 다른 box 의 list 까지 변경된것이다.

 

2.인스턴스를 생성하지 않아도 호출이 가능

그냥 바로 불러서 쓸수있음

public class main {
    static void sayhello(){
        System.out.println("Hello!");
    }
    public static void main(String[] args) {
        sayhello();
    }
}