zoukankan      html  css  js  c++  java
  • java中==与equals

    • ==

      ==可用于比较基本类型与引用类型,对于基本类型变量比较的是其存储的值是否相等,对于引用类型则比较的是其是否指向同一个对象。

    如:

    int a = 10;
    int b = 20;
    double d = 10.0;

    a==b的结果为false,由于a与b的值不相等;

    a==d的结果为true,由于a与d的值相等。

    Keyboard objOne = new Keyboard();
    Keyboard objTwo = new Keyboard();
    Keyboard objThree = objOne;

    objOne == objTwo的结果为false,由于objOne与objTwo指向不同的对象;

    objOne == objThree的结果为true,由于objOne与objThree指向同一个对象。

    • equals

      equals只能用于引用类型变量的比较,如果没有对equals方法进行重写,比较的是其是否指向同一个对象。

    如:

    Keyboard objOne = new Keyboard();
    Keyboard objTwo = new Keyboard();
    Keyboard objThree = objOne;

    objOne.equals(objTwo)的结果为false,由于objOne与objTwo指向不同的对象;

    objOne.equals(objThree)的结果为true,由于objOne与objThree指向同一个对象。

    • String类对equals方法进行了重写,用来比较指向的字符串对象所存储的字符串是否相等

    如:

    String str1 = new String("hello");
    String str2 = new String("hello");
    String str3 = new String("good");

    str1.equals(str2)的结果为true,由于str1与str2所指向的字符串对象存储的字符串相等;

    str1.equals(str3)的结果为false,由于str1与str3所指向的字符串对象存储的字符串不相等。

    上例中str1==str2的结果则为false,因为str1、str2指向不同的对象。

    又如:

    String str4 = "hello";
    String str5 = "hello";

    str4 == str5的结果为true,这里是由于str4、str5指向同一个字符串对象。

    也即是说只创建了一个“hello”对象,与new方式每次都创建一个新的对象不同。

  • 相关阅读:
    漫画图解红黑树
    HashMap原理
    从底层原理深度剖析volatile关键字
    一致性哈希算法
    OAuth2.0 授权模式详解
    RocketMQ消息的顺序、重复和事务
    正向代理 vs 反向代理
    JVM内存分配以及存储
    023_JDK8.0新特性<四>StreamAPI_4_Stream终止操作
    022_JDK8.0新特性<四>StreamAPI_3_Stream中间操作
  • 原文地址:https://www.cnblogs.com/deltadeblog/p/7172293.html
Copyright © 2011-2022 走看看