我有一个包含哈希的字符串(它是由第三方程序自动生成的),还有一个不包含哈希的字符串,我需要与第一个字符串进行比较。方法 .equals() 给假。我还能怎么比较呢?
.equals()
pieyvz9o1#
if方法 == 以及 .equals() 给予 false ,然后 String 引用既不指向同一对象,也不指向堆中有意义的等价对象。除此之外, == 不应用于比较 String 字面量
==
false
String
a14dhokn2#
字符串值使用 equals(String anotherString) . 如果该方法返回false,则字符串值根本不相等。检查字符串的大小写、前导空格和尾随空格等。
equals(String anotherString)
euoag5mw3#
如果我理解正确,有两个字符串要比较,一个是原始字符串(s1),第二个字符串包含原始字符串+第三方程序插入的哈希(s2)。如果是这样,内置的equals()方法将不会返回true。我将创建自己的equals()方法实现来检查这个问题。这两种方法应该可以,但我更喜欢第二种。
private static boolean equals(String s1, String s2) { String s1Hash = String.valueOf(s1.hashCode()); return (s2.contains(s1) && s2.contains(s1Hash)); } private static boolean equals2(String s1, String s2) { String s1Hash = String.valueOf(s1.hashCode()); String s2NoHash = s2.replace(s1Hash,""); return (s1.equals(s2NoHash)); }
希望这能回答你的问题。否则,用一个具体的例子来描述这个问题就好了。
3条答案
按热度按时间pieyvz9o1#
if方法
==
以及.equals()
给予false
,然后String
引用既不指向同一对象,也不指向堆中有意义的等价对象。除此之外,==
不应用于比较String
字面量a14dhokn2#
字符串值使用
equals(String anotherString)
. 如果该方法返回false,则字符串值根本不相等。检查字符串的大小写、前导空格和尾随空格等。
euoag5mw3#
如果我理解正确,有两个字符串要比较,一个是原始字符串(s1),第二个字符串包含原始字符串+第三方程序插入的哈希(s2)。如果是这样,内置的equals()方法将不会返回true。我将创建自己的equals()方法实现来检查这个问题。
这两种方法应该可以,但我更喜欢第二种。
希望这能回答你的问题。否则,用一个具体的例子来描述这个问题就好了。