为什么string.equals在我的情况下不起作用?

时间:2020-03-11 10:12:42

标签: java core

我在下面有一个例子:

public static void main(String[] args) {
        String a = "abc@gmail.com";
        System.out.println(a.hashCode());
        System.out.println(String.format("%x%n", a.hashCode()));
        String text1 = String.format("%x%n", a.hashCode());
        String text2 = "9f4e93d3";
        if (text1.equals(text2)) {
            System.out.println("equals");
        } else {
            System.out.println("not equals");
        }
    }

我的结果:

-1622240301
9f4e93d3

not equals

我不知道为什么我的代码不输出“等于”。有人可以为我解释吗?
谢谢。

2 个答案:

答案 0 :(得分:2)

如果将.trim()用作“ text1.trim()”,则可以达到“等于”。像这个。 在9f4e93d3之后,text1的值还包含更多字符。

text1是 9f4e93d3 \ r \ n

text2只是 9f4e93d3

如果您在调试模式下运行此应用,则可以轻松查看。

    public static void main(String[] args) {
        String a = "abc@gmail.com";
//        System.out.println(a.hashCode());
//        System.out.println(String.format("%x%n", a.hashCode()));
        String text1 = String.format("%x%n", a.hashCode()); 
        String text2 = "9f4e93d3";
        System.out.println(text1+"-"+text2);
        if (text1.trim().equals(text2)) {
            System.out.println("equals");
        } else {
            System.out.println("not equals");
        }
    }

输出:

9f4e93d3
-9f4e93d3
equals

答案 1 :(得分:1)

text1.length()= 9(text1 = 9f4e93d3 \ n

text2.length()= 8(text2 = 9f4e93d3 ),

由于没有相同的text1,equals(text2)的计算结果为false。