java.lang.String------equals()方法 源码分析

public final class String  {

   // 该字符型数组用于存储字符

   private final char value[];

 

   //  无线参数的构造器 , 此构造函数是不必要的,因为字符串是不可变的

   public String() {

        // 初始化字符数组value 为空

        this.value = "".value;

   }

   

   // equals( ) 方法

   public boolean equals(Object anObject) {

       // 比较两个对象的地址,如果两个对象地址相同,则返回 true

        if (this == anObject) {

            return true;

        }

 

     // 判断 anObject 引用变量所指向的对象是否属于 String 类型或者 String 类的子类

        if (anObject instanceof String) {

            // 将 Object 类型的 anObject 强转为 String 类型

            String anotherString = (String)anObject;

            /*

              获取当前String 实例的字符串长度

           */

            int n = value.length;

            if (n == anotherString.value.length) {

            // 分别将 两个 String 实例的 字符数组赋值给 v1 和 v2 char 数组

                char v1[] = value;

                char v2[] = anotherString.value;

 

               // 整数变量 i 的值用来指定数组的下标

                int i = 0;

                while (n-- != 0) {

               // 从数组中下标为 0的位置开始,比较两个字符是否相等,依次往后挨着进行比较

                    if (v1[i] != v2[i])

                        return false;

                    i++;

                }

                return true;

            }

        }

        return false;

    }

 

}


版权声明:本文为lierming__原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。