[Java] 변수 선언 순서 헷갈릴 때 참고하기 (지역변수/멤버변수)

오랜만에 하는 포스트!! JSP 공부하다가 자바 기초를 잠깐 훑었는데 헷갈리는 거 있어서.

목차

  1. 소개
  2. 예제
  3. 결과

소개

자바에서는 변수가 크게 지역변수멤버변수로 나뉜다.

  • 지역 변수: 선언한 메소드 내부에서만 유효한 변수 (매개변수 포함)
  • 멤버 변수: 클래스에 속하는 변수. 클래스에 속한 모든 메소드에서 사용 가능. 초기화 안 하면 NULL 할당.
  • 멤버변수는 인스턴스 변수클래스 변수로 크게 나눌 수 있다.
  • 인스턴스 변수: 변수가 인스턴스(객체)에 속할 때. 즉, 객체가 호출될 때 마다 저장공간이 할당되는 변수
  • 클래스 변수: 하나의 저장공간을 할당하여 여러 객체가 하나의 값을 공유하는 변수

아래 예제↓를 보면서 이해해보자!

예제

public class Member {
    String a; // 멤버 변수
    String b = "멤버변수입니다"; // 멤버 변수

    public Member() {
        String a = "지역변수입니다."; // 지역변수
        System.out.println(a);
    }

    public static void main(String[] args) {
        Member member = new Member(); // 지역 변수 a 출력
        System.out.println("초기화하지 않은 멤버변수: "+member.a); // 멤버 변수 a 호출
        System.out.println("초기화한 멤버변수: "+member.b); // 멤버 변수 b 호출
    }
}

결과

지역변수입니다.
초기화하지 않은 멤버변수: null
초기화한 멤버변수: 멤버변수입니다


(생성자) 메소드 안에 선언한 지역변수 a는 메소드가 끝나고 사라졌다.
그래서 두 번째 줄 a를 출력한 값이 NULL이 되는 것.

출처

#위키피디아 #JSPStudy의 JSP & Servlet 웹 프로그래밍 입문 + 활용 2판