Java 字符串常用方法

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

方法示例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

方法示例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

内部实现

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;
}