首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

关于基本数据类型的有关问题

2012-01-29 
关于基本数据类型的问题我面试的时候,考了这样一个问题 : 为什么int型的数据可以用判断是否相等我查了一

关于基本数据类型的问题
我面试的时候,考了这样一个问题 : 为什么int型的数据可以用==判断是否相等  
我查了一下 : == 比较的是内存中的地址,比较的是对象的句柄;
  equals()比较的是地址内的内容,比较的是对象.
但是我不知道关于int型的应该怎么理解。
麻烦各位给俺详细的讲解一下。

还有 equals()比较的是对象 这句话我也不太理解

[解决办法]

探讨
equals()比较的是对象 这句话我也不太理解
简单理解.
String s =new String("aaa");
String s2 =new String("aaa");

s==s2 : false;
s.equals(s2) : true;

这就是它们的区别.

[解决办法]
因为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比较的时候会根据对象的引用找到对象的内容进行比较。

热点排行