gpt4 book ai didi

java - 为什么会抛出空指针异常?

转载 作者:行者123 更新时间:2023-12-01 07:28:31 24 4
gpt4 key购买 nike

我已经在这里问过一个矛盾的问题 Why is this not throwing a NullPointerException?

但这是我想了解的不同类型和行为之一,请查看下面的示例

package com;

public class test {

public static void main(String[] args) {
Abc abc = null;

//Scenario 1
System.out.println("ERROR HERE " + abc!=null?abc.getS1():""); //This is throwing null pointer exception

//Scenario 2
String s1 = abc!=null?abc.getS1():"";
System.out.println("This is fine " + s1);
}
}

class Abc {
String s1;

public String getS1() {
return s1;
}

public void setS1(String s1) {
this.s1 = s1;
}


}

所以这里场景2可以正常工作,但为什么当我在场景1中尝试与其他字符串连接时它不起作用?

最佳答案

"ERROR HERE " + abc!=null?abc.getS1():"" 

相当于

("ERROR HERE " + abc!=null)?abc.getS1():""

(它的计算结果永远不会为 false,因此您会得到 NPE)

你的意思是:

"ERROR HERE " + (abc!=null?abc.getS1():"")

关于java - 为什么会抛出空指针异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20548129/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com