본문 바로가기

Java/자바 기반 웹 개발자 과정 필기

[200310.12일차] static (정적 변수,클래스변수) && 변수 정리

반응형

 

 

 

static variable : 모든 객체를 통틀어서 하나만 있는 변수

==> 딱 하나만 만들어지는 변수

( 멤버변수와는 다르게 객체를 생성해도 / 생성하지 않아도 딱하나만 존재하는 변수 )

* 객체를 만들지 않아도 이미 존재한다.

 

컴파일 하면서 만들어지는 변수를 정적변수,

컴파일 하면서 만들어지는 것들을 정적(static)이라고 한다.

런타임 전에 만들어지며, 클래스 영역에 만들어진다.

 

 

메모리 할당 되는 그림

class 안에 생기는 변수는 초기값을 가진다.

 

 

 

 

*

객체의 참조변수, 정적변수로 접근 가능하긴 하지만

기본적으로 정적변수는

클래스명. 정적변수로 접근하는게 "더" 맞음

 왜나면... 객체가 생성되던 없던 저 변수는 존재하고 있는 친구니까

 

 

* 정적 변수를 사용하는 상황

=> 모든 부분에서 데이터를 공유해야할 때

==> 여러부분

 

* 주의) 상수와 정적변수는 다르다. 상수는 변하지 않는 수, 정적변수는 값이 변할수 있다.  

 

(상수도 static을 붙이지 않으면 객체가 만들어질때 생성된다.)

 

 

 

메소드에 static을 사용할 때도 마찬가지다.

speed를 쓰고싶다면 변수선언을 할 때 static을 붙이면 사용할 수 있다.

 

 

 

this => 자기자신의 멤버변수를 가리킨다.

 

 

변수 정리

 

public void print() {  // 메소드
	int x;
	int y;
}

 

지역변수 : 메소드 내에서 생성되는 변수

-> 메소드가 종료시 사라짐

-> 스택에 생성

 

 

public class 클래스명 {
	변수타입 변수명;
	private int speed;
    public int mileage;

 

멤버변수 : 해당 클래스에 설계도면에 ㅆ일 변수

( 객체를 만들 때 사용)

필드라고보 부름

클래스 내부에 정의

 

인스턴스 변수 : 객체 안에 생성된 변수

객체가 사라질 때 같이 사라짐 (gc가비지 컬렉터)

 

 

class 클래스명 {
	public static 변수타입 변수명;
	private static final 변수타입 변수명=10; // 의미를 갖는 숫자. 심볼릭 상수
}

 

정적변수 : (클래스변수)

컴파일 때 생성되고, 해당 클래스로 객체를 만들어도 만들지 않아도 1개만 존재

클래스 내부에 스태틱키워드를 포함해서 정의하며 프로그램이 종료될 때 소멸

 

 

 

 

 

 

 

* 가비지 콜렉터의 존재 확인하기

* GC는 굳이 직접 사용하지 않는다. 직접 사용할 필요가 없다.

 

 

 

 

 

 

반응형