1 분 소요

강의를 들으면서 var타입으로 변수를 받는 내용을 보고, 학습해본 내용이다.

공부해본 결과 아직까지는 해당 내용에 대한 특별한 장점을 느끼지는 못하겠다. 그런데도 만들어놓았다는건 필요성이 분명히 있다는 것이므로, 시야가 넓어지면 다른 장점을 발견할 수 있겠지.


1. var 변수선언

  • Java 10에서부터 도입됨

  • 변수 선언 시 타입 생략이 가능하며, 컴파일러가 타입을 추론.

    • 컴파일러가 추론한다는 뜻은 즉, 컴파일 시점에 타입을 확인한다는 것이기 때문에 Runtime에는 추가연산을 하지 않아 성능에 영향을 주지 않음!
    String str = "Hello, world";
      
    var str = "Hello, world";
    

2. var 변수타입의 특징

  • 여러 클래스 선언이 가능.
var str = "Hello, world";

// 이 경우는 ArrayList<Object> 로 선언됨.
var list = new ArrayList<>(); 

// 반복문도 사용 가능
for (var item : list) {
    
} 
  • 지역변수에서만 사용할 수 있음.
class varType {
    public var str = "Hello, world"; // 컴파일 에러
    public var list = new ArrayList<String>(); // 컴파일 에러
}
  • 컴파일러가 타입추론이 애매할 때는 컴파일 에러를 발생시킴.

    • 때문에 초기화가 반드시 필요.
    • null로 초기화 할 수 없음.
    • 배열에도 사용할 수 없음.
    • Lamda에도 사용할 수 없음.
    var str; // 초기화 필요. 컴파일 에러
    var str = null; // 컴파일 에러
    var array = {1, 2, 3}; // 컴파일 에러
    var f = () -> { }; // 컴파일 에러
    

3. 생각해볼 여지

  • var타입으로 선언한다고 해서 중간에 다른 변수를 넣을 수 없음. 한번 초기화된 var 타입은 이미 바운더리 안에서 타입값이 특정됨.

    image-20220925120908605

    -> 그렇다면 사용할 특별한 이유가 있을까?

  • var는 기본타입이 아니기 때문에 변수명으로도 사용되어질 수 있음.

    image-20220925121108698

    -> var 타입과 헷갈릴 가능성이 있음.

    -> 코드를 읽는 경우 굳이 var타입으로 받아서 가독성을 낮출 필요가 있을까?


마지막 수정일시: 2022-09-25 12:14

카테고리:

업데이트:

댓글남기기