ID_DI
DI's study notes
ID_DI
전체 방문자
오늘
어제
  • 분류 전체보기 (85)
    • Deep-Learning (3)
      • CNN (2)
      • NLP (1)
    • Data_Python (6)
      • Numpy (0)
      • Matplotlib (4)
    • Python (8)
      • Python Algorithm (6)
    • Java (36)
      • Java(base) (33)
      • Java practice(base) (2)
    • Git (12)
    • Algorithm (7)
    • etc (7)
    • linux (1)
    • DeskSetup (0)
    • TIL_모각코 (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • README.md
  • 합병정렬
  • staged
  • java.net
  • java 기초
  • 자바
  • 파이썬
  • java
  • git add.
  • java base
  • binarySearch
  • Python
  • Github
  • 커밋
  • matplotlib
  • string to int
  • git
  • 정렬
  • 알고리즘
  • java.lang

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
ID_DI

DI's study notes

[Java] static (정적) : 모든 객체가 공유
Java/Java(base)

[Java] static (정적) : 모든 객체가 공유

2021. 11. 29. 23:01

static (정적)

  • static이 붙은 변수, 메소드, 구역 등은 프로그램 실행시 가장 먼저 메모리에 올라간다.
  • static 이 붙은 전역변수, 메소드는 모든 객체가 공유한다.
  • static 이 붙은 변수는 가장 먼저 메모리에 static 영역으로 이동한다.
  • 객체 안의 static 변수일 경우, 객체가 선언될때 객체 안에서 제외된채 생성되고, 메모리의 static 영역에 저장되며, 그것을 공유한다.
  • static 이 붙은 메소드는 내부에서 각 객체의 필드에 올라오는 일반 전역변수와 일반 메소드는 사용할 수 없다.(아직 메모리에 올라오지 않았기 때문에 - static 은 가장 먼저 올라오기 때문에)

public static void main(String[] args){}' 메인은 가장 먼저 메모리에 올라가고, 실행한다.

  • static이 붙은 전역변수, static이 붙은 메소드, 자기 자신 안에 선언된 지역변수만 사용할 수 있다.

  • 실제로 프로그램 내에서 각 객체가 공유해야 하는 값, 메소드에는 static을 붙여서 사용한다.

  • 공유하지 않아야 하는 값들에는 무조건 static을 붙이면 안된다.

객체 생성을 하지 않고, 클래스 이름으로 바로 static 변수에 접근 가능
class Test {
    int data1; //전역변수 (객체의 필드에 생성)
    static String data2;
}
public class Main {
    public static void main(String[] args) {
        Test obj1 = new Test();
        obj1.data1 = 10;
        obj1.data2 = "\"static 은 모든 객체가 공유합니다.\"";

        Test obj2 = new Test();
        obj2.data1 = 20;

        System.out.println("obj1.data1 = "+ obj1.data1 + "\nobj2.data2 = " + obj2.data1);
        //static에 접근하기 위해 클래스명을 직접 사용할 수 있음(객체사용 불필요)
        System.out.println("static data2 = " + Test.data2);
    }
}

'Java > Java(base)' 카테고리의 다른 글

[Java]접근 권한 제어자 public, private, protected, default / getter, setter  (0) 2021.11.30
[Java] Upcasting(업캐스팅), Downcasting(다운캐스팅), instanceof  (0) 2021.11.30
[Java] 다형성 Polymorphism : Overloading(오버로딩), Overriding(오버라이딩)  (0) 2021.11.29
[Java] 상속(inheritance), 자식클래스 생성자, super()  (0) 2021.11.29
[Java] 클래스의 개념, 선언, 사용, 생성자, this  (0) 2021.11.29
    'Java/Java(base)' 카테고리의 다른 글
    • [Java]접근 권한 제어자 public, private, protected, default / getter, setter
    • [Java] Upcasting(업캐스팅), Downcasting(다운캐스팅), instanceof
    • [Java] 다형성 Polymorphism : Overloading(오버로딩), Overriding(오버라이딩)
    • [Java] 상속(inheritance), 자식클래스 생성자, super()
    ID_DI
    ID_DI
    Computer Vision

    티스토리툴바