相关文章

  1. 《常用类 (一) ----- Arrays数组工具类》
  2. 《常用类 (二) ----- Math类》
  3. 《常用类 (三) ----- BigDecimal和BigInteger大数类》
  4. 《常用类 (四) ----- Random随机数类》
  5. 《常用类 (五) ----- Date日期类和Calender日历类》
  6. 《常用类 (六) ----- String类与字符串》
  7. 《常用类 (七) ----- 包装类》

本篇涉及内容

  • 包装类概述
  • Integer类详解

包装类概述


一、基本概念

 包装类在java.lang包下,所有的包装类都属于引用数据类型。

二、基本数据类型对应的包装类型
基本数据类型 包装类型
byte Byte(父类Number)
short Short(父类Number)
int Integer(父类Number)
long Long(父类Number)
float Float(父类Number)
double Double(父类Number)
char Character(父类Object)
boolean Boolean(父类Object)
三、装箱与拆箱
  1. 装箱:通过包装类,将基本数据类型转为引用数据类型的过程

  2. 拆箱:包装类对象调用以下方法,将引用数据类型转为基本数据类型过程

    byte byteValue()
    double doubleValue()
    float floatValue()
    int intValue()
    long longValue()
    short shortValue()

    // 装箱,基本数据类型--->引用数据类型
    int a = 123
    Integer i1 = new Integer(a);// 手动装箱
    Integer i2 = a;// 自动装箱// 拆箱,引用数据类型--->基本数据类型
    int b1 = i1.intValue();// 手动拆箱
    int b2 = i1;// 自动拆箱
    

详解Integer包装类


一、基本内容
  1. 字段
    MAX_VALUE,获取当前包装类对应的基本数据类型的最大取值
    MIN_VALUE,获取当前包装类对应的基本数据类型的最小取值

  2. 构造方法
    Integer(int value)——用int类型值构造
    Integer(String s)——用字符串构造

  3. 常用方法

    以下均为静态方法

    返回值 方法名与形参 功能
    int parseInt(String s) 将字符串转为int类型
    Integer valueOf(int i) 整型转Integer
    Integer valueOf(String s) 字符串转Integer
    String toBinaryString(int i) 十进制数转为二进制
    String toOctalString(int i) 十进制转为八进制
    String toHexString(int i) 十进制转十六进制
二、关于自动装箱和自动拆箱
  1. 自动装箱

    
    // 等价于Integer i1 = new Integer(1000);
    Integer i1 = 1000;
    Integer i2 = 1000;
    Integer i3 = 2000;// 等价于Integer i4 = new Integer(i1.intValue() + i2.intValue());
    Integer i4 = i1 + i2;System.out.println(i1 == i2);// false
    System.out.println(i3 == i4);// false
    System.out.println(i4 == 2000);// true

    触发条件:
     (1) 直接用基本数据类型值给对应包装类赋值。

    注意:
     (1) 包装类的引用之间判等没有自动拆箱,比较的是引用指向的内存地址。
     (2) 包装类与基本数据类型之间的判等有自动拆箱。

  2. 自动拆箱

    
    Integer a = 1000;
    Integer b = 1000;
    Integer c = 2000;// 没有自动拆箱,比较的是引用指向的堆区的内存地址
    System.out.println(a == b);// false// 包装类型和基本数据类型运算,自动拆箱
    System.out.println(a == 1000);// true
    System.out.println(a < 2000);// true// 包装类与包装类运算,自动拆箱
    System.out.println(a < c);// true// 先自动拆箱为基本数据类型,然后基本数据类型与包装类型判等(自动拆箱)
    System.out.println(a + b == c);// true
    System.out.println(a + 1000 == c);// true

    触发条件:
     (1) 用基本数据类型与包装类进行运算,此时包装类会自动拆箱。
     (2) 包装类之间进行运算(除==),此时包装类会自动拆箱。

  3. 关于整数型常量池
     java中为了提高程序的执行效率,将[-128, 127]之间所有包装类对象提前创建好了,放到了方法区的“整数型常量池”中(类比“字符串常量池”),只要使用这个区间的数据,那么包装类的引用不会指向堆区,而是直接指向“整数型常量池”中已存在的数据。

    Integer a = 128;Integer b = 128;Integer x = 127;Integer y = 127;// 128超过了[-128,127]区间取值,所以创建包装类对象时a,b引用指向的是堆区不同内存地址System.out.println(a == b);// false// 127在[-128,127]区间内,所以x,y引用指向是方法区的"整数型常量池"中同一个数据的内存地址System.out.println(x == y);// true

