Java 字符串 equals()
方法用于比较两个字符串是否相同。如果不匹配,则返回 false。如果所有字符都匹配,则返回true。
注意: equals比较的是对象的地址(对于String类型,equals比较的是String的内容),在这里讨论的是字符串的equals() 方法。
字符串 equals() 方法覆盖了 Object 类的 equals() 方法,参考下面的方法实现。
语法
publicboolean equals(Object anotherObject)
参数
anotherObject :另一个字符串或者对象。
返回值
如果两个字符串的字符相等返回true ,否则返回false。
方法例子
介绍一些例子了解该方法的使用。
方法示例1
文件名: EqualsExample.java
public class EqualsExample{
public static void main(String args[]){
String s1="yxjc123";
String s2="yxjc123";
String s3="YXJC123";
String s4="python";
System.out.println(s1.equals(s2));//true 因为内容和大小写都相同
System.out.println(s1.equals(s3));//false 因为大小写不一样
System.out.println(s1.equals(s4));//false 因为内容不一样
}
}
输出:
true
false
false
false
false
方法示例2
equals() 方法比较两个字符串,可用于 if-else 控制结构。
文件名: EqualsExample2.java
public class EqualsExample2 {
public static void main(String[] args) {
String s1 = "yxjc123";
String s2 = "yxjc123";
String s3 = "YXJC123";
System.out.println(s1.equals(s2)); // 正确,因为内容相同
if (s1.equals(s3)) {
System.out.println("both strings are equal");
}else System.out.println("both strings are unequal");
}
}
输出:
true
both strings are unequal
both strings are unequal
方法示例3
文件名: EqualsExample3.java
import java.util.ArrayList;
public class EqualsExample3 {
public static void main(String[] args) {
String str1 = "123";
ArrayList<String> list = new ArrayList<>();
list.add("234");
list.add("345");
list.add("456");
list.add("123");
for (String str : list) {
if (str.equals(str1)) {
System.out.println("123 is present");
}
}
}
}
输出:
123 is present
方法示例4
文件名: EqualsExample4.java
public class EqualsExample4
{
// 主要方法
public static void main(String argvs[])
{
// 字符串
String str = "a";
String str1 = "123";
String str2 = "45.89";
String str3 = "false";
Character c = new Character('a');
Integer i = new Integer(123);
Float f = new Float(45.89);
Boolean b = new Boolean(false);
// Character 对象的引用被传递
System.out.println(str.equals(c));
// Integer 对象的引用被传递
System.out.println(str1.equals(i));
// Float 对象的引用被传递
System.out.println(str2.equals(f));
// 布尔对象的引用被传递
System.out.println(str3.equals(b));
// 上面的打印语句显示一个错误值,因为
// 我们正在比较具有不同数据类型的字符串
// 为了达到真正的价值,我们必须转换
// 使用 toString() 方法将不同的数据类型转换成字符串
System.out.println(str.equals(c.toString()));
System.out.println(str1.equals(i.toString()));
System.out.println(str2.equals(f.toString()));
System.out.println(str3.equals(b.toString()));
}
}
输出:
false
false
false
false
true
true
true
true
false
false
false
true
true
true
true
内部实现
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;
}