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
.我假设一个错字。
基本上,==
将编译的文本使用的引用与对从整数创建的新字符串对象的引用进行比较,由于实现细节,该整数可能已被保留,也可能未被保留。
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
而不是==
来比较String
。 这里有一个很好的解释为什么。 -
你应该养成这样写
equals
的习惯:x= "3".equals(Integer.toString(i));
请注意,文字值位于左侧,而不是像所有其他答案那样位于右侧。 这样做的好处是,如果传递到
equals()
的值为 null,则避免了可能的空指针异常。"3"
永远不能为空。 如果你像其他答案一样编写代码,为了尽可能安全,你必须添加额外的行,如下所示:String s = ... x = s != null && s.equals("3");
这样写的工作量更少:
String s = ... x = "3".equals(s);