이전 버전의 Java에서는 밑줄(underscore, "_") 문자를 식별자(identifier)로 사용하거나 변수 이름을 만들 때 자유롭게 활용할 수 있었습니다. 하지만 Java 9부터는 상황이 달라졌습니다. 밑줄 문자가 예약 키워드(reserved keyword)로 지정되면서 더 이상 식별자나 변수 이름으로 사용할 수 없게 되었습니다.
만약 단일 밑줄 문자를 식별자로 사용하면 프로그램이 컴파일되지 않고 컴파일 타임 오류(compile-time error)가 발생합니다. 밑줄이 이제 키워드로 분류되기 때문에 Java 9 이상 버전에서는 변수 이름으로 사용하는 것이 금지되었기 때문입니다.
예제 코드
public class UnderscoreKeywordTest {
public static void main(String args[]) {
int _ = 50
System.out.println(_);
}
}실행 결과
UnderscoreKeywordTest.java:3: error: as of release 9, '_' is a keyword, and may not be used as an identifier int _ = 50; ^ UnderscoreKeywordTest.java:4: error: as of release 9, '_' is a keyword, and may not be used as an identifier System.out.println(_);
위 실행 결과에서 볼 수 있듯이, 컴파일러는 "release 9부터 '_'는 키워드이므로 식별자로 사용할 수 없다"라는 오류 메시지를 출력합니다. 따라서 Java 9 이상 환경에서 코드를 작성할 때는 변수 이름에 밑줄 한 문자를 사용하지 않도록 주의해야 합니다. 참고로 이러한 변경은 람다 표현식에서 사용하지 않는 매개변수를 나타내는 등 향후 언어 기능 확장을 위해 도입된 것으로, Java 21부터는 익명 패턴 변수와 같은 용도로 공식 지원되고 있습니다.