包装类

简介: 包装类

包装类

  • 因为实际开发过程中经常需要操作对象,而不是普通数据类型的情形
  • 把8种基本类型包装成面向对象的类

  • 每个包装类的对象封装一个基本的数据类型,里面提供一些方法
  • 注意:基本数据类型的初始值是0,0.0,falese.... 包装类的初始值是null
  • 每一个包装类都是Number的子类(除了boolean和Character)
  • 基本类型和包装类可以相互转换:
  • 基本类型 -> 对应的包装类 装箱 (构造方法)
  • 包装类 -> 基本类型 拆箱 XXXValue()方法

// int 和 Integer相互转换

publicstaticvoidmain(String[] args) {

    intm=500;

    Integerobj=newInteger(m); // 手动装箱

    intn=obj.intValue(); // 手动拆箱

    System.out.println("n = "+n);

    Integerobj1=newInteger(500);

    System.out.println("obj 等价于 obj1?"+obj.equals(obj1));

}

 

Integern=newInteger("123"); // 输入纯数字组成的字符串时可以转换成对应的类型

// 输入带字符的String时会报错

 

Booleanb1=newBoolean("TRue"); //True 在忽略大小写的情况下

Booleanb2=newBoolean("true123"); // false 但不会报错

  • 自动装箱和自动拆箱
  • JDK1.5之前只能手动
  • JDK1.5之后可以自动装箱

publicstaticvoidmain(String[] args) {

   intm=500;

   Integerobj=m; // 自动装箱

   intn=obj; // 自动拆箱

   System.out.println("n = "+n);

   Integerobj1=500;

   System.out.println("obj 等价于 obj1?"+obj.equals(obj1));

}

  • 这些操作其实都是编译器根据你所编写的语法,决定是否进行操作的

基本数据类型+包装类和String的相互转化

// 将字符串转换成整数 paseInt(String s, int radix);

// s为要转换的字符串,radix为进制(可选)

publicvoidtest(){

Stringstr1="123";

intnum2=Integer.parseInt(str1);

// 调用对应包装类的parseXXX方法

System.out.println(num2);

}

 

 

// 将整数转换成字符串 toString()方法

// 或者直接在整数后面加空字符串即可

// 或调用String的VauleOf()

publicstaticvoidmain(String[] args){

    intm=500;

    Strings=Integer.toString(m); // 方式三:调用包装类的toString()方法将包装类转换成String

    Strings2=m+""; // 方式一:连接运算 + ” “

    System.out.println("s= "+s);

 

Doubled1=newDouble(12.4);

    Doubled2=10.1;

Strings3=String.valueof(d1);

Strings4=String.valueof(d2); // 方式二:调用String的VauleOf() 包装类和基本数据类型都适用

}

面试题

编译的时候要求两边的数据类型一致,所以统一成Double类型

Integer内部定义了IntegerCache结构,IntegerCache中定义了Integer[]

保存了从-128 ~ 127之间的整数。如果我们使用自动装箱的方式,给Integer赋值的范围在-128 ~ 127范围内时,可以直接使用数组中的元素,不用再去New了,目的是为了提高效率

相关文章
|
18天前
|
人工智能 JavaScript 前端开发
实战使用 Qwen3-coder 低代码开发 HTML 个人网站
阿里巴巴开源的Qwen3-coder模型,凭借强大性能和低代码能力,助力用户快速搭建个人网站。本文详解环境配置、提示词设计与部署流程,适合编程新手快速上手,掌握AI辅助开发技能。
1204 8
|
3天前
|
自然语言处理 前端开发 JavaScript
js异步
js异步
195 108