본문 바로가기
IT관련/Java

[Java] 변수의 종류(클래스 변수/인스턴스 변수/지역 변수/매개 변수)

by 확고 2022. 1. 5.
728x90
반응형

 

변수의 선언위치에 따라 구분

No 변수명 선언위치 설명
1 클래스 변수
(class variable)
(= static 변수)
클래스 영역

(클래스 외부
사용 가능 여부
- 접근 제어자에
따라 다름)
클래스 영역에서 타입 앞에 static이 붙는 변수
객체를 공유하는 변수로 여러 객체에서 공통으로 사용하고 싶을 때
정의

※ 접근 방법 : 클래스명.클래스변수명
    ex ) class Exem에 static 변수로 int 형태의 age가 있으면
          Exem.age = 1; 이런 식으로 접근이 가능
          인스턴스 변수의 경우 객체(=인스턴스)를 생성하고
          참조 변수를 통해서만 접근이 가능한데 클래스 변수는
          객체를 생성하지 않아도 클래스명으로 바로 접근이 가능함
2 인스턴스 변수
(instance variable)
클래스 영역에서 static이 아닌 변수
개별적인 저장 공간으로 객체/인스턴스마다 다른 값 저장 가능
→ 객체(=인스턴스)를 여러 개 생성했다면 각각의 참조 변수명으로
    접근이 가능하고 각각에 값을 저장할 수 있음
    ★ 클래스 변수는 객체를 공유한다면 인스턴스 변수는 객체를
    공유하지 않음

※ 접근 방법 : 객체(=인스턴스) 생성 후 참조 변수명으로 접근
    ex) class Exem에 String name(=인스턴스 변수)이 있으면
    먼저 클래스명으로 객체/인스턴스 생성하고
    Exem e = new Exem( );
    e.name = "확고"; 이렇게 접근할 수 있음
    Exem e2 = new Exem( );
    e2.name = "확Go"; 

(부연 설명) 객체/인스턴스 생성만 하고 참조 변수가 없는 경우
가비지 컬렉터에 의해 자동 제거됨
3 지역 변수
(local variable)
메서드 영역

(접근 제어자를
사용하지 않음)
메서드 내에서 선언되고 메서드 수행이 끝나면 소멸되는 변수
초깃값을 지정한 후 사용할 수 있음
ex) int i = 0;
(조건문, 반복문 블록 내에 선언한 지역변수가 있는 경우
수행이 끝나면 소멸되므로 계속 사용할 경우 블록 밖에서 선언 필요)
4 매개 변수
(= parameter)
메서드 호출 시 '전달하는 값'을 가지고 있는 변수
(지역 변수처럼 선언된 곳부터 수행이 끝날 때까지 유효함)
ex)
int sum;
sum = add(1,2); → (1) add 메서드 호출하면서 1,2 값 전달
                         (4) 리턴 값 c의 값이 int sum에 저장
System.out.print(sum); → (5) sum에 저장된 값 3이 출력됨

static int add(int a, int b){ → (2) 정수(1,2) 넘어오니까 int로 받아줌
                 ★ a, b가 호출 시 '전달하는 값'을 가지고 있는 매개 변수
 int c = a+b;
 return c; → (3) 수행 끝나고 리턴 값 c를 가지고 호출한 곳으로 돌아감

728x90
반응형

댓글