Java JCombobox和String.equals(null)

Java JCombobox和String.equals(null),java,string,null,equals,jcombobox,Java,String,Null,Equals,Jcombobox,这是我的密码: if (ChoixPortCom.equals(null) == true ) JOptionPane.showMessageDialog(null, "Choose Port COM"); 我得到了著名的java.lang.NullPointerException 我的JCombobox是这样填充的: 1st->nothin/空null无字符串无 第二->通信1 3nd->COM2 为什么“如果”条件不正确?应该正确 if (ChoixPortCom == null) 现

这是我的密码:

if (ChoixPortCom.equals(null) == true ) JOptionPane.showMessageDialog(null, "Choose Port COM");
我得到了著名的java.lang.NullPointerException

我的JCombobox是这样填充的: 1st->nothin/空null无字符串无 第二->通信1 3nd->COM2

为什么“如果”条件不正确?

应该正确

if (ChoixPortCom == null)
现在,如果ChoixPortCom为null,它将抛出一个null指针,因为您正试图对null引用调用一个方法(equals)

我认为最好的做法是始终使用括号:

if (ChoixPortCom == null) {
    JOptionPane.showMessageDialog(null, "Choose Port COM");
}
choixPortCom.equals(null)
永远不会为真。如果
choixPortCom
不是
null
,则表达式将按预期返回false。如果
choixPortCom
null
,则表达式将抛出
NullPointerException
,因为您正试图调用
null
上的方法;这就是你的情况。检查
null
的适当方法是:

if (choixPortCom == null)  // I've assumed a more common naming convention
Java 7中还有一个
Objects
类,它有一些有用的
null
检查方法。例如:


如果ChoixPortCom是一个字符串,你可以这样做吗?当然可以。字符串也是一个对象。是的,你是对的,它可以工作。我使用了String.equals(),因为当我与字符串比较时,我们告诉过我这一点。不要紧,谢谢。请遵循java代码惯例,变量名称以小写开头,并遵循驼峰式大小写样式。然后,比较将是字符串值,如stringObject.equals(“D3fman”);更好的是:“D3fman”。等于(stringObject);(现在,如果stringObject==null,则不会得到null指针)
Objects.requireNonNull(choixPortCom, "input can't be null!")