클래스변수

자바프로그램은 클래스로만 구성이 되어있다.

메인메소드,변수선언,메소드선언 모두 클래스안에 있어야한다.

전체프로그램에서 변수를 딱 하나 선언해야할 경우에 쓴다.

전체프로그램 모두에서 공유한다.

그렇다면 공유할 변수를 어디에 둬야할까?

A클래스의 진영에만 쓸거면 A에넣으면되겠지만,

공유하려면? A?B?C?

좀더 연관이 깊은 클래스에 넣어주되, 공유하려면 누구나 접근할 수있게 static을 붙여준다.

 

Static 선언의 의미 :

이 변수는 공유할거야.

인스턴스 생성과는 별개로 하나만 존재하고 어디서든 접근가능

위치는 클래스안에 존재한다.

 

선언된 클래스의 모든 인스턴스가 공유하는 클래스 변수

InstNum이 인스턴스별로 존재한다면 값이 1일 것이다.

실제 출력하면 마지막 3이 출력된다.

  

클래스 변수의 접근 방법

클래스 내부 접근

static변수가 선언된 클래스 내에서는 이름만으로 직접 접근 가능

 

클래스 외부 접근

private으로 선언되지 않으면 클래스 외부에서도 접근가능

접근수준 지시자가 허용하는 범위에서 접근가능

클래스 또는 인스턴스의 이름을 통해 접근

 

클래스 변수의 초기화 시점과 초기화방법

클래스 변수는 생성자 기반 초기화 하면 안된다.

이 경우 인스턴스 생성시마다 값이 리셋

 

클래스 변수의 활용의 예

 

원주율 값은 클래스의 인스턴스별로 가질 수도있다.

굳이 인스턴스별로 유지할 필요없다.

인스턴스별로 자기네들이 값을 컨트롤해야할 때 필요하다.

PI값이 메모리에 저장되고 서로 공유한다.

어떤 상황에따라 바뀌어야한다면 참조되는 값만 바뀐다면

날씨정보를 실시간공유하듯이 사용할 수있다.

인스턴스별로 가지고 있을 필요가 없는 변수

값의 참조가 목적인 변수

값의 공유가 목적인 변수

그리고 그 값이 외부에서도 참조하는 값이라면 public으로 선언한다.

'2021 Newlecture > JAVA' 카테고리의 다른 글

StringBuffer클래스  (0) 2021.09.19
Wrapper class  (0) 2021.08.22
String , StringBuffer, StringBuilder 차이점  (0) 2021.08.20
자바 컬렉션과 제네릭 강의  (0) 2021.04.25
자바 총 정리  (1) 2021.04.13
Inner class / Anonymous class  (0) 2021.04.12
인터페이스 구현  (0) 2021.04.12
(추가정리) 추상클래스 와 인터페이스  (0) 2021.04.11

+ Recent posts