首页 > 代码库 > Java教程——int与Integer的区别
Java教程——int与Integer的区别
首先说一下int和Integer的区别:
- int 是基本数据类型,Integer是int的包装类。注意:后者的类型是“类”。例如使用泛型,List<Integer> numList;
- int初值0,integer是null。
下面看具体例子:
1 package syswar.cc; 2 3 public class IntegerCompare { 4 5 public static void main(String[] args) { 6 // TODO Auto-generated method stub 7 Integer a1 = 2; 8 Integer a2 = 2; 9 10 Integer b1 = 150; 11 Integer b2 = 150; 12 13 Integer c1 = new Integer(2); 14 Integer c2 = new Integer(2); 15 16 Integer d1 = new Integer(150); 17 Integer d2 = new Integer(150); 18 19 System.out.println("a1==a2?" + (a1==a2)); 20 System.out.println("b1==b2?" + (b1==b2)); 21 System.out.println("c1==c2?" + (c1==c2)); 22 System.out.println("d1==d2?" + (d1==d2)); 23 } 24 25 }
运行结果:
a1==a2?true b1==b2?false c1==c2?false d1==d2?false
为什么是这个结果呢?我们先比较a和b两组,Integer初始化时,缓存Integer对象数据,这些Integer对象对应的int值为byte范围,即[-128,127]。
当直接给Integer赋int值时,如果值得范围为[-128,127],Integer直接从缓存中取Integer对象,因此,当直接赋的int值处于[-128,127]时,Integer对象为相同的对象。
而通过new方式取的Integer对象,是直接从堆里面分配的对象,因此,不管具体的int值为多少,==判断的结果都是false
Java教程——int与Integer的区别
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。