zoukankan      html  css  js  c++  java
  • equals和==的区别

    ---恢复内容开始---

                 

    equals:用于判断两个变量是否是对同一个对象的引用,即堆中的内容是否相同.

     1.第一:对象不同,内容相同:

    ==:等于。比较两个地址是不是一样的(地址一样值肯定一样)(比较的是引用,引用是什么下面有介绍)
    equals:相同。比较两个地址指向的 实际对象的内容 是不是同一个(比较的是对象)
    两个长得一样的人,只能说长的相同(equals),但是不等于他们俩是一个人。

       package proj1;
    public class file2 {
    
    	public static void main(String[] args) {
    		String s = new String("java");
    		String s1 = new String("java");
    
    		System.out.println(s==s1);            //false
    		System.out.println(s.equals(s1));    //true
    	}
    
    
    

      第二:同一对象,"等号和

    equals结果相同,引用类型做比较的时候两个都可以;

    引用类型:

    "引用"(reference)是c++的一种新的变量类型,是对C的一个重要补充。它的作用是为变量起一个别名。假如有一个变量a,想给它起一个别名,可以这样写:

    int a;int &b=a;

    这就表明了b是a的"引用",即a的别名。经过这样的声明,使用a或b的作用相同,都代表同一变量。在上述引用中,&是"引用声明符",并不代表地址。

    不要理解为"把a的值赋给b的地址"。引用类型的数据存储在内存的堆中,而内存单元中只存放堆中对象的地址。声明引用并不开辟新的内存单元,所以b和a都代表同一变量单元。

    package proj1;
    
    public class file2 {
    
    	public static void main(String[] args) {
    		String s1 = new String("java");
    		String s2 = s1;
    
    		System.out.println(s1==s2);            //true
    		System.out.println(s1.equals(s2));    //true  //true
    	}
    
    }
    

      

    第三:这种情况值相同对象就是相同的

    package proj1;
    
    public class file2 {
    
    	public static void main(String[] args) {
    		String s1 = "java";
    		String s2 = "java";
    
    		System.out.println(s1==s2);            //true
    		System.out.println(s1.equals(s2));    //true  //true  //true
    	}
    
    }
    

      第四:下列情况注意,当不是直接赋值而是其他类型转化过来的时,对象发生改变。由于t的值是s1转化而来所以不会放到常量池。所以当再次把"11"给s时,它会新赋值再放到常量池

    当再次给s2时由于常量池中s已经放进去"11"这个值了,所以就直接在常量池中找到赋给s2.所以(t==s(false) t==s2(false)  不是同一个对象)  s==s2(true)(还是指向常量池中的同一个对象)

    package proj1;

    public class file2 {

    public static void main(String[] args) {
    int s1 =11;
    String t=String.valueOf(s1);
    String s="11";
    String s2 = "11";

    System.out.println(s2==t);
    System.out.println(s==t);
    System.out.println(s2==s); //常量池中引用了同一个对象
    System.out.println(t.equals("11"));
    }

    }

     

     

    ---恢复内容结束---

    成长就是将哭声调成静音的过程
  • 相关阅读:
    quagga源码学习--BGP协议的初始化
    Golang pprof heap profile is empty
    python requests 配置超时及重试次数
    SVN: bdb: BDB1538 Program version 5.3 doesn't match environment version 4.7
    OpenSSL Command-Line HOWTO
    树莓派保卫战--防止SSH暴力破解
    Mac OS X Tips
    Git Tips
    SQL分组多列统计(GROUP BY后按条件分列统计)
    Show Linux Package Sort By Size
  • 原文地址:https://www.cnblogs.com/weixiaoling/p/6083158.html
Copyright © 2011-2022 走看看