java判断字符串相等,如何判断两个字符串是否一样?

KLQ 2020-06-16 16:13:33 java常见问答 8566

java如何判断字符串是否相等呢?有什么方法?话不多说,请一起通过下面的文章内容来了解一下吧,希望可以对你有所帮助。

总的来说,可以分成两种,一种是判断地址是否相等-==,第二种是判断值是否相等-equals

首先,Object类作为所有类的超类。

Object类的equals方法是直接比较地址。

源码:

public boolean equals(Object obj)
{
    return this == obj;
}
String类的equals方法源码:
public boolean equals(Object anObject)
{
    if (this == anObject)
    { //比较地址,如果地址相等,直接返回true
        return true;
    }
    if (anObject instanceof String)
    { //如果地址不相等,那就比较类型,如果类型不相等,直接返回false
        String anotherString = (String) anObject; //由于是String类的比较,所以要把对象强转为String类
        int n = value.length; //记录当前对象的字符长度
        if (n == anotherString.value.length)
        { //判断当前对象的字符串长度和传入的字符串长度是否一样,不一样,直接返回false,如果一样,接着往下比较
            char v1[] = value;
            char v2[] = anotherString.value;
            int i = 0;
            while (n-- != 0)
            { //将2个字符数组的循环对比
                if (v1[i] != v2[i]) //将字符数组的字符进行对比
                    return false; //如果出现一个字符不同,马上返回false
                i++
            }
            return true;
        }
    }
    return false;
}

String类的equals比较内容相同思路。

判断地址是不是相等的,相等,返回true;比较类型是不是一样的,不一样,返回false;把传入

的对象强转为String,长度比较,长度不相等,返回false,长度相等,循环比较字符数组的元素

在有一元素比较内容不相同,立即返回false;两个字符数组循环比较所有元素,没有内容不相同的元素,返回true;

测试代码:

public class TestString
{
    public static void main(String[] args)
    {
        String str = "abc";
        String str2 = new String("abc");
        System.out.println("两个对象的内存地址是否相等:" + (str == str2)); //false
        /**比较对应位置上的字符是否相等,如果所有的对象位置上的字符均相等,true,否则返回false*/
        System.out.println("两个对象的内容是否相等:" + (str.equals(str2)));
        //以下结果为 false  
        /**因为Person对象 instanceof String  的结果为false ,直接返回false*/
        System.out.println("String对象与Person对象的内容是否相等:" + (str.equals(new Person())));
    }
}
class Person
{}

以上内容仅供参考。

java判断字符串相等的内容就给你分享到这里了,更多java入门知识,请继续关注奇Q工具网来了解吧。

推荐阅读:

java数组转字符串要如何转换?一般有几种方法?

==和equals的区别是什么?区别整理

String的equals是怎样实现的?equals方法如何重写?