基础类型对应的8个包装类

8个包装类

Java中为8中基本数据类型有对应准备了8种包装类型。8种包装类属于引用数据类型,父类是Object

8种包装类型对应的包类型名

基本数据类型 包装类型
byte java.lang.Byte(父类number)
short java.lang.Short(父类number)
int java.lang.Integer(父类number)
long java.lang.Long(父类number)
float java.lang.Float(父类number)
double java.lang.Double(父类number)
boolean java.lang.Boolean(父类Object)
char java.lang.Character(父类Object)

8种包装类只需要学习Integer,其他和 Integer 同理

包装类的作用

因为8种基本数据类型不够用。所以sun公司有提供对应的8种包装类型

都属于引用数据类型

//有时候会有这种需求:调用doSome方法的时候需要传一个数字上去。//但是数字属于基本数据类型,而doSome()方法参数的类型是Object。//可见doSome()方法无法接收基本数据类型的数字。这时就可以串一个数字对应的包装类进去//把100这个数字经过构造方法包装成对象MyInt myInt = new MyInt(100);//doSome()方法虽然不能直接传100,但是可以传一个100对应的包装类型。doSome(myInt);}public static void doSome(Object obj) {System.out.println(obj);}
//这种包装类作为测试  java已经提供了8种包装类型了 实际开发中不需要写
public class MyInt {private int value;public MyInt() {}public MyInt(int value) {this.value = value;}@Overridepublic String toString() {return String.valueOf(value);}
}

父类number的公共方法

8种包装类种有六个都是数字对应的包装类,他们的父类都是number,number中有这样的公共方法:

byte byteValue()返回指定号码作为值 byte ,这可能涉及舍入或截断。
abstract double doubleValue()返回指定数字的值为 double ,可能涉及四舍五入。
abstract float floatValue()返回指定数字的值为 float ,可能涉及四舍五入。
abstract int intValue()返回指定号码作为值 int ,这可能涉及舍入或截断。
abstract long longValue()返回指定数字的值为 long ,可能涉及四舍五入或截断。
short shortValue()返回指定号码作为值 short ,这可能涉及舍入或截断。

这些方法,所有的包装类的子类都有,这些方法都是负责拆箱的

//123这个基本数据类型,进行构造方法的包装达到了:基本数据类型向引用数据类型的转换。//基本数据类型--(转换为)-->引用数据类型(装箱)Integer integer = new Integer(123);//将引用数据类型--(转换为)-->基本数据类型float v = integer.floatValue();System.out.println(v);//123.00//将引用数据类型--(转换为)-->基本数据类型(拆箱)int retValue = integer.intValue();System.out.println(retValue);//123

Integer的构造方法

Integer(int)

Integer(String)

double同理

     //将数字转换成Integer包装类型(int --> Integer)Integer x = new Integer(100);System.out.println(x);//将String类型的数字,转换成Integer包装类型(String --> Integer)Integer y = new Integer("123");System.out.println(y);//double --> DoubleDouble d = new Double(1.23);System.out.println(d);//String浮点数 --> DoubleDouble e = new Double("1.23");System.out.println(e);

通过访问包装类的常量,来获取最大值和最小值

System.out.println("int的最大值" +Integer.MAX_VALUE);
System.out.println("int的最小值" + Integer.MIN_VALUE);
System.out.println("byte的最小值" + Byte.MAX_VALUE);
System.out.println("byte的最小值" + Byte.MIN_VALUE);

自动装箱与自动拆箱

在JDK1.5之后 支持自动装箱与自动拆箱了

自动装箱:基本数据类型自动转换为包装类。

自动拆箱:包装类自动转换为基本数据类型

有了自动拆箱之后 number类中的方法就用不着了

