文章目录
包装类
Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的。基本类型的数据不具备"对象"的特性,只能进行简单的加减运算,不能调用方法。因此,java为每种数据类型分别设计了对应的类,即包装类。
包装类型是基本数据类型所对应的引用数据类型。
有了包装类后,Object可统一所有数据,包装类的默认值是null。
类型转换与装箱、拆箱
- 装箱:将基本数据类型转换为包装类
拆箱:将包装类转换为基本数据类型
在JDK1.5以前,需要手动装箱和拆箱;在JDK1.5及以后,支持自动装箱和拆箱。只需要包装类型 变量名=数据类型变量/数据值;
即可自动转换。 - 8种包装类提供不同类型间的转换方式:
(1)Number父类中提供的6个共性方法。
java.lang.Number提供直接对byte、double、float、int、long和short实现类型转换的方法。
数值给定的基本数据类型转换为包装类型:Integer integer = new Integer(10); ;
包装类型转换为数据类型:int a = integer.intValue();
(2)parseXXX()静态方法拆箱。
(3)valueOf()静态方法装箱。
(4)自动装箱;自动拆箱。
注意:需保证类型兼容,否则抛出NumberFormatException异常。
package study.pack;
public class Demo01 {
public static void main(String[] args) {
System.out.println("基本类型和字符串之间转换");
//1基本类型转成字符串
int n1=255;
String s1 = n1+""; //1.1使用+号
String s2=Integer.toString(n1); //1.2使用Integer中的toString()方法
System.out.println(s1);
System.out.println(s2);
//2字符串转成基本类型
String str="150" ;
int n2=Integer.parseInt(str); //使用Integer.parseXXX();
System.out.println(n2);
//boolean字符串形式转成基本类型,"true"--->true非"true"---->false
String str2="true";
boolean b1=Boolean.parseBoolean(str2);
System.out.println(b1);
}
}
/*
基本类型和字符串之间转换
255
255
150
true
*/
整数缓冲区
package study.pack;
public class Demo02 {
public static void main(String[] args) {
Integer integer1 = new Integer(100);
Integer integer2 = new Integer(100);
System.out.println(integer1 == integer2); //F,因为new出的地址不一样
Integer integer3 = 100;//自动装箱,相当于调用valueOf()方法
//Integer integer4 = 100;
Integer integer4 = Integer.valueOf(100);
System.out.println(integer3 == integer4); //T,在缓冲区内
Integer integer5 = 200;
Integer integer6 = 200;
System.out.println(integer5 == integer6); //F,不在缓冲区内,相当于新建地址
}
}
Java预先创建了256个常用的整数包装类型对象。
通过查看valueOf的源代码【按住Ctrl然后点击】:
当传入的数值在-128与127之间时,会被缓存在一个对象数组中,这样设计的原因是出于高并发时需要处理大量的数据,提前创建一个数组储存常用整数以备使用,可以用以缓冲,而当传入的数值不在这个范围之内,程序便会创建一个新的对象,因此这也是导致地址不同的原因。