Notice
Recent Posts
Recent Comments
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Archives
관리 메뉴

함번보고 두번보고

[Java] 변수(Variable) - local, instance, static 본문

Back-End/Java

[Java] 변수(Variable) - local, instance, static

Hamstar_ 2020. 1. 27. 22:17

먼저 변수를 정리하기에 앞서 변수의 정의를 집고 넘어가자.

 

변수(Variable)란, 프로그램이 실행되는 동안 값(Value)을 보관하는 용기(Container)이자, 메모리 위치의 이름이다.

 

Java 변수에는 데이터 유형(Primitive, non-primitive)과 함께 할당된 세 가지 유형의 변수가 있다.

 

local, instance, static

 

먼저 변수의 개념을 그려본 후, 각각의 유형에 따른 차이점을 알아보도록 하자.

 

1. 변수(Variable)


변수는 기본적으로 메모리에 할당된 예약된 영역의 이름 즉, 메모리 위치의 이름이다.

 

Variable은 그 가치가 바뀔 수 있다는 뜻의 "달리하다(vary) + 가능(able)"을 합친 단어로

 

변수에는 다양한 값(Value)이 들어갈 수 있다.

int data = 24;

 

2. 변수 유형


1. 지역 변수(Local Variables)

메소드 내부에 선언된 변수를 지역(local) 변수라고 한다. 지역 변수는 해당 메소드 내에서만 사용할 수 있으며 같은 클래스 내의 메소드일지라도 그 메소드는 다른 메소드 안에 있는 지역 변수의 존재조차 모른다.
*로컬 변수는 정적(static) 키워드로 선언할 수 없다. 인스턴스 변수만 가능.

 

2. 인스턴스 변수(Instance Variables)

클래스 내부와 메소드 본문 외부에 선언된 변수를 인스턴스(instance) 변수라고 한다. 이 값은 생성된 객체마다 다르며 각 객체 간에 공유되지 않기 때문에 인스턴스 변수라고 불린다.

 

3. 정적 변수(Static Variables)

정적(static) 키워드로 선언되는 변수를 정적 변수라고 한다. 정적 변수는 단일 복사본을 생성하고 같은 클래스의 모든 인스턴스 간에 공유할 수 있다.

*정적 변수에 대한 메모리 할당은 클래스가 메모리에 로드될 때 한 번만 발생한다. 즉, 객체를 생성하지 않아도 그 정적변수에는 접근이 가능하다는 것을 의미한다.

 

3. 예시


public class JavaVariable {
	
	public static int num1 =1; // instance + static variable
	public int num2 = 4; // instance variable
	
	public static void staticMethod ( ) { // static method
		System.out.println("This is a static Method!"); 
	}
	
    	public int localMethod ( ) { // normal method
		int num3 = 3; // local variable
          	return num3;
	}
    
	public static void main(String args[]) {	
		System.out.println(JavaVariable.num1); // JavaVariavble 객체를 생성하지 않아도 접근이 가능하다.
	}
}

 

1

 

Comments