Study/Java

[JAVA] 클래스 변수, 인스턴스 변수, 지역 변수

토기발 2022. 10. 12. 23:07

 

이것도 면접 질문에 나왔던 것이라 정리해 본다.

 

 

public class Sample{			
			int instanceV; //인스턴스변수
			static int classV; //클래스변수
			
			void method(){
				int localV; //지역변수
			}
}

전역변수(Global variable)

클래스 영역(메소드 밖)에 선언된 변수를 의미한다.
프로그램이 실행되면 메모리 공간에 데이터를 저장한다.

인스턴스 변수 (instance variable) (= 객체 변수)

-인스턴스가 생성될 때 메모리에 할당됨

-클래스 내에 선언된 변수

-클래스 변수와 달리 공유되지 않는다.

-객체 생성 시마다 매번 새로운 변수가 생성된다.

 

클래스 변수 (class variable) (= static변수)

-클래스가 메모리에 올라갈 때 메모리에 할당됨

-static 예약어가 선언된 변수

-모든 인스턴스가 공통된 저장공간을 공유한다.

-클래스가 여러 번 생성되어도 static 변수는 처음에만 생성된다.

 

지역변수 (Local variables)

- 메서드가 실행될 때 메모리상의 스택(stack) 영역에 저장되며 종료되면 소멸되어 사용할 수 없다.- 지역변수는 변수가 선언된 블록 내에서만 유효하고, 블록이 종료되면 메모리에서 사라져 사용할 수 없게된다. (for문 while문도 동일)

 

 

class Java{			
			int instanceV = 4; //인스턴스변수
			static int classV = 5; //클래스변수
			
			void method(){
				int localV = 6; //지역변수
			}
}

public class Sample{
	public static void main(String[] args) {
		System.out.println("클래스 변수 값: "+Java.classV); // 클래스 변수는 객체생성 안해도 됨
		Java java1 = new Java();
		//System.out.println("인스턴스 변수 값:"+java.instanceV); //인스턴스 변수는 객체생성 안하면 오류남
		
		java1.instanceV = 100;	//인스턴스 변수 값 변경
		java1.classV = 200; 	//클래스 변수 값 변경

		System.out.println("변경한 인스턴스 변수 값: "+java1.instanceV);
		System.out.println("변경한 클래스 변수 값: "+java1.classV);
		
	}
	
}

 

 

클래스 변수는 객체를 생성하지 않고도 다른 클래스에서 호출이 가능하다.

인스턴스 변수는 다른 클래스에서 사용하려면 객체를 생성해야 한다.

 

 

 

참고출처:

https://itmining.tistory.com/20

https://dding9code.tistory.com/51

https://sublivan.tistory.com/5

'Study > Java' 카테고리의 다른 글

[JAVA] 내부 클래스  (0) 2022.11.13
[JAVA] for문 축약(for each문), if-else 축약(삼항 연산자)  (0) 2022.10.18
[JAVA] 생성자  (0) 2022.10.10
[자료구조] 배열과 리스트의 차이  (0) 2022.10.07
SQL관련 용어 정리  (0) 2022.04.18