将整数值转换为字符串时,字符串比较失败,并返回false布尔值

时间:2013-07-10 21:37:21

标签: java string integer

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。

3 个答案:

答案 0 :(得分:1)

您应该使用==时使用:

b=Integer.toString(i).equals("3");

我不知道您使用x的原因。我假设打字错误。

基本上==将正在编译的文字所使用的引用与从整数创建的新字符串对象的引用进行比较,由于实现细节,可能已经或可能未被实现< /强>

答案 1 :(得分:0)

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方法比较该值。

答案 2 :(得分:0)

  1. 您需要使用equals代替==来比较StringHere's a good explanation as to why.

  2. 你应养成这样写equals的习惯:

    x= "3".equals(Integer.toString(i));
    

    注意文字值如何在左侧而不是右侧,就像所有其他答案一样。这里的好处是,如果传递给equals()的值为null,则可以避免可能的空指针异常。 "3"永远不能为空。如果您像其他答案一样编写代码,为了尽可能安全,您必须添加这样的额外行:

    String s = ...
    x = s != null && s.equals("3");
    

    这样做的工作就不那么简单了:

    String s = ...
    x = "3".equals(s);