zoukankan      html  css  js  c++  java
  • Java中“==”与“equal()”的区别。

    1“==”

       在基本数据类型:(byte,short,char,int,long,float,double,boolean) 中,“==”都是 比较的他们的值。

       在复合数据类型 :(对象,数组) 中“==”都是比较的的内存地址(也就是堆内存地址)

       对于复合数据类型,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false。因为每new一次,都会重新开辟堆内存空间。

     2,equal

      JAVA当中所有的类都是继承于Object这个超类的,在Object类中定义了一个equals的方法,这个方法的初始行为是比较对象的内存地址,

      但在一些类库当中这个方法被复写了,如String、Integer、Date。在这些类当中equals有其自身的实现,而不再是比较类在堆内存中的存放地址了。 

      所以说,对于复合数据类型之间进行equals比较,在没有覆写equals方法的情况下,他们之间的比较还是内存中的存放位置的地址值,
     
      跟双等号(==)的结果相同;如果被复写,按照复写的要求来。

     3,== 与equal的区别

      ==:比较的是两个字符串内存地址的数值是否相等,属于数值比较;

     equals():比较的是两个字符串的内容,属于内容比较。
     
    所以看一下以下代码:
     
    1 public class StringDemo {
     2     public static void main(String args[]) {
     3         String str1 = "Hello";
     4         String str2 = new String("Hello");
     5         String str3 = str2; // 引用传递
     6         System.out.println(str1 == str2); // false (比的是地址)
     7         System.out.println(str1 == str3); // false (比的是地址)
     8         System.out.println(str2 == str3); // true (比的是地址)
     9         System.out.println(str1.equals(str2)); // true (比的是值)
    10         System.out.println(str1.equals(str3)); // true (比的是值)
    11         System.out.println(str2.equals(str3)); // true  (比的是值)
    12     }
    13 }
    中国男儿当自强不息,厚德载物。
  • 相关阅读:
    嵌入式成长轨迹36 【Zigbee项目】【单片机基础】【单片机SD卡】
    嵌入式成长轨迹31 【嵌入式学习阶段】【ARM环境调试】【UbuntuWin7 NAT联网】
    一个jQuery弹出层(tipsWindown)
    sql的left join 命令详解
    input javascript 之 onclick 大全
    php中调用用户自定义函数的方
    asp 正则表达式使用方法
    conn.execute的用法
    vbscript中的True和False
    JavaScript Cookie 的正确用法
  • 原文地址:https://www.cnblogs.com/zhznb/p/9203841.html
Copyright © 2011-2022 走看看