Java String equals()方法用于比较字符串与入参对象是否相等。
Java String equals() 方法
Java 中,String equals() 方法如下定义:
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = value.length;
if (n == anotherString.value.length) {
char v1[] = value;
char v2[] = anotherString.value;
int i = 0;
while (n-- != 0) {
if (v1[i] != v2[i])
return false;
i++;
}
return true;
}
}
return false;
}
- 字符串类覆盖Object类中的equals()方法,判断相等区分大小写。
- 使用equals()方法来检查字符串内容的相等性。
- 不要使用’‘运算符,它检查对象引用,这在大多数情况下是不可取的。
- 允许将“null”传递给方法,它将返回false。
- 使用equalsIgnoreCase()方法以不区分大小写的方式比较字符串。
Java String equals() 方法示例
用于比较两个字符串是否相等(区分大小写)的 Java 程序。
public static void main(String[] args) {
String world1 = "hello";
String world2 = "hello";
System.out.println(world1.equals(world2)); // true
String world3 = "hi";
System.out.println(world1.equals(world3)); // false
System.out.println(world1.equals(null)); // false
System.out.println(world1.equals("Hello")); // false
}
Java String equalsIgnoreCase() 示例
用于检查两个字符串是否相等(不区分大小写)的 Java 程序。请注意equals()
和equalsIgnoreCase()
方法的行为方式相同,只是后者不区分大小写。
public static void main(String[] args) {
String world1 = "hello";
System.out.println(world1.equalsIgnoreCase("Hello")); // true
System.out.println(world1.compareToIgnoreCase("Hello")); // 0
System.out.println(world1.equalsIgnoreCase(null)); // false
}
Java 中 和 equals 的区别
‘‘运算符检查相同的对象引用,它不检查字符串内容,而equals()方法检查字符串内容。
public static void main(String[] args) {
String world1 = "hello";
String world2 = "hello";
System.out.println(world1 == world2); //true
System.out.println(world1.equals(world2)); //true
String world3 = new String("hello");
System.out.println(world1== world3); //false
System.out.println(world1.equals(world3)); //true
}
world1 和 world2 在Java中是同一个对象,是因为 JVM 的存储方式。
JVM 在存放 String 字符串的时候,有一块区域被称之为 常量池。如果两个字符串的字面量相等,又是以普通方式声明,则会将它们指向同一块内存区域。于是 world1 和 world2 就是 ==
。
但是,要是程序声明了 new String("hello")
,则会开辟新的空间存贮该字符串,于是 world1 和 world3 就不能是 ==
,他们的字面量是相同的,equals 方法是 true。