zoukankan      html  css  js  c++  java
  • java中的==和equals()

    ==和equals()都是比较相等的,那有什么区别和联系

    1:基本类型(primitive types), 共有8种,即int, short, long, byte, float, double, boolean, char

    使用==比较基本数据类型时比较的是数值是不是相等;

    例如:

     1 package equals;
     2 
     3 public class Test {
     4     public static void main(String[] args) {
     5         int a=3;
     6         int b=4;
     7         int c=3;
     8         b=c;
     9         System.out.println(a==c);
    10         System.out.println(a==b);
    11     }
    12 }

    因为基本数据类型是在栈中的,理解堆栈就好理解这个问题,具体参考我的另一篇博客》》》堆栈     http://www.cnblogs.com/GH0522/p/8193650.html

     那么当比较两个对象的时候比较的是 对象在内存的位置

     1 package equals;
     2 
     3 public class Test2 {
     4 
     5     public static void main(String[] args) {
     6         // TODO Auto-generated method stub
     7         Double d = new Double(12.2);
     8         Double d2 = new Double(12.2);
     9         System.out.println(d==d2);
    10         
    11     }
    12 }

     因为这两个对象在堆中都拥有一个不同的地址虽然里面放的数值是一样的;

    JAVA当中所有的类都是继承于Object这个基类的,在Object中的基类中定义了一个equals的方法,这个方法的初始行为是比较对象的内存地址,但在一些类库当中这个方法被覆盖掉了,如String,Integer,Date在这些类当中equals有其自身的实现,而不再是比较类在堆内存中的存放地址了。例如String重写的equals方法就是比较内存中存放的值。

     1 package equals;
     2 
     3 public class Test2 {
     4 
     5     public static void main(String[] args) {
     6         // TODO Auto-generated method stub
     7         String a=new String("a");
     8         String b=new String("a");
     9         System.out.println(a==b);
    10         System.out.println(a.equals(b));
    11     }
    12 }

     

     看其String类中被重写的equals

     

    没被重写的Object中的equals则是实现自==

     

  • 相关阅读:
    2、容器初探
    3、二叉树:先序,中序,后序循环遍历详解
    Hebbian Learning Rule
    论文笔记 Weakly-Supervised Spatial Context Networks
    在Caffe添加Python layer详细步骤
    论文笔记 Learning to Compare Image Patches via Convolutional Neural Networks
    Deconvolution 反卷积理解
    论文笔记 Feature Pyramid Networks for Object Detection
    Caffe2 初识
    论文笔记 Densely Connected Convolutional Networks
  • 原文地址:https://www.cnblogs.com/GH0522/p/8215553.html
Copyright © 2011-2022 走看看