==与equals 的比较

总结如下:1 == 两者是基本数据类型比较的时候,比较的是值是否相等,如果比较的是两个对象的时候,比较两者引用的对象地址是否一样。

                2 equals 两者比较的是基本数据类型包装类对象时,此时比较的是值是否相等,如果不是基本数据类型的时候,此时比较的是两者引用的对象地址是否一样。

               比如String类对象做equals比较的时候,比较的就是两个String对象所包含的值:

       Object类中equals方法源码如下:

    Object里面的equals方法其实就是通过==进行比较,是否引用同一个对象地址

 public boolean equals(Object arg0) {
		return this == arg0;
     	}

        String类中equals方法源码如下:

String类extends了Object类,并对equals方法进行了重写,此时比较的是对两个对象所包含的字符串内容进行一 一比较

 public boolean equals(Object arg0) {
      if(this == arg0) {
         return true;
      } else {
         if(arg0 instanceof String) {
            String arg1 = (String)arg0;
            int arg2 = this.value.length;
            if(arg2 == arg1.value.length) {
               char[] arg3 = this.value;
               char[] arg4 = arg1.value;

               for(int arg5 = 0; arg2-- != 0; ++arg5) {
                  if(arg3[arg5] != arg4[arg5]) {
                     return false;
                  }
               }

               return true;
            }
         }

         return false;
      }
   }

    

       

猜你喜欢

转载自blog.csdn.net/m0_37264382/article/details/80053355