首页 > 解决方案 > 为什么 string.equals 在我的情况下不起作用?

问题描述

我有一个下面的例子:

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

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

标签: javacore

解决方案


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

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

推荐阅读