包装类

  • 包装类是为了解决基本类型不能在直接参与面向对象开发的问题
  • 8个基本类型对应8个不同的包装类,其中6个表示数字的包装类继承自java.lang.Number,其他两个继承自Object

  • 包装类是不可变类,在构造了包装类对象后,不允许更改包装在其中的值
  • 包装类是final的,不能定义他们的子类
基本类型 基本类型 父类
int java.lang.Intger java.lang.Number
long java.lang.Long java.lang.Number
double java.lang.Double java.lang.Number
short java.lang.Short java.lang.Number
float java.lang.Float java.lang.Number
byte java.lang.Byte java.lang.Number
char java.lang.Character java.lang.Object
boolean java.lang.Boolean java.lang.Object

valueOf方法 (打包)

public class IntegerDemo {public static void main(String[] args) {int d = 127;//Integer i1 = new Integer(d);//Integer i2 = new Integer(d);    /** java推荐我们使用包装类的静态方法:* valueOf来将基本类型转换为包装类*/Integer i1 = Integer.valueOf(d);Integer i2 = Integer.valueOf(d);System.out.println(i1 == i2);  //trueSystem.out.println(i1.equals(i2));    //true}
}

当valueOf(数值)中,数值小于128时,不会创建新对象,会重复运用已有的对象,i1==i2(true),若大于128则会新建对象i1 == i2(false),

intValue方法 (拆包)

public class IntegerDemo {public static void main(String[] args) {int d = 128;Integer i1 = Integer.valueOf(d);int i = i1.intValue();System.out.println(i);    //128byte b = i1.byteValue();System.out.println(b);    //-128}
}

拆包时由于128超过了byte的取值范围,会取到byte的最小值-128(详细见二进制)

MAX_VALUE(最大)、MIN_VALUE(最小)常量

  • MAX_VALUE,MIN_VALUE分别记录了其对应的基本类型的取值范围
public class IntegerDemo2 {public static void main(String[] args) {int imax = Integer.MAX_VALUE;System.out.println(imax);   //int的最大取值int imin = Integer.MIN_VALUE;System.out.println(imin);   //int的最小取值}
}

parseXXX方法

  • 包装类提供了一个功能,静态方法:parseXXX,该方法可以将字符串解析为对应的基本类型数据,前提是该字符串能正确描述要转换的基本类型可以保存的值
public class IntegerDemo2 {public static void main(String[] args) {String str = "123";int a = Integer.parseInt(str);double d = Double.parseDouble(str);System.out.println(a); //123System.out.println(d); //123.0}
}

如果str = “123.123”,则int a = Integer.parseInt(str);会报错,不是int类型

自动拆装箱

  • JDK5之后推出一个新的特性:自动拆装箱,该特性是编译器认可的,而不是虚拟机,编译器在看到有基本类型与包装类之间互相赋值时会添加转换代码将他们转换
public class IntegerDemo3 {public static void main(String[] args) {/** 这里触发了编译器自动拆箱特性,代码会被编译器改为:* int i= new Integer(1).intValue();*/int i= new Integer(5);/** 触发自动装箱特性,代码会被改为:* Integer in = Integer.valueOf(i);*/Integer in =i;}
}

包装类:valueOf方法、intValue方法、自动拆箱装箱相关推荐

  1. java char的包装对象,Java 从Character和char的区别来学习自动拆箱装箱

    本文结构 1.Character和char 的区别: 2.自动拆箱装箱java 1.Character和char 的区别: Character是类,char基本数据类型.数组 在java中有三个类负责 ...

  2. Java语言基础(常见对象3(数组排序(冒泡排序、选择排序、直接插入排序、快速排序、归并排序)、Arrays、基本数据类型包装类、Integer类、自动拆箱、自动装箱))

    Java语言基础 常见对象 数组排序 冒泡排序 相邻元素两两比较,大的往后放,第一次完毕,最大值的元素就会出现在最大索引处:以此循环 //冒泡排序:public static void main(St ...

  3. JAVA高级特性--自动拆箱-装箱,枚举类型

