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

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

DDD
풀어 주다: 2024-11-19 10:10:03
원래의
995명이 탐색했습니다.

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

위 내용은 Java에서 Null 문자열을 연결하면 NullPointerException이 발생하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