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
  • 相关阅读:
    [pixhawk笔记]8-半物理仿真环境
    Python超参数自动搜索模块GridSearchCV上手
    Oriented Response Networks 阅读笔记(一)
    聚类算法评价指标学习笔记
    基于sklearn的常用分类任务指标Python实现
    使用h5py库读写超过内存的大数据
    基于MXNet使用自己的图像数据集训练网络--准备数据与撰写预处理脚本
    在Ubuntu操作系统中添加环境变量
    Jetson TK1 开发板初用体会
    一条脚本搞定OpenCV
  • 原文地址:https://www.cnblogs.com/csuwangwei/p/2279547.html
Copyright © 2011-2022 走看看