/*
在JDK1.5之后  支持自动装箱和自动拆箱了*/
public class IntegerTest05 {public static void main(String[] args) {//自动装箱//x是包装类型//int类型--(自动转换)-->IntegerInteger x = 100;System.out.println(x);//自动拆箱//y是基本数据类型//包装类型--(自动转换)--> 基本数据类型int y = x;System.out.println(y);//z是一个引用,z是一个变量,z还是保存了一个对象的内存地址。Integer z = 1000;//等同于 Integer z = new Integer(1000)// + 两边要求是基本数据类型,z是包装类,不属于基本数据类型。// 这里会进行自动拆箱,将z转换成基本数据类型System.out.println(z + 1);//自动拆箱机制Integer a = 1000;//Integer a = new Integer(1000); a是个引用,保存内存地址指向对象。Integer b = 1000;//Integer b = new Integer(1000); b也是个引用,保存内存地址指向对象。// == 比较的是对象的内存地址,a和b两个引用中保存的对象内存地址不同。// == 这个符号不会触发自动拆箱机制。(只有 + - * /等运算的时候才会。System.out.println(a == b);//falseSystem.out.println(a.equals(b));//因为是对象  这里可以使用equals方法}
}

注意点&面试题

java为了提高程序的执行效率,将[-128~~127]之间所有的包装对象提前创建好,放到了一个方法区的“整数型常量池”当中了,目的是只要用这个区间的数据不需要再new了,直接从整数型常量池中取出来。

在Integer这个类加载的时候就初始化这个整数型常量池:256个对象

Integer a = 128;Integer b = 128;System.out.println(a == b);//false//x保存的内存地址和y变量中保存的内存地址是一样的Integer x = 127;Integer y = 127;System.out.println(x == y);//true

常用方法

  1. (掌握)int intValue() 将 Integer的值作为 int 返回。

    //手动装箱Integer x = new Integer(1000);//手动拆箱int y = x.intValue();System.out.println(y);
    
  2. (掌握)int intValue(String s) s必须是数字字符串

    Integer a = new Integer("123");
    //java.lang.NumberFormatException  数字格式异常 要求是数字型的字符串 int b = a.intValue();System.out.println(b);
    
  3. (掌握)static int parseInt(String s, int radix) 将字符串参数解析为第二个参数指定的基数中的有符号整数 其他同理 parseFloat parseDouble等

    //网页上文本框中输入的233实际上是“233”字符串,后台数据库中要求存储233数字,此时java程序需要将“233”转换成233数字
    int i = Integer.parseInt("223");System.out.println(i);//223
    
  4. (了解)static String toBinaryString(int i) 把一个数字转换为二进制字符串

    String s = Integer.toBinaryString(125);System.out.println(s);//1111101
    
  5. (了解)static String toHexString(int i) 16进制

    String d = Integer.toHexString(125);System.out.println(d);//7d
    
    public String toString() {return getClass().getName() + "@" + Integer.toHexString(hashCode());}
    //这是Object类默认的toString方法 它在后面调用了Integer.toHexString方法 返回的地址就是一个十六进制的数字
    
  6. (了解)static String toOctalString(int i) 8进制

    String s1 = Integer.toOctalString(125);System.out.println(s1);//175
    
  7. (了解)static Integer valueOf(int i) int–>Integer

    static Integer valueOf(String s) String–>Integer

           Integer i1 = Integer.valueOf(100);System.out.println(i1);Integer i2 = Integer.valueOf("100");System.out.println(i2);
    

各类型之间的转换

     //String --> intString s3 = "123";int x1 = Integer.parseInt(s3);System.out.println(s3+1);//int --> StringString s1 = String.valueOf(123);//int --> IntegerInteger x = 1;//Integer --> intint y = x;//String --> IntegerInteger k = Integer.valueOf("256");//Integer --> StringString s2 = String.valueOf(k);

基础类型对应的8个包装类相关推荐

  1. Java基础类型的包装类传值NullPoint问题

    错误集,记录下自己犯过的错误 今天在做Java开发时,想一个参数类型为int的方法传递一个类型为Integer的变量, 一开始都是以有值的变量进行测试,忘了Integer的变量时引用类型,有可能为nu ...

  2. JAVA学习笔记--类型转换(父类子类 Object 基本类型 String) 拆装箱 包装类

