基本数据类型包装类
Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的,这在实际使用时存在很多的不便,为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个和基本数据类型对应的类统称为包装类.
为了编程方便
包装类(如:Integer,Double等)这些类封装了一个相应的基本数据类型数值,并为其提供了一系列操作。
在java中, 系统为每一个基本类型都提供 了 一个对应的包装类型
基本数据类型 | 包装类 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
基本类型 | 包装类 |
double | Double |
char | Character |
boolean | Boolean |
不能直接把基本类型数据赋值给引用类型变量
当前程序没有语法错误,是因为Java把这些基本类型数据自动转换为了包装类对象, 再把包装 类对象传递给obj形参
public class Test01 {
public static void main(String[] args) {
m1(true);
m1(456);
m1(3.14);
m1("abc");
/*
* 不能直接把基本类型数据赋值给引用类型变量
* 当前程序没有语法错误,是因为Java把这些基本类型数据自动转换为了包装类对象, 再把包装 类对象传递给obj形参
*/
}
// 需求: 定义方法, 可以处理任意类型的数据
public static void m1(Object obj) {
}
}
装箱拆箱
- 装箱:把基本类型转换为包装类对象
- 拆箱:把包装类对象转换为基本类型
- 在Java中, 可以自动的进行装箱与拆箱
Integer i1 = 147; //自动装箱
int num = i1; //自动拆箱
Integer i2 = 666;
Integer i3 = 666; //重新创建了一个包装类对象
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之间的整数使用最频繁,所以这个范围内整数创建的包装类对象采用享元模式,即把包装类对象存储到共享池中
Long gg1 = 15L;
Long gg2 = 15L;
System.out.println( gg1 == gg2 ); //true
包装类对象的创建
- 根据基本类型创建包装类对象
- 根据字符串创建包装类对象// 字符串的格式要符合数字的格式
- 布尔类型的包装类把"true"字符串转换为true, 其他的字符串都转换为false
- Character包装类只有一个构造方法…character1 = new Character(“A”);
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');
boolean1 = new Boolean("true");
integer1 = new Integer("456");
double1 = new Double("45.789");
double1 = new Double("23e3"); //科学计数法
System.out.println(double1); //23000.0
输出常用字段
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);
包装类的常用方法
**可以把字符串转换为基本类型数据 ** 经常用
int num = Integer.parseInt("789");
dd = Double.parseDouble("45.78");
把基本类型/字符串转换为包装类对象
i1 = Integer.valueOf(369);
i2 = Integer.valueOf("258");
Integer i1 = new Integer(123);
Integer i2 = new Integer("456");
从Number继承的 方法, 可以把包装类对象转换为基本类型数据
byte bb = i1.byteValue();
double dd = i2.doubleValue();
包装类实现了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
equals(), 根据value字段进行判断是否相等
System.out.println( i1.equals(i2));
注意, 字符串要符合数字格式