当前位置: 首页 > 知识库问答 >
问题:

为什么三进制运算给出nullpointer,而它的ifelse对应方不给出?[副本]

轩辕欣可
2023-03-14
public static void main(String[] args){
    System.out.println(withTernary(null, null)); //Null Pointer
    System.out.println(withIfElse(null, null));  //No Exception
}

private static Boolean withTernary(String val, Boolean defVal){
    return val == null ? defVal : "true".equalsIgnoreCase(val);
}

private static Boolean withIfElse(String val, Boolean defVal){
    if (val == null) return defVal;
    else return "true".equalsIgnoreCase(val);
}
java version "1.6.0_65"
Java(TM) SE Runtime Environment (build 1.6.0_65-b14-462-11M4609)
Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-462, mixed mode)

共有1个答案

左丘涵畅
2023-03-14

以下是规范(§15.25.2)中的相关引用:

布尔条件表达式是独立的表达式(§15.2)。

布尔条件表达式的类型确定如下:

return val == null ? null : "true".equalsIgnoreCase(val);

>

  • 具有booleanboolean类型的独立形式(§15.2)的表达式。

    带圆括号的布尔表达式(§15.8.5)。

    Boolean的类实例创建表达式(§15.9)。

  •  类似资料:
    • 问题内容: 我在下面的一个实例中得到了NullPointerException,而其对应实例运行平稳。 在线版 在线版本中的台词相反,其输出从,然后失败。 我正在使用以下Java版本 问题答案: 这是该规范的相关报价(第15.25.2节): 布尔条件表达式是独立表达式(第15.2节)。 布尔条件表达式的类型确定如下: 如果第二和第三操作数均为type ,则条件表达式的类型为。 否则,条件表达式的类

    • 当我试图将文本附加到TextArea(fx:id=“text”)时,会出现一个错误。我写这篇文章是为了从文本文件中向TextArea追加文本,即将文本文件的内容显示到TextArea中。我是否必须在controller类中创建一个新的TextArea变量,并将其作为子级添加到anchorpane父级中? .java文件:

    • 问题内容: 为什么这两个操作(分别)给出不同的结果? 在最后一种情况下,实际上存在无限递归。和一样。为什么与操作不同? 问题答案: 解释“为什么”: 该操作将数组元素添加到原始数组。该操作将数组(或任何对象)插入原始数组的末尾,从而导致对该点的 self引用 (因此无限递归)。 此处的区别在于,通过连接元素来添加数组时,+操作的作用是特定的(与其他数组一样重载,请参见本章的序列)。但是,appen

    • 我通过在public static void main()方法中实现接口I创建了匿名类。因此,Java8对于抽象方法test()的实现是从C类的imple()方法中提供的。 因此,在public static void main()方法printing_interface.getclass(),我得到了 但最终它打印的是package_path.C(告诉我C是类名)。这怎么可能?不应该再次打印pa

    • 我一直在研究一些涉及将ASCII值转换为字符串的问题。 如果我使用此代码,我会以的形式输出,这是意料之中的。 但是,如果我这样更改代码: 当我尝试编译它时,会显示以下错误: 两种代码之间的唯一区别是,在第1种代码中,我使用的是t=I‘a’ ,在秒时,<代码>t=t i“a” 。 有人能告诉我第二段有什么问题吗?