ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java-8] 자바 변수 선언과 초기화
    Java 2020. 11. 18. 11:49

     

    저번에는 리터럴과 각 변수의 특징에 대해서 알아보도록 하였다. 이제는 변수를 어떻게 선언하는지 그리고 초기화는 어떻게 진행되는지에 대해서 알아보도록 하자. 

     

    먼저 이 주제는 타입에대해서 얘기하기전에 먼저 설명하는게 좋지 않았을까 라는 생각을 하지만.. 각설하고 바로 얘기를 해보자. 

     

    1. 변수 선언

     

    변수를 사용하기 위해서는 변수를 선언해야 한다. 변수를 선언하는건 간단하다.

     

    이렇게 처음에 타입을 선언을 하고 바로 뒤에 변수 이름을 집어 넣으면 된다. 뭐 사실 변수를 ‘선언'만 하는 건 크게 어렵지 않다. 물론 여러개의 변수를 선언하는 것도 가능하다.

     

     

    변수를 선언하는건 크게 어렵지 않으니, 네이밍 컨벤션에 대해서 얘기해보자 물론 여러가지 방식이 있다. 지금 설명하는 얘기는 ‘통상’적으로 말하는 자바 언어의 네이밍 컨벤션이다. 물론 기업마다 다르고, 진행하는 프로젝트마다 다룰 순 있다. 

     

    자바 변수이름 규칙

    Java Variable naming convention

     

    예약어를 사용할 수 없다는건, 자바에서 지원하는 예약어를 변수로 사용하게 되면 컴파일 단계시 문제가 발생할 수 있다. 

     

    예약어 종류

    예약어 분류와 종류

    다음과 같다. 

     

    이제 변수를 선언하는 법에 대해서 대강 알아봤는데, 이제 변수를 선언하는 곳 마다 부르는 이름이 달라지게 된다.

     

    변수 종류

    변수 종류

    변수의 종류에는 다음과 같이, 필드(멤버,전역 변수) 와 지역변수로 나누어져 있는데 이 둘은 선언하는 장소가 다르다.

    변수 종류 및 예시

     

    즉 맴버변수는 클래스에 생성한 변수를 말을 하며, 지역변수는 메소드 안에서 (지역적으로) 선언한 변수를 말한다. 

     

    또한 각 맴버변수와 지역변수의 활동범위도 달라지는데, 이는 나중에 변수의 생명주기에서 알아보도록 하자. 

     

    1. 변수 초기화

     

    다시 들어와서 초기화에 대해서 알아보자. 일반적으로 우리가 초기화를 할 때는 변수를 선언하고 바로 뒤에  ‘=’ 대입 연산자를 사용해서 변수에 데이터를 집어 넣었다. 

    명시적 초기화

    명시적 초기화 예시

     

    이런식으로 말이다. 이렇게 선언을 하고난 다음에 바로 값을 집어넣는 걸 명시적 초기화 라고 한다.

     

    그럼 변수를 처음에 선언했을 때에는 아무값도 들어가 있지 않은걸까? 반은 맞고 반은 틀리다. 

    필드에서, 즉 맴버변수에서는 선언을 하자마자 0으로 초기화가 되어있고, 지역 변수에는 아무것도 들어가 있지 않는다. 

    다음과 같이 말이다. 

    블록 초기화

     

    다음은 변수를 초기화하는 또 한가지의 방법인, 초기화 블록이다. 말 그대로 초기화를 할 수 있는 블록을 하나 생성하는 것이다. 

     

    블록 초기화 종류와 예시

    이런식으로 블록을 나누어서 초기화를 하는 이유는 명시적 초기화의 한계가 있기 때문이다. 저렇게 필드에서 바로 초기화를 시키면, 복잡한 로직으로 값을 변수에 넣기 제한이 있기 때문에 블록 방식을 사용하게 된다. 

     

    • 일반적인 초기화 블록 : Class가 new 를통해 인스턴스를 생성하는 순간 초기화가 진행이 된다.
    • 정적 초기화 블로 : JVM이 클래스로더로 로딩 시점에 초기화 진행

     

    이 결과를 확인해보면,

     

    인스턴스가 생성되기전에 정적변수 var를 20으로 초기화하는 걸 알 수 있다. 

    이 외에도 생성자 메소드에서 초기화하는 방법 등 다양한 방법이 있는데, 그건 클래스를 다루면서 확인해 보자 : )

     

    > [Java-9] 자바 타입변환, 형변환

     

    댓글

Designed by Tistory.