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

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

Mary-Kate Olsen
풀어 주다: 2024-12-02 18:39:11
원래의
702명이 탐색했습니다.

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

Java에서 Null 문자열 연결

Java에서는 Null 문자열을 다른 문자열과 연결해도 NullPointerException이 발생하지 않습니다. 예상하다. 대신 결과는 앞에 "null"이 붙은 새 문자열입니다.

이것이 예상되는 동작인 이유는 무엇입니까?

Java 언어 사양(JLS)에 따르면 ):

"[null 문자열에 대한] 참조가 null인 경우 문자열 'null'(ASCII 문자 n, u, l, l 4개)로 변환됩니다."

따라서 null 문자열은 연결이 이루어지기 전에 자동으로 "null"로 변환됩니다. .

이 행동은 어떤가요? 구현되었나요?

컴파일러는 성능 향상을 위해 문자열 연결을 최적화합니다. StringBuilder 객체를 사용하여 연결 결과를 누적함으로써 이를 수행합니다.

null 문자열을 발견하는 경우:

  • null 문자열이 첫 번째 인수인 경우 String.valueOf( )를 사용하여 null이 아닌 문자열("null")로 변환합니다.
  • null 문자열이 첫 번째 인수가 아닌 경우 null 문자열을 추가합니다. StringBuilder에 추가한 다음 결과에 대해 String.valueOf()를 호출합니다.

Example

다음 코드를 고려하세요.

String s = null;
s = s + "hello";
System.out.println(s); // prints "nullhello"
로그인 후 복사

컴파일러는 이 코드를 다음과 같이 최적화합니다. 해당 항목:

s = new StringBuilder(String.valueOf(s)).append("hello").toString();
로그인 후 복사

s가 null이므로 String.valueOf(s)는 "null"을 반환하며, 이 값은 StringBuilder에 추가되어 문자열로 변환됩니다.

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

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