var 변수타입
강의를 들으면서 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 타입은 이미 바운더리 안에서 타입값이 특정됨.
-> 그렇다면 사용할 특별한 이유가 있을까?
-
var는 기본타입이 아니기 때문에 변수명으로도 사용되어질 수 있음.
-> var 타입과 헷갈릴 가능성이 있음.
-> 코드를 읽는 경우 굳이 var타입으로 받아서 가독성을 낮출 필요가 있을까?
마지막 수정일시: 2022-09-25 12:14
댓글남기기