本帖最后由 张权 于 2012-11-24 12:08 编辑
貌似这个问题我以前问过的吧,哈哈!刚开始看到发现又忘记了,这该死的记性,不过想了下又想起来了!
首先你要知道java 中 的数据类型,引用型数据类型和基本数据类型。
==在基本数据类型中,就是对两个基本类型数据的值进行比较,例如 int i=0;int b=0; 判断a==b,结果为true;
然后就是== 在引用数据类型中的比较了:
在引用数据类型与引用数据类型比较、引用数据与基本数据类型比较中,==比较的是对象的地址值,equals比较的是对象地址中的内容。
首先,你要明白这句话String b = new String("asd")中的b,这个b是一个类类型变量(或叫做引用),它只是引用了对象的地址值,所以b的值并不等于asd,你可以用System.out.println(b);这句话来验证,结果打印出来的是一个地址值,而不是asd. 所以 System.out.println(b=="asd");为false.
而用equals比较的是对象中的内容,又因为对象中的内容是"asd",所以 b.equals("asd")为true。
另外请你看下我问的== 与equals的区别这个问题,其中讲到了equals的另一特点,就是equals有可能比较的是地址值,而不是对象中的内容。
|