1、int是java中的基本数据类型,而Integer是int的包装类

2、Integer变量必须实例化之后才能使用,而int则不需要

3、Integer实际是对象的引用,而int是直接存储数据值

4、Integer的默认值是null,int的默认值是0

实例:

package com.lsj.test;


public class test {
	public static void main(String[] args) {

		Integer a=new Integer(100);
		Integer b=new Integer(100);
		Integer c=100;
		Integer i=100;
		Integer j=128;
		Integer k=128;
		int d=100;
		System.out.println(a==b);
		System.out.println(a==c);
		System.out.println(a==d);
          System.out.println(c==d); System.out.println(c==i); System.out.println(j==k); } }

  运行结果:

1.false
2.false
3.true
4.true
5.true
6.false

  分析:1、Integer实际是对对象的引用,new生成两个Integer变量,由于内存地址不同,故始终不会相等,即结果为false;

     2、不是通过new生成的Integer变量和通过new生成的Integer变量进行比较时,结果为false,因为非new生成的Integer变量会存放在常量池中,而通过new创建的Integer变量会存放在堆中。

     3、int变量和Integer变量比较,实际上是值的比较,只要两个值相等,结果就为true。因为此时java会自动拆包装为int。

     4、同上述3的分析一样

     5、对于两个非new生成的Integer对象时,只要两个变量的值在-128和127区间内,且值相等的话,结果就为true。换句话说,只要两者值不在-128-127区间之内,结果均为false。

     6、见上述5