我是靠谱客的博主 复杂御姐,最近开发中收集的这篇文章主要介绍java if int_java – 将null返回为int三元运算符允许的int,而不是if语句,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

让我们看看以下代码段中的简单Java代码:

public class Main {

private int temp() {

return true ? null : 0;

// No compiler error - the compiler allows a return value of null

// in a method signature that returns an int.

}

private int same() {

if (true) {

return null;

// The same is not possible with if,

// and causes a compile-time error - incompatible types.

} else {

return 0;

}

}

public static void main(String[] args) {

Main m = new Main();

System.out.println(m.temp());

System.out.println(m.same());

}

}

在这个最简单的Java代码中,即使函数的返回类型是int,temp()方法也不会发出编译错误,我们试图返回值null(通过语句返回true?null:0;).编译时,这显然会导致运行时异常NullPointerException.

但是,如果我们使用if语句(如在same()方法中)表示三元运算符,则会出现同样的错误,这会发出编译时错误!为什么?

解决方法:

编译器将null解释为对Integer的空引用,对条件运算符应用自动装箱/取消装箱规则(如Java Language Specification, 15.25中所述),并快乐地进行操作.这将在运行时生成NullPointerException,您可以通过尝试来确认它.

标签:java,nullpointerexception,conditional-operator,autoboxing

来源: https://codeday.me/bug/20190911/1804637.html

最后

以上就是复杂御姐为你收集整理的java if int_java – 将null返回为int三元运算符允许的int,而不是if语句的全部内容,希望文章能够帮你解决java if int_java – 将null返回为int三元运算符允许的int,而不是if语句所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部