    基本数据类型转换为引用类型对象 一个自动装箱的例子 Integer i=10;相当于 Integer i=new Integer(10); 一个自动拆箱的例子 Integer m=10;int n=m ...

  4. JDK 1.5 新特性——自动拆箱装箱

    1.5版本支持了自动包装和解包操作,对于bool/Boolean,byte/Byte,double/Double,short/Short,int/Integer, long/Long,float/Fl ...

  5. Java中的自动拆箱装箱(AutoboxingUnboxing)

    一.基本类型打包器 1.基本类型:long.int.double.float.boolean 2.类类型:Long.Integer.Double.Float.Boolean 区别:基本类型效率更高,类 ...

  6. java 包装类缺点_Java 自动拆箱和自动装箱学习笔记

    Java 自动拆箱和自动装箱学习笔记 详情参考以下 1. 概述 Java 中的自动装箱和自动拆箱算是一种语法糖,也就是在编译阶段编译器在合适的情况下帮我们的做了自动拆箱和自动装箱. 众所周知,Java ...

  7. java 自动装箱自动拆箱_自动装箱和自动拆箱

    自动装箱和自动拆箱 Java 提供了 8 种基本数据类型,每种数据类型都有其对应的包装类型,包装类是面向对象的类,是一种高级的数据类型,可以进行一些比较复杂的操作,它们是引用类型而不再基本类型了. 基 ...

  8. 第三次学JAVA再学不好就吃翔(part64)--自动装箱和自动拆箱

    学习笔记,仅供参考 自动装箱和自动拆箱 装箱:把基本类型转换为包装类类型 int x = 100; Integer i1 = new Integer(x); 拆箱:把包装类类型转换为基本类型 int ...

  9. java中的自动装箱和自动拆箱

    Java为每种基本类型提供了对应的包装器类型,那么包装器类型在Java中扮演和起到什么的角色,这样从Java这个面向对象的语言特性来说了.因为容器中加入的都是类的对象而不是基本数据类型.故需要先将基本 ...

最新文章

  1. Generator + Promises, the best of all worlds in ES6
  2. element 0 of tensors does not require grad and does not have a grad_fn
  3. socket与http
  4. LeetCode 932. 漂亮数组(分治递归/循环)
  5. urllib的实现---请求响应and请求头处理
  6. 玩转Koa之核心原理分析
  7. 求平均值程序c语言,编写求一组整数的和与平均值的程序
  8. [导入]C#面向对象设计模式纵横谈(21):(行为型模式) Memento 备忘录模式.zip(9.73 MB)...
  9. powershell 模拟IE行为
  10. Java 实现 HTML 转 PDF 文件
  11. 键盘 计算机代码,键盘钩子示例
  12. 网络分析仪自动化测试软件,高效矢量网络分析仪自动测试方法
  13. 小米路由器3无线网连接到服务器,小米路由器3无线中继(桥接)怎么设置?
  14. 8/人天,小记一次 JAVA(APP后台) 项目改造 .NET 过程(后台代码已开源于 Github)
  15. 超详细实现淘宝静态页面(附全部代码)
  16. C语言——计算某日是该年的第几天
  17. Gartner 2019年EPP(终端防护)魔力象限(Endpoint protection platforms)
  18. 微信小程序踩坑—用户登录界面
  19. @Validated和@Valid 解决list校验问题
  20. 韦东山嵌入式开发板小结1

热门文章

  1. python笔记(1)
  2. React入门(4)--react提升项目性能的Api(pureComponent、memo、useMemo、useCallback)
  3. 多元线性回归——波士顿房屋价值模型预测
  4. 新城控股董事长王晓松:逆势增长51%,新城控股挖潜商业板块
  5. opencv-图形直方图(calcHist函数)详解(C++)
  6. linux SPI驱动代码追踪
  7. 虎扑分享:NLP算法有效提升风险内容识别效果,降本提效|虎博思享会
  8. 世界语言的表达等级制度,人情社会
  9. 生物-永生计划:永生计划
  10. 基于html5的智慧校园选课系统的设计与实现