zoukankan      html  css  js  c++  java
  • Java(一) equal 和 == 区别

    一、基本类型的比较

      基本类型 int, double等的引用变量 比较 只能用 “==”。不能用 equals

    二、包装基本类型

      对于基本类型的包装类型,比如Boolean、Character、Byte、Shot、Integer、Long、Float、Double等的引用变量,==是比较地址的,而equals是比较内容的。比如:

    public class TestEquals { 
    public static void main(String[] args) 
    { 
      Integer n1 = new Integer(30); 
      Integer n2 = new Integer(30); 
      Integer n3 = new Integer(31); 
      System.out.println(n1 == n2);//结果是false 两个不同的Integer对象,故其地址不同, 
      System.out.println(n1 == n3);//那么不管是new Integer(30)还是new Integer(31) 结果都显示false 
      System.out.println(n1.equals(n2));//结果是true 根据jdk文档中的说明,n1与n2指向的对象中的内容是相等的,都是30,故equals比较后结果是true 
      System.out.println(n1.equals(n3));//结果是false 因对象内容不一样,一个是30一个是31 
      } 
    } 

    三、比较字符串变量

      1.1、“==” 比较两个变量本身的值,即两个对象在内存中的首地址

      (java中,对象的首地址是它在内存中存放的起始地址,它后面的地址是用来存放它所包含的各个属性的地址,所以内存中会用多个内存块来存放对象的各个参数,而通过这个首地址就可以找到该对象,进而可以找到该对象的各个属性)

    s1 = new String("abc");
    s2 = new String("abc");
    
    s3 = "abc";
    s4 ="abc" ;
    
    System.out.println("s1==s2:"+(s1==s2)); // false
    System.out.println("s1==s3:"+(s1==s3)); // false
    System.out.println("s3==s4:"+(s3==s4)); // true

      1.2、“equals()”比较字符串中所包含的内容是否相同。

      equals方法是java.lang.Object类的方法, 但是在 String 中 equals 被重定义为 比较包含的内容是否相同。

    s1 = new String("abc");
    s2 = new String("abc");
    
    s3 = "abc";
    s4 ="abc" ;
    
    System.out.println("s1.equals(s2):"+(s1.equals(s2))); //true
    System.out.println("s1.equals(s3):"+(s1.equals(s3))); //true
    System.out.println("s3.equals(s4):"+(s3.equals(s4))); //ture

      1.3. Stringbuffer 的 equals  

     StringBuffer s1 = new StringBuffer("a");
     StringBuffer s2 = new StringBuffer("a");
     System.out.println("s1.equals(s2):"+(s1.equals(s2))); //结果为false

      StringBuffer类中没有重新定义equals这个方法,因此这个方法就来自Object类,

      (Object类中的equals方法是用来比较“地址”的,所以等于false)

    -------------------------------------------------------------------------------------------------------------------

    【1】https://www.cnblogs.com/weibanggang/p/9457757.html

  • 相关阅读:
    ArrayList用法
    MessageBox
    将文本文件导入Sql数据库
    在桌面和菜单中添加快捷方式
    泡沫排序
    Making use of localized variables in javascript.
    Remove double empty lines in Visual Studio 2012
    Using Operations Manager Connectors
    Clear SharePoint Designer cache
    Programmatically set navigation settings in SharePoint 2013
  • 原文地址:https://www.cnblogs.com/Jomini/p/13917710.html
Copyright © 2011-2022 走看看