常用类 (七) ----- 包装类相关推荐

  1. JavaSE入门学习30:Java常用类之包装类

    一包装类 我们对基本数据类型都非常熟悉,例如int.float.double.boolean.char等.基本数据类型是不具备对象的特性 的,比如基本类型不能调用方法.功能简单.为了让基本数据类型也具 ...

  2. javaSE各阶段练习题--工具类-常用类-递归-包装类-内部类

    1 创建一个Student 类 包含属性有 序号 姓名 年龄 生日 提供对应的setter/getter创建对象,完成赋值(setter赋值和构造方法赋值) 在控制台输出学生对象的信息,要求生日的格式 ...

  3. 常用类 (三) ----- BigDecimal和BigInteger大数类

    相关文章: <常用类 (一) ----- Arrays数组工具类> <常用类 (二) ----- Math类> <常用类 (三) ----- BigDecimal和Big ...

  4. 常用类 (二) ----- Math类

    相关文章: <常用类 (一) ----- Arrays数组工具类> <常用类 (二) ----- Math类> <常用类 (三) ----- BigDecimal和Big ...

  5. 常用类 (四) ----- Random随机数类

    相关文章: <常用类 (一) ----- Arrays数组工具类> <常用类 (二) ----- Math类> <常用类 (三) ----- BigDecimal和Big ...

  6. 常用类 (一) ----- Arrays数组工具类

    相关文章: <常用类 (一) ----- Arrays数组工具类> <常用类 (二) ----- Math类> <常用类 (三) ----- BigDecimal和Big ...

  7. 常用类 (五) ----- Date日期类和Calender日历类

    相关文章: <常用类 (一) ----- Arrays数组工具类> <常用类 (二) ----- Math类> <常用类 (三) ----- BigDecimal和Big ...

  8. 常用类 (六) ----- String类与字符串

    相关文章: <常用类 (一) ----- Arrays数组工具类> <常用类 (二) ----- Math类> <常用类 (三) ----- BigDecimal和Big ...

  9. 这些Java常用类,你必须要学会,还不快快收藏?(近两万字详细介绍)

    零基础学习之Java常用类 概述 包装类 和数学相关的类 String类 创建字符串对象 使用构造方法 使用静态方法 使用" " + 拼接 字符串对象的比较 字符串的常用方法 可变 ...

最新文章

  1. 怎样用Beyond Compare比较两个txt文件
  2. 一篇文章让你真正了解Java
  3. IOS数据存储 —— 1 沙盒(数据存储目录)
  4. coroutine - yield from
  5. PERL 使用IO::Socket::INET模块实现socket编程
  6. 【RLchina第二讲】 Foundations of Reinforcement Learning
  7. CodeForces - 748C Santa Claus and Robot
  8. Markdown编辑器对比分析
  9. 绝地求生登录计算机需要授权,Steam第三方授权登录错误 《绝地求生大逃杀》国服绑定受影响!...
  10. 从零开始学java第一章 认识java
  11. 矩阵论-线性空间与线性映射
  12. 计算机毕业设计Java共享充电宝管理系统(源码+系统+mysql数据库+Lw文档)
  13. 为FishBot模型注入物理属性并在Gazebo中显示
  14. 体验5款陌生社交App后,发现全是“金钱”套路
  15. Spring5学习详细笔记
  16. 思科服务器如何重装系统,【干货】思科 ios 软件的安装升级方法
  17. oracle 增加tns,TNS-01184频繁出现(增加了TRACE)
  18. SM 2256K AB 无缓存量产工具
  19. Android开源项目汇总20150712更新
  20. 不用带眼镜 东芝裸眼3D电视9个角度随便看

热门文章

  1. Webpack学习手册
  2. Tomcat的8080、8005、8009端口
  3. hdu 1710 Binary Tree Traversals (二叉树)
  4. 读书日记- 堆排序算法
  5. 引用和指针的区别[zz]
  6. 【jQuery笔记Part2】02-jQuery展开收起动画帷幔效果案例下拉菜单案例显示隐藏更多案例折叠菜单案例
  7. 小程序入门学习12--云函数与数据库01
  8. Linux修改history存储的最大记录数
  9. 期货品种产业链图表_化工
  10. 产品经理为什么越来越不值钱?不懂数据,只能尴尬退场