Java中==和equals的比较

Posted on 2018-06-26 16:45  七月妖妖无  阅读(215)  评论(0编辑  收藏  举报

1.==

(1)基本数据类型:比较值

    基本类型有8种:

    整数型:byte 字节类型:1个字节(8位)

        short 短整型:2个字节(16位)

        int  整数类型:4个字节(32位)   Java默认

        long  长整型:8个字节(64位)

    浮点型:float  浮点型(单精度):4个字节(32位)

        double 双精度类型(双精度):8个字节(64位)  Java默认

    逻辑型:boolean 布尔类型:1/8个字节(1位)

    字符型:char  字符型:2个字节(16位)

  注意: 基本类型在栈中可以直接分配内存的是

      引用类型的引用在栈中,它的对象在堆中

 

基本类型:

 

基本类型自然不用说了,它的值就是一个数字,一个字符或一个布尔值。

 

引用类型:

 

是一个对象类型,值是什么呢?它的值是指向内存空间的引用,就是地址,所指向的内存中保存着变量所表示的一个值或一组值。 

 

(2)复合数据类型:比较在内存中的地址,除非是同一个new出来的对象

 

2.equals:在Java中的类都是继成Object这个基类,在Object这个基类中定义了equals的方法,源代码时比较内存地址的,但在一些类库中是覆盖了该方法,如String、Integer、Date等,比较的是它们的内容。

  Java  String类的equals源码: https://blog.csdn.net/helllochun/article/details/45074179

 

   具体实例:http://www.cnblogs.com/zhxhdean/archive/2011/03/25/1995431.html