开发者社区 问答 正文

Java在比较字符串的时候,equals 与== 完全一样?

screenshot
完全一样,比较字符串equals与== 完全没有区别吗?

展开
收起
蛮大人123 2016-03-12 11:07:44 2611 分享 版权
2 条回答
写回答
取消 提交回答
  • 基本数据类型(也称原始数据类型) :byte,short,char,int,long,float,double,boolean。他们之间的比较,应用双等号(==),比较的是他们的值 引用数据类型:当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址,所以字符串比较时需要用equals
    2019-07-17 19:00:28
    赞同 展开评论
  • 我说我不帅他们就打我,还说我虚伪
    public boolean equals(Object anObject) {
        //如果引用的是同一个对象,返回真
        if (this == anObject) {
            return true;
        }
        //如果不是String类型的数据,返回假
        if (anObject instanceof String) {
            String anotherString = (String) anObject;
            int n = value.length;
            //如果char数组长度不相等,返回假
            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;
    2019-07-17 19:00:28
    赞同 展开评论