"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Java에서 Null 문자열을 연결하면 NullPointerException이 발생하지 않는 이유는 무엇입니까?

Java에서 Null 문자열을 연결하면 NullPointerException이 발생하지 않는 이유는 무엇입니까?

2024년 11월 17일에 게시됨
검색:169

Why Doesn\'t Concatenating Null Strings in Java Throw a NullPointerException?

Java에서 Null 문자열 연결

Java에서 Null 문자열을 연결하는 것은 직관적이지 않아 NullPointerException이 발생할 수 있습니다. 그러나 이 작업은 성공적으로 실행되어 "null"이 포함된 문자열과 연결된 문자열이 생성됩니다.

이 작업이 작동하는 이유는 무엇입니까?

Java 언어 사양에 따르면 (JLS) 8, § 15.18.1, null 참조는 문자열 연결 중에 문자열 "null"로 명시적으로 변환됩니다. 이 변환은 메서드 호출 전에 발생하여 NullPointerException이 발생하지 않도록 합니다.

작동 방법은 무엇입니까?

Java 컴파일러는 연결 표현식을 다음과 같은 동일한 시퀀스로 변환합니다. 메소드 호출. s = s "hello"의 경우 컴파일러는 다음과 유사한 코드를 생성합니다.

s = new StringBuilder(String.valueOf(s)).append("hello").toString();

StringBuilder의 추가 메서드는 null 인수를 정상적으로 처리합니다. null이 첫 번째 인수인 경우 String.valueOf()가 호출되어 이를 문자열로 변환합니다.

또는 표현식 s = "hello" s는 다음으로 변환됩니다.

s = new StringBuilder("hello").append(s).toString();

이 경우 추가 메서드는 null을 두 번째 인수로 사용하고 이를 String.valueOf().

[에 위임합니다. &&&]

참고:

Java 컴파일러는 StringBuilder 풀링과 같은 기술을 사용하여 성능을 향상시키기 위해 문자열 연결을 다르게 최적화할 수 있습니다. 따라서 생성된 정확한 동등한 코드는 사용된 컴파일러에 따라 달라질 수 있습니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3