包装类介绍

mac2024-08-22  69

基本数据类型


 

Java语言提供了八种基本类型: 六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型

基本数据类型不具有对象特征,没有属性、方法、无法对象化交互

   

包装类


 

通过包装类,可以让基本数据类型获取对象一样的特征,行使对象的相关权益Java中的包装类包括: Integer、Long、Short、Byte、Character、Double、Float、Boolean、BigInteger、BigDecimal其中 BigInteger、BigDecimal 没有相对应的基本类型,主要应用于高精度的运算 BigInteger 支持任意精度的整数BigDecimal 支持任意精度带小数点的运算

   

基本数据类型与包装类型的异同


 

在Java中,一切皆对象,但八大基本类型却不是对象声明方式的不同 基本类型无需通过 new 关键字来创建包装类型需 new 关键字 存储方式及位置不同 基本类型是直接存储变量的值保存在栈中能高效的存取包装类型需要通过引用指向实例,具体的实例保存在堆中 初始值的不同 包装类型的初始值为 null基本类型的初始值视具体的类型而定,比如 int 类型的初始值为0,boolean 类型为 false 使用方式的不同 与集合类合作使用时只能使用包装类型

   

包装类常用方法


 

JAVA 是一种面向对象语言,JAVA 中的类把方法与数据连接在一起,构成了自包含式的处理单元在 JAVA 中不能定义基本类型(primitive type)对象,为了能将基本类型视为对象进行处理,并能连接相关的方法,JAVA 为每个基本类型都提供了包装类如: int 型数值的包装类 Integerboolean 型数值的包装类 Boolean 等 这样便可以把这些基本类型转换为对象来处理了
Integer Integer 类在对象中包装了一个基本类型 int 的值该类的对象包含一个 int 类型的字段。该类提供了多个方法,能在 int 类型和 String 类型之间互相转换,同时还提供了处理 int 类型时非常有用的其他一些常量和方法构造方法: int 型变量作为参数创建 Integer 对象,实例代码如下:Integer number=new Integer(7);以 String 型变量作为参数创建 Integer 对象,实例代码如下:Integer number=new Integer(“7”); 常用方法:

常用的常量: MAX_VALUE: 表示 int 型可取的最大值int maxint = Integer.MAX_VALUE;MIN_VALUE: 表示 int 型可取的最小值int minint = Integer.MIN_VALUE;SIZE:表示以二进制补码形式表示 int 值的位数int intsize = Integer.SIZE;TYPE: 表示基本类型 Class 实例
Boolean Boolean 类将基本类型为 boolean 的值包装在一个对象中一个 Boolean 类型的对象只包含一个类型为 boolean 的字段此类还为 boolean 和 String 的相互转换提供了许多方法,并提供了处理 boolean 时非常有用的其他一些常量和方法构造方法: 创建一个表示 value 参数的 boolean 对象,实例如下:Boolean b = new Boolean(true);String 变量作为参数,创建 boolean 对象。此时,如果传入的字符串不为 null,且忽略大小写后的内容等于”true”,则生成 Boolean 对象值为 true,反之为 falseBoolean b1 = new Boolean("ok");System.out.println(b1);Boolean b2=new Boolean("TRUE");System.out.println(b2); 常用方法:

常用的常量: TRUE:对应基值 true 的 Boolean 对象FALSR:对应基值 false 的 Boolean 对象TYPE:表示基本类型 Class 实例
Byte Byte 类将基本类型为 byte 的值包装在一个对象中一个 byte 类型的对象只包含一个类型为 byte 的对象Byte 类提供了两种构造方法的重载形式来创建 BYTE 类对象: Byte(byte value)通过这种方法创建的 byte 对象,可表示指定的 byte 值例: byte mybyte=45;Byte b = new Byte(mybyte); Byte(String str)通过这种方法创建的 byte 对象,可表示 String 参数指定的 byte 值例: Byte mybyte = new Byte("12") 常用方法:

常用的常量: MIN_VALUE: 最小值MAX_VALUE: 最大值SIZE: 二进制TYPE: 表示基本类型 byte 的 class 实例
Character Character 类在对象中包装一个基本类型为 char 的值一个 Character 对象包含类型为 char 的单个字段构造方法: Character(char value) 构造方法:


