包装类
Posted huochemeiyouhuo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了包装类相关的知识,希望对你有一定的参考价值。
? 在java中, 系统为每一个基本类型都提供 了 一个对应的包装类型
基本类型 | 包装类 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
包装类在java.lang包中
为什么提供包装类?
为了编程方便
包装类对象的创建(构造方法)
1.Java会把这些基本类型数据自动转换为包装类对象
public static void m1(Object obj) {
}
public static void main(String[] args) {
m1(true);
m1(456);
m1(3.14);
m1("abc");
/*
* 不能直接把基本类型数据赋值给引用类型变量
* 当前程序没有语法错误,是因为Java把这些基本类型数据自动转换为了包装类对象, 再把包装 类对象传递给obj形参
*/
}
2.包装类的用法
//1)根据基本类型创建包装类对象
Boolean boolean1 = new Boolean(true);
short s = 123;
Short short1 = new Short(s);
Integer integer1 = new Integer(78945);
Double double1 = new Double(3.14);
Character character1 = new Character('a');
//2)根据字符串创建包装类对象
boolean1 = new Boolean("true");
integer1 = new Integer("456");
double1 = new Double("45.789");
//注意1: 字符串的格式要符合数字的格式
// integer1 = new Integer("aa"); //java.lang.NumberFormatException
double1 = new Double("23e3"); //科学计数法
System.out.println(double1); //23000.0
//注意2: 布尔类型的包装类把"true"字符串转换为true, 其他的字符串都转换为false
boolean1 = new Boolean("adfasfaslf");
System.out.println( boolean1 );
//注意3: Character包装类只有一个构造方法
// character1 = new Character("A");
//3)输出常用字段
System.out.println( Integer.BYTES); //字节数, 4
System.out.println( Integer.SIZE); //位数: 32
System.out.println( Integer.TYPE); //基本类型 : int
System.out.println( Integer.MIN_VALUE);
System.out.println( Integer.MAX_VALUE);
包装类的基本操作
Integer i1 = new Integer(123);
Integer i2 = new Integer("456");
//1)从Number继承的 方法, 可以把包装类对象转换为基本类型数据
byte bb = i1.byteValue();
double dd = i2.doubleValue();
//2)包装类实现了Comparable接口,重写了compareTo()方法, 根据包装类的value字段比较大小
//每个包装类都有一个value字段,保存对应基本类型的数据
System.out.println( i1.compareTo(i2) ); //-1
Character c1 = new Character('A');
Character c2 = new Character('a');
System.out.println( c1.compareTo(c2)); //-32
Boolean b1 = new Boolean(true);
Boolean b2 = new Boolean(false);
System.out.println( b1.compareTo(b2)); //1
//3)equals(), 根据value字段进行判断是否相等
System.out.println( i1.equals(i2));
//4) static int parseInt(String s) 可以把字符串转换为基本类型数据, 经常用
int num = Integer.parseInt("789");
dd = Double.parseDouble("45.78");
//注意, 字符串要符合数字格式
num = Integer.parseInt("adf"); //java.lang.NumberFormatException
//5)valueOf() 把基本类型/字符串转换为包装类对象
i1 = Integer.valueOf(369);
i2 = Integer.valueOf("258");
装箱与拆箱
装箱:
把基本类型转换为包装类对象
拆箱:
把包装类对象转换为基本类型
Integer i1 = 147; //自动装箱
int num = i1; //自动拆箱
Integer i2 = 666; //根据基本类型数据666创建了一个包装类对象, 把这个包装类对象的引用赋值给i2
Integer i3 = 666; //重新创建了一个包装类对象
System.out.println( i2.equals(i3)); //true
System.out.println( i2 == i3 ); //false
Integer i4 = 77;
Integer i5 = 77;
System.out.println( i4 == i5 ); //true
/*
* Java认为-128~127之间的整数使用最频繁, 所以这个范围内整数创建的包装类对象采用享元模式 , 即把包装类对象存储到共享池中
* 在执行 i4 = 77时, 系统根据77创建一个Integer对象, 把该对象存储到共享池中
* 当执行i5 = 77时, 系统直接把共享池中的Integer对象的引用赋值给i5
*/
Long gg1 = 15L;
Long gg2 = 15L;
System.out.println( gg1 == gg2 ); //true
以上是关于包装类的主要内容,如果未能解决你的问题,请参考以下文章