    最近一段时间忙着学习JAVA,本来net学的也不怎么好,趁着这个机会转下方向学习JAVA.不过.NET core的开源还是有点搞头的,微软了解一下.接下来几天我也会陆续写一些内容关于线程和集合等方面, ...

  3. Java 基础类型int 与 Integer

    Java 基础类型int 与 Integer int与Integer区别 int是基础类型, Integer为对象并且为int的包装类 int的默认值为0, Integer为null 观察以下代码执行 ...

  4. 《大话Java性能优化》面向对象及基础类型相关部分

    3.1 面向对象及基础类型 3.1.1 采用Clone()方式创建对象 Java语言里面的所有类都默认继承自java.lang.Object类,在java.lang.Object类里面有一个clone ...

  5. 面试必考之Java中String是基础类型?是包装类型?

    我们都知道,Java中String不属于基础数据类型.基础类型只有8中基本数据类型:byte.short.int.long.float.double.char.boolean,而String是最常用到 ...

  6. 知识回顾(一):Java八大基础类型、四大引用类型

    一.Java一共有八大基础类型 分为三类:整型(byte,int,short,long,float,double),字符型(char),布尔型(boolean).      注意:字符串String不 ...

  7. TypeScript 基础类型

    基础类型 基础类型可以依据是否含有类型关键字分为两类: 含:boolean.number.string.symbol.object.null.undefined.any.never 不含:数组.元组. ...

  8. Python基础类型之元组

    Python基础类型之元组 一.元组的介绍 二.元组的使用 三.元组不可变特性 1.不可修改 2.元组的第一层不可变 四.单独元素的使用 一.元组的介绍 1.Python的元组与列表类似,不同之处在于 ...

  9. ABAP基础类型温习

    基础类型 .P 声明: TYPES mount  TYPE p length 5 DECIMALS 2. 又称为压缩类型. 值范围1-15整型数字(除去最后的符号位). 若在没有定义长度的情况下,默认 ...

最新文章

  1. Matlab-贪心/贪婪算法
  2. ETL工具框架开源软件
  3. Tesseract-OCR引擎 入门
  4. JS----JavaScript中函数
  5. java gui框架_推荐!程序员整理的Java资源大全
  6. es6一维数组转二维数组_技术图文:Numpy 一维数组 VS. Pandas Series
  7. 火力发电厂与变电站设计防火标准_详细解析仓库防火设计标准
  8. 思杰彻底简化浏览器应用的安全交付
  9. 美团多渠道打包原理以及使用
  10. python编写量化交易程序英语_Python量化交易开源框架:AmazingQuant
  11. Linux磁盘管理基本配置
  12. 原子结构示意图全部_所有原子结构示意图(1-118号)最新元素周期表
  13. 前端页面点击姓名查看详情
  14. 计算机网络--使用网络协议分析器捕捉和分析协议数据包
  15. 分论坛介绍:机器学习、企业数据中台、实验科学与因果推断
  16. 连锁店如何进行视频监控直播?移动监控视频流媒体在连锁店直播的应用
  17. 打印机无线连接台式机、笔记本找不到目标打印机解决方案
  18. app软件小程序开发
  19. 数学建模竞赛必须要掌握的十个算法
  20. 手写一个迷你版的 Tomcat 喵

热门文章

  1. 64位win7系统的VS2010生成C#执行exe无法在32位机器运行的解决办法
  2. linux 提取网卡驱动,韦东山-Linux下移植wifi网卡驱动(RTL8723) - 百问网嵌入式问答社区...
  3. R语言中使用boxplot函数绘制箱线图
  4. Apach Geode概述及安装启动测试
  5. uniapp转小程序分享到朋友圈
  6. SpringIOC手动装配(注入):构造器注入,静态工厂注入,实例化工厂注入
  7. 查看请求服务的ip:netstat
  8. 动态规划:最大子序列和
  9. 脱口而出口语100句
  10. jmeter socket close 原因