关于基本数据类型的问题
我面试的时候,考了这样一个问题 : 为什么int型的数据可以用==判断是否相等
我查了一下 : == 比较的是内存中的地址,比较的是对象的句柄;
equals()比较的是地址内的内容,比较的是对象.
但是我不知道关于int型的应该怎么理解。
麻烦各位给俺详细的讲解一下。
还有 equals()比较的是对象 这句话我也不太理解
------解决方案--------------------
------解决方案--------------------
因为int是基本数据类型,我理解为:
内存区域:
int a = 2;
地址x
-----------
| a | 2 | 这是int型存储。
-----------
Object obj = new Object();
Object obj1 = obj;
地址m
-----------
| obj | n | 这是对象引用obj的存储。
-----------
-----------
| obj | n | 这是对象引用obj1的存储。
-----------
地址n
----------------
| new Object() | 这是对象的存储。
----------------
==判断的是XXXXX位置的值是否相等。
-----------
| |XXXXX|
-----------
------解决方案--------------------
楼主要知道基本数据类型、对象、地址的几个概念
== 比较的是内存中的地址,比较的是对象的句柄;
对基本数据类型,内存地址存放的就是值,所以比较也就是值。
对对象,内存地址存放的是对象的引用,具体对象内容不在这个地址,具体对象内容在内存地址存放的值中对应的内存地址中。
equals()比较的是地址内的内容,比较的是对象.
equals比较的时候会根据对象的引用找到对象的内容进行比较。