zoukankan      html  css  js  c++  java
  • 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方法进行了重写的话,比较的是所指向的对象的内容。

  • 相关阅读:
    解决流氓软件的工具,做个记录
    目前使用较好的网盘搜索引擎
    网页截图分段保存
    国外统计学课程主页Statistical Books, Manuals and Journals
    notepad++ TextFX替代
    只用 4 个月打造机器学习必备技能,这位工程师成功翻转职涯人生
    时序差分学习
    来自NVIDIA开源的pix2pixHD,将Image-to-Image Translation带到了另一个境界
    关于HTML5,最牛逼的10本书!
    IDEA配置和插件
  • 原文地址:https://www.cnblogs.com/lick468/p/10658189.html
Copyright © 2011-2022 走看看