gpt4 book ai didi

java - 不同的空比较?

转载 作者:行者123 更新时间:2023-12-02 04:26:21 25 4
gpt4 key购买 nike

这两个代码有什么区别?:

代码 1

在我的第一个代码中,我有一个变量,我直接将其设置为 null。

String prove = null;

Toast.makeText(getApplicationContext(), prove, Toast.LENGTH_LONG).show();

if(prove == null)
{
Toast.makeText(getApplicationContext(), "correct", Toast.LENGTH_LONG).show();
}
else
{
Toast.makeText(getApplicationContext(), "incorrect", Toast.LENGTH_LONG).show();
}

结果 1

null
correct
<小时/>

代码2

在我的第二个代码中,我有一个名为 Car 的类,其中包含 GETSET 方法,但该方法必须返回 字符串返回null。

public class Car {

private int idCar;
private String name;

public Car(){};

public Car(int idCar, String name)
{
this.idCar = idCar;
this.name = name;
}

//Here the rest of GET and SET methods

public String getName()
{
return name;
}
}

在我的 MainActivity.java 中,我有一个 CarsArrayList:

ArrayList<Car> cars = new ArrayList<Car>();

我在 CustomAdapter 上使用它,如下所示:

Toast.makeText(getApplicationContext(), cars.get(position).getName(), Toast.LENGTH_LONG).show();

if(cars.get(position).getName() == null)
{
Toast.makeText(getApplicationContext(), "correct", Toast.LENGTH_LONG).show();
}
else
{
Toast.makeText(getApplicationContext(), "incorrect", Toast.LENGTH_LONG).show();
}

结果 2

null
incorrect

这两个代码有什么区别?显然它们很相似,因为在它们中我比较了 String ,它是 nullnull 但它们的行为是不同的。

提前致谢!

最佳答案

这两个代码的作用截然不同

在第一个示例中,您显式地将变量设置为 null 并与 null 进行比较。这可以解释为:您使用的代码路径不会直接将值更改为非 null 的值,因此您看到 Toast 的内容是“正确”的,这将是完全合理的。

在第二个示例中,您做了两件不同的事情:

  • 您可以立即使用 cars(position).getName() 中的文本创建一个 Toast
  • 然后检查 cars(position).getName() 是否为 null。可能的情况是它不是并且显示了另一条路径。

如果您想让它们至少相似,最好将 cars(position).getName() 移动到变量...

String prove = cars(position).getName();

if(prove == null) {
Toast.makeText(getApplicationContext(), "correct", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(getApplicationContext(), "incorrect", Toast.LENGTH_LONG).show();
}

我快速深入了解了 Toast 的源代码,如果您提供的字符串为 null,它将为您提供一个空字符串(或者一个 toast 是空白的)。您没有表明您在提供的第二个 toast 中没有看到文本,因此我假设您为 cars(position).getName() 获得的值不为 null .

关于java - 不同的空比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32104284/

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