zoukankan      html  css  js  c++  java
  • ==与equals方法的区别(Java基础)

    1) 当 == 两边为8种基本数据类型时, == 判断的是两边变量中存放的内容是否相等。

    2) 当 == 两边为引用数据类型时,== 判断的是引用数据类型的对象的内存地址是否一样;内存地址一样,则是同一个对象。

    3)equals方法,只有对象才能拥有。需要Object子类重写,比较的是两个对象的内容。(如果子类不重写,功能与==一样。)

    在String类重写了equals方法,字符串相同的两个String对象用equals方法,返回true。

     1 public class TestEquals {
    2 public static void main(String[] args) {
    3 String str1 = "aa";
    4 String str3 = "aac";
    5 String str4 = "aa" + "c";
    6 String str5 = str1 + "c";
    7 System.out.println("str3 == str4 :" + (str3 == str4)); // 【严重注意:str3 ="aac" 与 str4= "aa"+"c"】返回true
    8 System.out.println("str3 == str5 :" + (str3 == str5)); // ==判断是否为同一内存空间(是否同一对象),返回false
    9 System.out.println("==============");
    10 String s1 = new String("aa");
    11 String s2 = new String("aa");
    12 System.out.println("s1==s2 :" + (s1 == s2)); // 两个不同的对象,返回false
    13 System.out.println("s1.equals(s2) :" + s1.equals(s2)); // String类中重写了equals方法,返回true;
    14 System.out.println("==============");
    15 Dog d1 = new Dog("black", "60cm");
    16 Dog d2 = new Dog("black", "70cm");
    17 Dog d3 = new Dog("black", "60cm");
    18 System.out.println("d1 == d2 :" + (d1 == d2)); // 两个不同的对象,返回false
    19 System.out.println("d1.equals(d3) :" + d1.equals(d3)); // 在Dog类中,重写了equals方法,返回true
    20 System.out.println("d1.equals(d2) :" + d1.equals(d2)); // d1和d2的height的属性值不同,返回false
    21 }
    22 }
    23
    24 class Dog {
    25 private String color;
    26 private String height;
    27 public Dog() {
    28 super();
    29 }
    30 public Dog(String color, String height) {
    31 super();
    32 this.color = color;
    33 this.height = height;
    34 }
    35 /** * 重写equals方法 */
    36 @Override
    37 public boolean equals(Object obj) {
    38 Dog dog = (Dog) obj;
    39 if (this.color == dog.color && this.height == dog.height) {
    40 System.out.print("同一只狗");
    41 return true;
    42 }
    43 return false;
    44 }
    45 }

    执行结果:

    str3 == str4 :true
    str3 == str5 :false
    ==============
    s1==s2 :false
    s1.equals(s2) :true
    ==============
    d1 == d2 :false
    同一只狗d1.equals(d3) :true
    d1.equals(d2) :false
  • 相关阅读:
    每日英语:Easing Gaokao Restrictions: a New Year's Gift?
    每日英语:Targeting Grandpa: China’s Seniors Hunger for Ads
    每日英语:Eight Questions: Bianca Bosker on China's 'Original Copies' in Architecture
    每日英语:There's No Avoiding Google+
    如何删除控制面板中没有"删除"菜单的程序
    html中利用javascript实现文本框字数的动态计算
    一条批处理语句ping局域网内的所有机器
    javascript中的"+"运算
    在asp.net中使用分帧页面时,ajax control报access denied错误的解决方法
    gridview和repeater中取得行的序号
  • 原文地址:https://www.cnblogs.com/csuwangwei/p/2279547.html
Copyright © 2011-2022 走看看