var 키워드 사용 제약 사항
Java에서 var
키워드를 사용할 때 몇 가지 중요한 제약 사항이 있습니다. 이러한 제약 사항들은 언어의 안정성과 명확성을 유지하기 위한 것입니다.
- 로컬 변수 선언에만 사용 가능
var
는 오직 메서드 내부의 로컬 변수 선언, 생성자, 그리고 초기화 블록에서만 사용할 수 있습니다.
public class MyClass {
// 에러: var는 클래스 레벨에서 사용할 수 없음
private var myField;
public void myMethod() {
// 올바름: 메서드 내부에서 var 사용
var localVar = 10;
}
}
클래스 필드, 메서드 매개변수, 또는 반환 타입에 var
를 사용할 수 없습니다.
- 초기화 필수
var
로 선언된 변수는 반드시 선언과 동시에 초기화해야 합니다.
public void initRequired() {
// 올바름
var initializedVar = 5;
// 에러: 초기화 없이 var 사용
var uninitializedVar;
}
초기화 없이 var
변수를 선언하면 컴파일 오류가 발생합니다.
- 단일 할당만 허용
var
로 선언된 변수는 한 번에 하나의 값만 할당받을 수 있습니다.
public void singleAssignment() {
// 올바름
var singleAssign = 10;
// 에러: 여러 값 할당
var multiAssign = 20, anotherVar = 30;
}
여러 변수를 동시에 선언하고 초기화하려면 각각 별도로 선언해야 합니다.
- null 할당 금지
var
로 선언된 변수에 직접 null
을 할당할 수 없습니다.
public void noNullAssignment() {
// 에러: var에 직접 null 할당
var notAllowed = null;
// 올바름: 명시적 타입으로 null 할당
String allowed = null;
}
null
을 할당해야 하는 경우에는 명시적 타입을 사용해야 합니다.
- 배열 선언 제한
var
를 사용하여 배열을 선언할 수 없지만, 배열을 참조하는 변수를 선언할 수 있습니다.
public void arrayDeclaration() {
// 에러: var로 배열 선언 불가
var[] array = {1, 2, 3};
// 올바름: var로 배열 참조 선언 가능
var intArray = new int[]{1, 2, 3};
}
배열을 직접 선언하려면 명시적 타입을 사용해야 합니다.
- 람다 매개변수 제한
var
를 사용하여 람다 표현식의 매개변수를 선언할 수 없습니다.
public void lambdaParameters() {
// 에러: var로 람다 매개변수 선언 불가
Consumer<String> consumer = (var s) -> System.out.println(s);
// 올바름: 명시적 타입으로 람다 매개변수 선언
Consumer<String> validConsumer = (String s) -> System.out.println(s);
}
람다 매개변수의 경우에는 명시적 타입을 사용해야 합니다.
- 필드와 메서드 매개변수에서의 사용 금지
클래스 필드나 메서드 매개변수로 var
를 사용할 수 없습니다.
public class User {
// 에러: var를 필드로 사용할 수 없음
private var name = "Sue";
public void setName(var name) {
this.name = name;
}
}
이 코드는 컴파일 오류가 발생합니다. var
는 메서드 내부의 로컬 변수 선언에만 사용 가능합니다.
- 초기화 없는 선언 금지
변수를 선언할 때 초기화를 하지 않으면 컴파일러가 타입을 추론할 수 없어 오류가 발생합니다.
public class VarInitializationExamples {
public static void main(String[] args) {
// 1. 스위치 문에서 초기화
int dayOfWeek = 3;
// 에러: 초기화 없이 var 사용
// var greeting;
// switch (dayOfWeek) {
// case 1: greeting = "Monday"; break;
// case 2: greeting = "Tuesday"; break;
// default: greeting = "Other day";
// }
// 올바른 방법: 초기화와 함께 선언
String greeting = "";
switch (dayOfWeek) {
case 1: greeting = "Monday"; break;
case 2: greeting = "Tuesday"; break;
default: greeting = "Other day";
}
System.out.println(greeting);
// 2. 조건부 연산자 사용
boolean isWeekend = false;
// 에러: 초기화 없이 var 사용
// var message;
// message = isWeekend ? "It's weekend!" : "Not weekend yet";
// 올바른 방법: 초기화와 함께 선언
String message = isWeekend ? "It's weekend!" : "Not weekend yet";
System.out.println(message);
}
}
편히 모아진 글 보시려면 아래 위키독스 링크 >>
https://wikidocs.net/book/17111
'JAVA' 카테고리의 다른 글
자바 산술 연산자 [코딩백과 with JAVA] (1) | 2024.12.21 |
---|---|
자바 연산자 소개, 대입 연산자 [코딩백과 with JAVA] (0) | 2024.12.21 |
var 키워드, 사용 예제 [코딩백과 with JAVA] (0) | 2024.12.21 |
배열 다루기(2) [코딩백과 with JAVA] (0) | 2024.12.21 |
배열 다루기(1) (1) | 2024.12.21 |