在工作中使用==埋下的坑这篇博文中,我们看到当使用基本类型的时候==是完全没有问题的,部分或者混合使用基本类型和装箱基本类型的时候,就可能出现问题了,那么我们可能会想基本类型和装箱基本类型有什么区别和联系哪?下面以int和Integer为例讲讲我的看法。int和Integer非常的像,所有的基本类型和其对应的装箱基本类型都非常的像,但是他们之间也是有区别的,他们之间的区别是什么哪?

为了明白他们之间的区别和联系,我们一起看看下面这段简单的代码和罗织在代码之间的结论吧!

1:TestIntMain.java——包含基本类型和装箱基本类型的区别和联系的结论注释

  1. import java.util.ArrayList;
  2. import java.util.List;
  3.  
  4. public class TestIntMain {
  5. public static void main(String [] args){
  6.  
  7. /**
  8. * 区别1:
  9. * int 声明的变量不能直接赋值为null
  10. * Integer 声明的变量能直接赋值为null
  11. */
  12. // int _int_ = null;//不能直接赋null
  13. Integer _Integer_ = null;//可以直接赋null
  14.  
  15. /**
  16. * 区别2:
  17. * int 声明的变量,存储就是一个数值,不能调用方法,它也没有方法可调用
  18. * Integer 声明的变量,是一个对象,它有对应的变量、方法,它可以自由的调用
  19. */
  20. int _int = 99;
  21. Integer _Integer1 = new Integer(99);
  22. //一个整数值,不能调用方法
  23. // System.out.println("_int type is : "+_int.getClass().getSimpleName()+"_int value is : "+_int.toString());
  24. System.out.println("_int value is : "+_int);
  25.  
  26. //一个对象,可以调用它的方法,属性等等
  27. System.out.println("_Integer1 type is : "+_Integer1.getClass().getName()+" _Integer1 value is : "+_Integer1);
  28.  
  29. /**
  30. * 自动装箱和拆箱
  31. * 自动装箱:我的理解是将基本类型的变量,自动转换为装箱基本类型的对象的过程
  32. * 自动拆箱:我的理解是将装箱基本类型的对象,自动转换为基本类型的变量的过程
  33. * 1:这是在Java1.5发行版本中增加的功能
  34. * 2:目的是为了模糊基本类型和装箱基本类型之间的区别,减少使用装箱基本类型的繁琐性
  35. * 3:这样做也有一定的风险,比如:对于装箱基本类型运用==操作符几乎总是错误的,装箱的操作会导致高的开销和不必要的对象创建
  36. */
  37. int _int1 = new Integer(99);//对应的匿名对象变成了一个整数值,自动拆箱
  38. int _int2 = _Integer1;//_Integer1对象变成了一个整数值,自动拆箱
  39. // System.out.println("_int1 type is : "+_int1.getClass().getSimpleName()+"_int1 value is : "+_int1.toString());
  40. System.out.println("_int1 value is : "+_int1);
  41.  
  42. Integer _Integer = 99;//对应的整数值,直接给你对象也没问题,自动装箱
  43. System.out.println("_Integer type is : "+_Integer.getClass().getName()+" _Integer value is : "+_Integer);
  44.  
  45. // List<int> list_ = new ArrayList<int>();
  46. List<Integer> list = new ArrayList<Integer>();
  47. list.add(_int);//_int 此时相当于是一个Integer类型的对象了,自动装箱
  48. list.add(_Integer);
  49. }
  50. }

2:TestIntMain.class——包含基本类型和装箱基本类型的自动装箱和拆箱的实现方式

  1. import java.util.ArrayList;
  2.  
  3. public class TestIntMain {
  4. public TestIntMain() {
  5. }
  6.  
  7. public static void main(String[] args) {
  8. Object _Integer_ = null;//Integer _Integer_ = null; 编译后是这样的哦
  9. byte _int = 99;//int _int = 99; 编译后是这样的哦
  10. Integer _Integer1 = new Integer(99);
  11. System.out.println("_int value is : " + _int);
  12. System.out.println("_Integer1 type is : " + _Integer1.getClass().getName() + " _Integer1 value is : " + _Integer1);
  13. int _int1 = (new Integer(99)).intValue();//自动拆箱的实现方式
  14. int _int2 = _Integer1.intValue();//自动拆箱的实现方式
  15. System.out.println("_int1 value is : " + _int1);
  16. Integer _Integer = Integer.valueOf(99);//自动装箱的实现方式
  17. System.out.println("_Integer type is : " + _Integer.getClass().getName() + " _Integer value is : " + _Integer);
  18. ArrayList list = new ArrayList();
  19. list.add(Integer.valueOf(_int));//自动装箱的实现方式
  20. list.add(_Integer);
  21. }
  22. }

 3:参考

http://mindprod.com/jgloss/intvsinteger.html

http://www.careerride.com/Java-QA-integer-vs-int.aspx

https://www.quora.com/What-is-the-difference-between-an-integer-and-int-in-Java

