Java 对象==null vs布尔==false

Java 对象==null vs布尔==false,java,performance,object,if-statement,boolean,Java,Performance,Object,If Statement,Boolean,如果尚未指定对象,则需要指定该对象 Object obj; While(true){ if(obj == null) obj = new Object(); //do other things } 或 这两种检查方法中哪一种是更好的做法?有时对象可能会被分配为null 因此,检查null和assign。那很好。走第一条路 看起来根本不需要布尔值。但这里是gotach,如果您不想重新分配它,请使用布尔值并锁定它(这会记住我的final关键字;)。两者之间可能没有任何性能差异,如果

如果尚未指定对象,则需要指定该对象

Object obj;
While(true){
    if(obj == null) obj = new Object();
    //do other things
}


这两种检查方法中哪一种是更好的做法?

有时对象可能会被分配为
null

因此,检查null和assign。那很好。走第一条路


看起来根本不需要布尔值。但这里是gotach,如果您不想重新分配它,请使用布尔值并锁定它(这会记住我的
final
关键字;)。

两者之间可能没有任何性能差异,如果您想在方法中进一步重用条件
IsobaSigned
,请使用局部变量进行检查,否则,在
if
块中将其检查为
null
应该是自解释的

上下文中最好的语法是将赋值从循环中拉出:

在更详细的例子中,例如


一般情况下,您必须使用
布尔标记。

我更喜欢第一个:

Object obj;
while(true){
    if (obj == null) obj = new Object();
    //do other things
}
在第二个示例中,您将
布尔值
对象
耦合,这种方法也可能导致错误,因为您可能会意外地将
布尔值
设置为
,而不实例化
对象

通过这种方式,您可以假设已根据
布尔值实例化了
对象
,您将得到
NullPointerException

第二种方法将抛出NullPointerException,因为您使用的是
布尔值的对象版本(
java.lang.Boolean

而是使用
布尔值


但是,我建议使用第一种方法,否则可能会有对象赋值和
标志不同步的风险。

编译器将不允许您使用第一种方法编写,并且它会抱怨“变量可能尚未初始化”。这将迫使您将其设置为null。在这种情况下,再次检查相同的null是多余的。不过第一个更好!因为我们应该使用尽可能少的变量

Object obj=null;
while(true){
    if(obj == null) obj = new Object();
    //do other things
}

两者都使用了不正确的语法,而且它们做的事情也不一样。应用程序是多线程的吗?你不能使用单例模式吗?@JordiCastilla不,不是问题是我不知道什么时候我会收到分配给它的对象,它是onLocationChanged-谷歌地图v2@user3553447那么为什么需要检查呢?只要在接收对象时分配它,如果接收的对象为空,分配您自己的。我想将其从第一个位置设置为接收到的位置。
  Object obj;                    // obj contains trash, not necessary null
  Boolean isObjAssigned = false; // note "= false;"

  if (...) { // obj can be either assigned or not (depending on the condition)
    obj = ...
    isObjAssigned = true; // do not forget this
  }

  while (true) {
    if (!isObjAssigned) {
      obj = new Object();
      isObjAssigned = true; // do not forget this in order not to reassign obj 
    }

    // do other things
  }
Object obj;
while(true){
    if (obj == null) obj = new Object();
    //do other things
}
Object obj=null;
while(true){
    if(obj == null) obj = new Object();
    //do other things
}