JAVA 변수 구분

김운채·2023년 5월 10일
0

Java

목록 보기
11/11

1. 데이터 타입

메모리에 저장되는 방식에 따라 기본형 변수, 참조 변수로 나뉜다.

1) 기본형 변수 (Primitive variable)

  • 프로그래밍 언어에서 미리 만들어 둔 타입(가장 많이 쓰이는 데이터 타입을 쉽게 사용하기 위함)
  • 변수에 할당된 메모리에 직접 값이 저장된다.
  • 비교적 단순 데이터
  • 예) int, double, boolean, char 등

2) 참조형 변수

  • 여러 데이터들이 복합적으로 모여있는 데이터
  • 변수에 할당된 메모리에 데이터의 ‘레퍼런스’(주소값)가 저장된다.
  • 비교적 복합적인 데이터
  • 예) String, System, ArrayList 등
  • 사용자가 얼마든지 새로운 클래스(데이터 타입)를 만들어 낼 수 있기 때문에 무한하다.

👁‍🗨 구분 방법
자료형의 이름이 소문자로 시작 - 기본형 (예 : int)
자료형의 이름이 대문자로 시작 - 참조형 (예 : String)


2. 선언 위치에 따른 분류

변수는 선언위치에 따라 크게 멤버변수지역변수로 나뉘고, 멤버변수는 클래스변수, 인스턴스 변수로 나뉜다.

1) 클래스 영역

1-2) 멤버변수

  • 클래스 영역에 선언된 변수로, ‘클래스변수, 인스턴스변수’를 통틀어 칭한다.

① 인스턴스 변수

  • 인스턴스를 생성할 때 만들어지므로, 사용하기 위해서는 인스턴스를 먼저 생성해야 한다.
  • 인스턴스는 독립적인 저장공간을 가지므로 서로 다른 값을 가질 수 있다.
  • JVM내에 힙 영역에 생성된다

② 클래스 변수

  • 인스턴스변수 앞에 static을 붙이면 선언 된다.
  • 클래스변수는 인스턴스를 생성하지 않고도 바료 사용할 수 있다는 특징이 있으며,
    '클래스 이름.클래스 변수' 와 같은 형식으로 사용한다.
  • 인스턴스마다 독립적인 저장공간을 갖는 인스턴스 변수와는 달리, 클래스 변수는 모든 인스턴스가 공통된 저장공간(변수)을 공유하게 된다. => 항상 공통된 값을 갖는다.
  • 클래스변수는 클래스가 메모리에 '로딩(loading)' 될 때 생성되어 프로그램이 종료될 때까지 유지된다.
  • JVM내에 메소드 영역에 생성된다.

2) 메소드 영역

2-1) 지역변수(로컬변수)

  • 메서드 내에 선언되어 메서드 내에서만 사용 가능, 메서드가 종료되면 소멸되어 사용할 수 없다.
  • for문 또는 while문의 블럭 내에 선언된 지역변수는, 지역변수가 선언된 {블럭}내에서만 사용 가능하며, 블럭을 벗어나면 소멸되어 사용할 수 없게 된다.
  • JVM내에 스택 영역에 생성된다.

매개변수(파라미터)

  • 메소드에서 입력값을 받을 때 사용되는 변수
  • 인자(파라미터)값은 호출 시 메소드 입력부의 넣는 값이며 이 값은 매개변수에 복사되어 대입된다.
  • 매개변수도 매소드 내에 선언된 것으로 간주하므로 지역변수이다.
public class test {

	int iv;                // 인스턴스 변수
	static int cv ;        // 클래스 변수

	public void method() {
		int iv;              // 지역 변수
	}
	
	public void makeSum(int startVal, int endVal) {   // 매개 변수
}

참고자료 :

0개의 댓글