zoukankan      html  css  js  c++  java
  • Java中==和equals的比较

    经实际验证,有如下结论:

    1. 对于基本类型(只能用==)
    ==           比较值

    2. 对于基本类型的封装类(Boolean ,Integer,Double,Long,Float
    ==           比较地址
    equals    比较值

    3. 对于类对象
    ==           比较地址
    equals    比较值

    4. 对于String
    ==           比较地址
    equals    比较值


    验证用代码如下:

    import java.util.ArrayList;

    public class TestEquals {

        public static void main(String[] args) {
     // To validate basic data types
     int intA = 1;
     int intB = 1;
     System.out.println("intA == intB is " + (intA == intB));
     
     // To validate wrapper classes
     Integer integerA = new Integer(1);
     Integer integerB = new Integer(1);
     Integer integerC = integerA;
     System.out.println("------------------------------");
     System.out.println("integerA == integerB is " + (integerA == integerB));
     System.out.println("integerA.equals(integerB) is " + (integerA.equals(integerB)));
     System.out.println("integerA == integerC is " + (integerA == integerC));
     System.out.println("integerA.equals(integerC) is " + (integerA.equals(integerC)));
     
     // To validate ordinary classes
     ArrayList<Integer> arrayListA = new ArrayList<Integer>();
     arrayListA.add(integerA);
     ArrayList<Integer> arrayListB = new ArrayList<Integer>();
     arrayListB.add(integerA);
     ArrayList<Integer> arrayListC = arrayListA;
     System.out.println("------------------------------");
     System.out.println("arrayListA == arrayListB is " + (arrayListA == arrayListB));
     System.out.println("arrayListA.equals(arrayListB) is " + (arrayListA.equals(arrayListB)));
     System.out.println("arrayListA == arrayListC is " + (arrayListA == arrayListC));
     System.out.println("arrayListA.equals(arrayListC) is " + (arrayListA.equals(arrayListC)));

     // To validate String class
     String stringA = new String("123");
     String stringB = new String("123");
     String stringC = stringA;
     System.out.println("------------------------------");
     System.out.println("stringA == stringB is " + (stringA == stringB));
     System.out.println("stringA.equals(stringB) is " + (stringA.equals(stringB)));
     System.out.println("stringA == stringC is " + (stringA == stringC));
     System.out.println("stringA.equals(stringC) is " + (stringA.equals(stringC)));
        }
    }

    执行结果为:

    intA == intB is true
    ------------------------------
    integerA == integerB is false
    integerA.equals(integerB) is true
    integerA == integerC is true
    integerA.equals(integerC) is true
    ------------------------------
    arrayListA == arrayListB is false
    arrayListA.equals(arrayListB) is true
    arrayListA == arrayListC is true
    arrayListA.equals(arrayListC) is true
    ------------------------------
    stringA == stringB is false
    stringA.equals(stringB) is true
    stringA == stringC is true
    stringA.equals(stringC) is true

  • 相关阅读:
    html 中 #include file 的用法
    人人网FED CSS编码前端开发规范
    (转载)css垂直水平居中的整理
    CSS负边距自适应布局三例
    (转载)无缝滚动图片的js和jquery两种写法
    用css3实现鼠标移进去当前亮其他变灰
    应急响应
    扫描工具介绍
    入侵检测
    安全防护与加固
  • 原文地址:https://www.cnblogs.com/jancco/p/2488989.html
Copyright © 2011-2022 走看看