这两个代码之间的区别是什么?:
代码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
的类,其GET
和SET
方法,但必须返回String
的方法返回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
ArrayList
我Cars
ArrayList<Car> cars = new ArrayList<Car>();
:
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();
}
我在CustomAdapter上使用的内容如下:
null
incorrect
结果2
String
两个代码有什么区别?显然他们是相似的,因为在他们两个中我比较null
它是null
vs {{1}}但他们的行为是不同的。
提前致谢!
答案 0 :(得分:2)
这两个代码在他们正在做的事情中分开。
在第一个示例中,您明确将变量设置为null
并与null
进行比较。这可以用来推理;你运用的代码路径不会直接将值更改为非null
的内容,因此它会使完美意义让你看到你的Toast with& #34;正确&#34;
在你的第二个例子中,你做了两件不同的事情:
Toast
cars(position).getName()
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()
获得的价值不是空的。