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

  • 相关阅读:
    nginx proxy_cache 缓存配置[转]
    MongoDB使用小结:一些常用操作分享
    PHP读取Mongodb数据报错,Cannot natively represent the long 8331412483000 on this platform
    MongoDB 学习笔记(python操作)
    Python 中 os.path模板
    Python 优雅的操作字典【转】
    MongoDB 一对多关系建模
    nginx之location配置
    MongoDB安装Windows服务
    .net4.0 请求HTTPS出错:未能创建 SSL/TLS 安全通道
  • 原文地址:https://www.cnblogs.com/jancco/p/2488989.html
Copyright © 2011-2022 走看看