Java进阶java int与Integer的区别

前言

int与Integer的区别从大的方面来说就是基本数据类型与其包装类的区别:

int 是基本类型,直接存数值,而Integer是对象,用一个引用指向这个对象。

1.Java 中的数据类型分为基本数据类型和复杂数据类型

int 是前者而Integer 是后者(也就是一个类);因此在类进行初始化时int类的变量初始为0.而Integer的变量则初始化为null。

2.初始化时:

int i =1;

Integer i= new Integer(1);(要把Integer 当做一个类看);但由于有了自动装箱和拆箱(始于jdk1.5),使得对Integer类也可使用:Integer i= 1;    

int 是基本数据类型(面向过程留下的痕迹,不过是对java的有益补充),Integer 是一个类,是int的扩展,定义了很多的转换方法。

类似的还有:float Float;double Double;boolean Boolean等,而且还提供了处理 int 类型时非常有用的其他一些常量和方法

举个例子:当需要往ArrayList,HashMap中放东西时,像int,double这种内建类型是放不进去的,因为容器都是装 object的,这是就需要这些内建类型的外覆类了。

Java中每种内建类型都有相应的外覆类。

Java中int和Integer关系是比较微妙的。关系如下:

  1.int是基本的数据类型;

  2.Integer是int的封装类;

  3.int和Integer都可以表示某一个数值;

  4.int和Integer不能够互用,因为他们两种不同的数据类型;

  举例说明

  ArrayList al=new ArrayList();

  int n=40;

  Integer nI=new Integer(n);

  al.add(n);//不可以

  al.add(nI);//可以

  并且泛型定义时也不支持int: 如:List<Integer> list = new ArrayList<Integer>();可以  而List<int> list = new ArrayList<int>();则不行。

总而言之:如果我们定义一个int类型的数,只是用来进行一些加减乘除的运算or作为参数进行传递,那么就可以直接声明为int基本数据类型,但如果要像对象一样来进行处理,那么就要用Integer来声明一个对象,因为java是面向对象的语言,因此当声明为对象时能够提供很多对象间转换的方式与一些常用的方法。自认为java作为一门面向对象的语言,我们在声明一个变量时最好声明为对象格式,这样更有利于你对面向对象的理解。

注  基本类型与包装类型的异同

1、在Java中,一切皆对象,但八大基本类型(char,byte,int,double,float,short,long,boolean)却不是对象。

2、声明方式的不同,基本类型无需通过new关键字来创建,而封装类型需new关键字。

3、存储方式及位置的不同,基本类型是直接存储变量的值保存在堆栈中能高效的存取,封装类型需要通过引用指向实例,具体的实例保存在堆中。

4、初始值的不同,封装类型的初始值为null,基本类型的的初始值视具体的类型而定,比如int类型的初始值为0(整数:包括int,short,byte,long ,初始值为0),boolean类型为false,浮点型:float,double ,初始值为0.0,字符:char ,初始值为空格,即'' ",如果输出,在Console上是看不到效果的。

5、使用方式的不同,比如与集合类合作使用时只能使用包装类型。

  
原文地址:https://blog.csdn.net/sunhuaqiang1/article/details/51958714
 
 

最新文章

  1. 机器学习库shark安装
  2. jvm性能监控与故障处理工具
  3. Spring Boot 框架@Temporal(TemporalType.DATE)
  4. BZOJ2049——[Sdoi2008]Cave 洞穴勘测
  5. poj 1004:Financial Management(水题,求平均数)
  6. 并查集(HDOJ 1856)
  7. Gradle学习系列之三——读懂Gradle语法
  8. [LintCode] Trapping rain water II
  9. java 1G大文件复制
  10. Codeforces 443 B Kolya and Tandem Repeat【暴力】
  11. .Net Core配置文件
  12. WEB 3D SVG CAD 向量 几个实施
  13. GPU加速有坑?
  14. 【leetcode】349. Intersection of Two Arrays
  15. H5缓存
  16. shell命令输入输出重定向
  17. laravel表单验证
  18. listview添加数据
  19. paired-end reads的拼接
  20. Xor-MST CodeForces - 888G (最小生成树,分治)

热门文章

  1. 简单servlet调用dao层完整步骤
  2. CorelDRAW记事本写实图标的制作流程
  3. Apache_安装
  4. Google Shell Style Guide
  5. 实体服务器安装centos7过程记录
  6. Windows 安装react native
  7. 使用idea搭建maven项目时 java目录下的xml文件没有加载的解决方法
  8. 一个asp+ACCESS省市二级联动菜单程序
  9. redis-不常用的命令
  10. Python 远程调用MetaSploit