【Java】String类中equals方法源码解读

目录

String类中的重写Object的equals()

手写String中的equals()



比较两个字符串的值 是否相同——equals
1.Java底层实现原理
2.equals 默认比较两个对象的内存地址是否相同
3.自己定义的对象 equals 比较对象的属性值是否相同的话 重写 父类中(object)equals
4.String 类中的 equals 重写 Object类中的 equals,比较两个字符串值是否相同
5.String 底层如何实现————底层就是基于 char[]数组实现
6.比较两个字符串 值 对应的 char[]数组 存放的元素是否都相同
 

package com.api.Demo07;

public class Test01 {
    public static void main(String[] args) {
        String str1 = "mayikt";
        String str2 = "mayikt";
        
        System.out.println(str1.equals(str2));
    }
}

String类中的重写Object的equals()

    // String类中的重写Object的equals()
    public boolean equals(Object anObject) {
        // 比较两个字符串的 对象引用地址 是否相同
        if (this == anObject) {
            return true;
        }
        // 判断比较的类型 是否 是为 String
        if (anObject instanceof String) {
            //将该类型 强转为 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;
    }

手写String中的equals()

package com.api.Demo07;

/**
 * 手写String中的equals()
 */
public class Test02 {
    public static void main(String[] args) {
        /**
         * 1.定义两个char 类型数组
         */
        char[] str1 = {'m', 'a', 'y', 'i', 'k', 't'};
        char[] str2 = {'m', 'a', 'y', 'i', 'k', '1'};
        System.out.println(compare(str1, str2));
    }

    public static boolean compare(char[] str1, char[] str2) {

        // 默认返回true
        //2.比较两个char[]类型数组 长度是否相同
        if (str1.length != str2.length) {
            return false;
        }
        //3.获取到str1长度
        int n = str1.length;
        int i = 0;
        while (n-- != 0) {
            // 通过循环比较 连个 char[] 对应的 index 下标位置 元素是否相同
            if (str1[i] != str2[i]) {
                return false; //推出while()
            }
            i++;
        }
        // 如果两个char[]中的 元素值相同的话 直接返回true
        return true;

    }
}

下一篇文章:String遍历字符串原理

你可能感兴趣的:(java,开发语言,String,equals,重写,api)