n是对象,m是基本类型,这里面涉及到一个自动打包解包的过程,如果jdk版本过低的话没有这个功能的,所有输出的是false,估计你的书本是针对老版本的jdk而编写的,现在新版本的jdk都有自动打包解包功能了。
首先在Java里面,==比较的是内存地址,不是地址里面的内容,所以一般都不用==进行比较的,用equal会好一下,再来你用integer创建的是两个对象,肯定会位于不同的内存地址里面,用==来比较肯定会返回false的,如果jdk版本高一点的话,也会返回true的,因为jdk会帮你把对象自动拆箱,变成基本类型,没有的话,你试试用intege里面的intvalue方法进行拆箱之后,再进行比较,就返回true了
Integer 这是对象,用==是比较对象的指针地址的。int 不是对象,是基本数据类型没有指针的意思,用==比较的是值。
int 是基本数据类型
Integer是其包装类,注意是一个类。
为什么要提供包装类呢???
一是为了在各种类型间转化,通过各种方法的调用。否则 你无法直接通过变量转化。
比如,现在int要转为String
int a=0;
String result=Integer.toString(a);
在java中包装类,比较多的用途是用在于各种数据类型的转化中。
因此int可以用来比较值大小,但是integer是用来转化的,不能用来比较值大小。
对象比较用equals