public class run
{
public static void main(String args[])
{
boolean b;
int i=3;
b=Integer.toString(i)=="3";
System.out.println(b);
}
}
根据我的代码,它应该返回 true,但输出 false。
您在应该使用==
时使用:
b=Integer.toString(i).equals("3");
我不知道你为什么使用x
. 我假设一个错字。
基本上,==
将被编译的文字使用的引用与对从整数创建的新字符串对象的引用进行比较,由于实现细节,可能会或可能不会被 interned。
public class run
{
public static void main(String args[])
{
boolean b;
int i=3;
x=Integer.toString(i).equals.("3"); // change in this line
System.out.println(x);
}
}
== 比较对象的引用,而 equals 方法比较值。
您需要使用equals
而不是==
比较String
。 这是一个很好的解释为什么。
你应该养成equals
这样写的习惯:
x= "3".equals(Integer.toString(i));
请注意文字值如何在左侧,而不是像所有其他答案一样位于右侧。这里的好处是,如果传入的值为空,则可以避免可能的空指针异常equals()
。 "3"
永远不能为空。如果您像其他答案一样编写代码,为了尽可能安全,您必须添加额外的行,如下所示:
String s = ...
x = s != null && s.equals("3");
像这样写它的工作量更少:
String s = ...
x = "3".equals(s);