Java常用工具_2.Java包装类
一、包装类与基本数据类型
包装类的作用
基本数据类型:(不具有对象的特征)没有属性、方法,无法对象化交互
包装类:拥有属性、方法,可以进行对象化交互
对应关系
二、包装类常用方法
1.java.lang.Integer
(1)包装类都是final修饰,因此不能被继承
(2)extends Number
数值型都继承自Number类,而字符(Character)、布尔(Boolean)继承自Object类
(3)
(4)
(5)
byteValue…等方法可以将int型转换为byte…型
三、装箱&拆箱
装箱:将基本数据类型的值转换为对应包装类的对象
拆箱:将包装类的对象转换为对应基本数据类型的值
装箱:自动装箱和手动装箱
拆箱:自动拆箱和手动拆箱
package com.study.wrap;
public class WrapTest1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
// 装箱:把基本数据类型转换成包装类
// 1、自动装箱
int t1 = 2;
Integer t2 = t1;
// 2、手动装箱
Integer t3 = new Integer(t1);
// 测试
System.out.println("int类型变量t1=" + t1);
System.out.println("Ingeger类型对象t2=" + t2);
System.out.println("Ingeger类型对象t3=" + t3);
System.out.println("***********************");
// 拆箱:把包装类转换成基本数据类型
// 1、自动拆箱
int t4 = t2;
// 2、手动拆箱
int t5 = t2.intValue();
// 测试
System.out.println("Integer类型对象t2=" + t2);
System.out.println("自动拆箱后,int型变量t4=" + t4);
System.out.println("手动拆箱后,int型变量t5=" + t5);
double t6 = t2.doubleValue();
System.out.println("手动拆箱后,double型变量t6=" + t6);// 2.0
}
}
四、基本数据类型和字符串之间的转换
package com.study.wrap;
public class WrapTest2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
// 基本数据类型转换为字符串
int t1 = 2;
String t2 = Integer.toString(t1);
// 测试
System.out.println("int类型转换为String类型对象t2=" + t2);
System.out.println("*****************************");
// 字符串转换为基本数据类型
// 1、包装类的parse
int t3 = Integer.parseInt(t2);
// 2、包装类的valueOf先将字符串转换为包装类,再通过自动拆箱完成基本数据类型的转换
int t4 = Integer.valueOf(t2);
// 测试
System.out.println("String类型转换为int类型变量t3=" + t3);
System.out.println("String类型转换为int类型变量t4=" + t4);
}
}
五、常量池
1.基本数据类型:
Java 语言提供了八种基本类型:六种数字类型(四个整数型,两个浮点型),
一种字符类型,还有一种布尔型.
1、整数:包括 int,short,byte,long ,初始值为 0
2、浮点型:float,double ,初始值为 0.0
3、字符:char ,初始值为空格,即’’ ",如果输出,在 Console 上是看不到效果的
4、布尔:boolean ,初始值为 false
2.包装类:
Java中的包装类包括:Integer、Long、Short、Byte、Character、Double、Float、Boolean、Big Integer、Big Decimal.
其中Big Integer、Big Decimal没有相对应的基本类型、主要应用于高精度的运算、Big Integer支持任意精度的整数、Big Decimal支持任意精度带小数点的运算。
3.包装类初始值
package com.study.wrap;
public class Cat {
// 成员属性
String name;
Integer month;
Double weight;
}
package com.study.wrap;
public class CatTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
// 实例化对象
Cat one = new Cat();
// 测试输出
System.out.println("猫的昵称:" + one.name);
System.out.println("猫的年龄:" + one.month);
System.out.println("猫的体重:" + one.weight);
// 输出结果为:
/*
* 猫的昵称:null 猫的年龄:null 猫的体重:null
*/
}
}
3.基本类型与包装类型的异同:
1、在 Java 中,一切皆对象,但八大基本类型却不是对象.
2、声明方式的不同,基本类型无需通过 new 关键字来创建,而包装类型需 new 关键字.
3、存储方式及位置的不同,基本类型是直接存储变量的值保存在栈中能高 效的存取,包装类型需要通过引用指向实例,具体的实例保存在堆中.
4、初始值的不同,包装类型的初始值为 null,基本类型的的初始值视具体 的类型而定,比如 int 类型的初始值为 0,boolean 类型为 false.
5、使用方式的不同,比如与集合类合作使用时只能使用包装类型.
4.Integer的对象常量池:
Integer four = 100;// 自动装箱时,
相当于Integer four=Integer.valueOf(100);
当存入的值为-128<参数<127时,从缓存区(对象池)直接产生,
若不在范围内,则使用new实例化
package com.study.wrap;
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));// false
Integer three = 100;// 自动装箱
System.out.println("three==100的结果:" + (three == 100));// 自动拆箱,结果为true
Integer four = 100;// 自动装箱时,相当于
// Integer four=Integer.valueOf(100);当存入的值为-128<参数<127时,从缓存区(对象池)直接产生,不在范围内,实例化
System.out.println("three==four的结果:" + (three == four));// true
Integer five = 200;// 自动装箱
System.out.println("five==200的结果:" + (five == 200));// true
Integer six = 200;
System.out.println("five==six的结果:" + (five == six));// false
// 因为six=200,不在缓存区范围内,所以相当于new实例一个对象
}
}
注意:八种包装类中,除了Float和Double,其他的都可以应用对象常量池的概念。