Double/Float Double 和 Float 包装类是对 double、float 基本类型的封装都是 Number 类的子类,又都是对小数进行操作,所以常用基本方法相同Double 类在对象中包装一个基本类型为 double 的值,每个 double 类都包含一个 double 类型的字段构造方法: Double(double value):基于 double 参数创建 Double 类对象Double(String str)构造一个新分配的 Double 对象,表示用字符串表示的 Double 类型的浮点值 常用方法:


Number 抽象类 Number 是父类Number 的子类必须提供将表示的数值转换成 byte/double/float/long/int/short 的方法Number 类的方法被 Number 的各子类所实现常用方法:

   

基本数据类型和包装类之间的转换


 

装箱:把基本数据类型转换成包装类 自动装箱手动装箱 拆箱:把包装类转换成基本数据类型 自动拆箱手动拆箱 案例: public class HelloWorld { public static void main(String[] args) { // 定义int类型变量,值为100 int score = 100; // 创建Integer包装类对象,表示变量score1的值 //自动装箱 Integer score1=score; // 将Integer包装类转换为double类型 double score2=score1.doubleValue(); // 将Integer包装类转换为long类型 long score3=score1.longValue(); // 将Integer包装类转换为int类型 int score4=score1.intValue(); //打印输出 System.out.println("score对应的Integer类型结果为:"+score1); System.out.println("score对应的double类型结果为:"+score2); System.out.println("score对应的long类型结果为:"+score3); System.out.println("score对应的int类型结果为:"+score4); } }

   

基本数据类型和字符串之间的转换


 

基本数据类型转换为字符串 使用包装类的 toString() 方法 字符串转换为基本数据类型 自动拆箱调用包装类的 parseXxx() 静态方法调用包装类的 valueOf() 方法转换为基本类型的包装类,自动拆箱 案例: public class StringUse { public static void main(String[] args) { double a = 12.5; //将基本类型转换为字符串 String str1 = Double.toString(a); System.out.println("a 转换为String型后+10的结果为: "+ (str1+10)); String str = "2.8"; // 将字符串转换为基本类型 //double b = Double.valueOf(str); double b = Double.parseDouble(str); System.out.println("str 转换为double型后+10的结果为: "+ (b+10)); } }

   

对象常量池


 

案例: public class WrapperTest { public static void main(String[] args) { // TODO Auto-generated method stub Integer one=new Integer(100); Integer two=new Integer(100); System.out.println("one==two的结果:"+(one==two));//1 Integer three=100;//自动装箱 //Integer three=Integer.valueOf(100); System.out.println("three==100的结果:"+(three==100));//2 自动拆箱 //Integer four=100; Integer four=Integer.valueOf(100); System.out.println("three==four的结果:"+(three==four));//3 Integer five=200; System.out.println("five==200的结果:"+(five==200));//4 Integer six=200; System.out.println("five==six的结果:"+(five==six));//5 Double d1=Double.valueOf(100); System.out.println("d1==100的结果:"+(d1==100)); Double d2=Double.valueOf(100); System.out.println("d1==d2的结果:"+(d1==d2)); } } 当方法 valueOf() 在执行的过程中,如果传进来的参数范围大于等于 -128 且小于等于 127 时,会直接从对象池中查找是否存在这样一个对象 如果有这样的一个对象,将会直接产生如果没有这样的一个对象,将会隐式调用 new 关键字,实例化一个对象 Java 中八种基本面数据类型及其对应包装类,除了 float 和 double,其他的都可以应用对象常量池概念

   

总结案例


 

public class HelloWorld { public static void main(String[] args) { //定义float类型变量,赋值为88.99 float f1 =88.99f ; //将基本类型转换为字符串 String s=Float.toString(f1)+20; //打印输出 System.out.println("f1转换为String型后与整数20的求和结果为:"+s); //定义String类型变量,赋值为"188.55" String str ="188.55"; // 将字符串转换为基本类型double double d=Double.valueOf(str)+20; //打印输出 System.out.println("str转换为double型后与整数20的求和结果为:"+d); } }

   

最新回复(0)