>Java >java지도 시간 >If 문에서는 `same()`이 발생하는 반면 `temp()` 메서드에서 Null을 반환하면 Java에서는 컴파일러 오류가 발생하지 않는 이유는 무엇입니까?

If 문에서는 `same()`이 발생하는 반면 `temp()` 메서드에서 Null을 반환하면 Java에서는 컴파일러 오류가 발생하지 않는 이유는 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-04 22:00:03815검색

Why Does Returning Null from a `temp()` Method Not Cause a Compiler Error in Java, While `same()` with an If Statement Does?

null을 int로 반환

Java에서 temp() 메서드는 int에 대해 null을 반환하더라도 컴파일러 오류를 발생시키지 않습니다. same()은 if 문으로 표현될 때 수행됩니다. 이러한 불일치는 null 반환 값에 대한 컴파일러의 해석으로 인해 발생합니다.

삼항 연산자

삼항 연산자의 경우 컴파일러는 null을 정수에 대한 null 참조로 처리합니다. 오토박싱/언박싱 규칙(Java 언어 사양 15.25)을 따릅니다. 결과적으로 int가 Integer로 박싱되어 다시 변환되어 null 반환 값이 허용됩니다. 그러나 이렇게 하면 런타임에 NullPointerException이 생성됩니다.

if 문

if 문을 사용할 때 컴파일러는 null과 int 사이에 호환되지 않는 유형을 적용합니다. 이는 int 반환 값을 기대하며 autoboxing/unboxing 변환을 허용하는 삼항 연산자와 달리 null 할당을 허용하지 않습니다.

위 내용은 If 문에서는 `same()`이 발생하는 반면 `temp()` 메서드에서 Null을 반환하면 Java에서는 컴파일러 오류가 발생하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.