int和Integer之间的区别和联系的更多相关文章

  1. java int 与 Integer之间的区别

    int与integer的区别从大的方面来说就是基本数据类型与其包装类的区别: int 是基本类型,直接存数值,而integer是对象,用一个引用指向这个对象 1.Java 中的数据类型分为基本数据类型 ...

  2. Hashtable,HashMap,TreeMap有什么区别?Vector,ArrayList,LinkedList有什么区别?int和Integer有什么区别?

    接着上篇继续更新. /*请尊重作者劳动成果,转载请标明原文链接:*/ /*https://www.cnblogs.com/jpcflyer/p/10759447.html* / 题目一:Hashtab ...

  3. 在java语言中int 和 Integer 有什么区别

    在java语言中int 和 Integer 有什么区别 解答:int是基本数据类型,Integer是int的包装类,属于引用类型

  4. 一、基础篇--1.1Java基础-int 和 Integer 有什么区别,Integer的值缓存范围

    int和Integer的区别 int是基本数据类型,Integer是int的包装类. Integer必须实例化后才能使用,int变量不需要. Integer实际是对象的引用,生成一个新对象实际上是生成 ...

  5. Java int和Integer包装类的区别和比较

    区别:                                                                                                  ...

  6. Java Int和Integer有什么区别?

    Int int是我们常说的整型数字,是Java的8个原始数据类型(Primitive Type:boolean.byte.short.char.int.float.double.long)之一.Jav ...

  7. int 和 Integer 有什么区别

    原文地址:https://blog.csdn.net/chenliguan/article/details/53888018 1 int与Integer的基本使用对比 (1)Integer是int的包 ...

  8. java面试题(杨晓峰)---第七讲谈谈int和integer有什么区别?

    理解装箱和拆箱的过程. 对象由三部分组成:对象头,对象实例,对齐填充. 对象头:一般是十六个字节,分两部分,第一部分:哈希码,锁状态标志,线程持有的锁,偏向线程id,gc分代年龄等,第二部分是类型指针 ...

  9. PHP 中 int 和 integer 类型的区别

    半夜整理东西,发现一个以前没留意到的小问题. function show($id) : int { return $id; } function show($id) : integer { retur ...

随机推荐

  1. Ext JS isField为空或不是对象问题的解决

    在做Ext Js的DataGrid的时候经常会遇到这种问题,火狐谷歌没有问题,IE8及以下版本就无法通过,经调试会提示: “isField为空或不是对象问题的解决” 这通常是我们在js代码中多加了一个 ...

  2. UltraISO制作U盘启动盘安装Win7/9/10系统攻略

    U盘安装好处就是不用使用笨拙的光盘,光盘还容易出现问题,无法读取的问题.U盘体积小,携带方便,随时都可以制作系统启动盘. U盘建议选择8G及以上大小的. 下面一步一步讲解如果制作U盘安装盘: 1.首先 ...

  3. Python 使用pymongo操作mongodb库

    Python 使用pymongo操作mongodb库 2016-12-31 21:55 1115人阅读 评论(0) 收藏 举报  分类: - - - Python(10)  版权声明:本文为博主原创文 ...

  4. Android:安装时提示:INSTALL_FAILED_INSUFFICIENT_STORAGE

    在将程序发布到手机上时提示该错误: INSTALL_FAILED_INSUFFICIENT_STORAGE 解决方法: 1. adb shell 2. #df # df df Filesystem   ...

  5. 【高德地图Android SDK】视频教学

    前两天参加了高德在北航举办的公开课,感觉非常不错.完成老师布置的作业之后,还顺利地拿到了高德开发者认证证书!! 现在来跟大家分享一下,如何快速学习[高德地图Android SDK]的开发.一天包会!连 ...

  6. Asp.Net 之 禁用TextBox的记忆功能

    IE提供了一个自动完成功能可以记忆我们的输入内容(如登录帐号等),方便下一次快速地录入类似资料.这确实是一个非常友好的功能,在操作时只需用鼠标双击文本框或输入前几个字符,系统会自动列出以前的录入历史供 ...

  7. Linux中awk命令的简单用法

    一.用例1: cat /proc/meminfo|grep "MemTotal"|awk '{print $2}' 说明,$2表示第2位,$0表示全部,如需表示$,可用$$转义.

  8. Linux驱动程序:统计单词个数

    本例为Android升读探索(卷1):HAL与驱动开发 一书中附带的演示样例程序.现粘贴出来,以便查阅. 终端操作,可能用到的命令: insmond word_count.ko lsmod | gre ...

  9. 腾讯云ubuntu搭建tomcat

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6377945.html 一:工具准备 Putty+Xftp5,见上一篇博文:http://www.cnblogs ...

  10. linux下切换python2和python3(转)

    0x00 为什么需要有两个版本的Python Python2和Python3不兼容是每个接触过Python的开发者都知道的事,虽说Python3是未来,但是仍然有很多项目采用Python2开发.Lin ...