• Java == 和 equals 区别


    先来看一段代码

    1.    String str1 = new String("hello");//堆中分配一块内存,存放"hello",str1 指向内存地址
    2.    String str2 = new String("hello");//堆中分配一块内存,存放"hello",str2 指向内存地址
    3.		
    4.    System.out.println(str1==str2); //false
    5.    System.out.println(str1.equals(str2)); //true
    

    第四行 ,== 值比较 因为内存地址不一样,所以返回false
    第五行 ,equals方法是用来比较两个对象的引用是否相等,即是否指向同一个对象。都是指向"hello" 所以返回true

        String str1 = "hello";//在常量池中创建了hello字符串
        String str2 = "hello";//在常量池中创建了hello字符串
    		
        System.out.println(str1==str2); //true  str1和str2指向的是同一个地址(true)
        System.out.println(str1.equals(str2)); //true 字符串与指定的对象比较
    
        String str  = new String("hello");
        String str1 = new String("hello");
        String str2 = new String("hello");
    		
    		
        System.out.println(str1==str2); //false
        System.out.println(str1.equals(str2)); //true
    		
        str1 = str;
        str2 = str;
    		
        System.out.println(str1==str2); //true
        System.out.println(str1.equals(str2)); //true
    

    总结:

      1)对于 == ,可用于比较基本类型和引用类型。
    如果作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等;
        如果作用于引用类型的变量,则比较的是所指向的对象的地址是否相等。

      2)equals() 是Object类定义的一个方法,用来比较两个引用对象是否相等。
        如果没有对equals方法进行重写,就相当于 == ,比较的是引用类型的变量所指向的对象的地址,是否为同一个对象;
        诸如String、Date等类对equals方法进行了重写的话,比较的是所指向的对象的内容。

  • 相关阅读:
    WinForm控件之【Button】
    P4168 蒲公英 题解
    U91741 题解
    树链剖分 学习笔记
    GCD 及 EXGCD 复习笔记
    javascript中的对象拷贝
    关于Vue.js的v-for,key的顺序改变,影响过渡动画表现
    ajax无刷新上传和下载
    站点开启https和http2
    windows挂载EFI分区
  • 原文地址:https://www.cnblogs.com/lick468/p/10658189.html
Copyright © 2020-2023  润新知