基本数据类型对应的包装类
- 一、基本数据类型对应的包装类
- (一)抽象类Number
- (二)Integer分析
- (三)拆箱和装箱
- (四)自动拆箱和装箱
- (四)Integer和String类型的转换
- 二、包装类数据缓存
- (一)包装类数据缓存
- (二)Java中只是对部分基本数据类型对应包装类的部分数据进行了缓存
- (三)内存分析
一、基本数据类型对应的包装类
基本数据类型 包装类型
byte java.lang.Byte(父类Number)
short java.lang.Short(父类Number)
int java.lang.Integer(父类Number)
long java.lang.Long(父类Number)
float java.lang.Float(父类Number)
double java.lang.Double(父类Number)
boolean java.lang.Boolean(父类Object)
char java.lang.Character(父类Object)
(一)抽象类Number
Number类的方法:
方法 | 作用 |
---|
byte byteValue() | 以 byte 形式返回指定的数值。 |
abstract double doubleValue() | 以 double 形式返回指定的数值。 |
abstract float floatValue() | 以 float 形式返回指定的数值。 |
abstract int intValue() | 以 int 形式返回指定的数值。 |
abstract long longValue() | 以 long 形式返回指定的数值。 |
short shortValue() | 以 short 形式返回指定的数值。 |
这些方法其实所有的数字包装类的子类都有,这些方法是负责拆箱的
(二)Integer分析
- Integer构造方法
public class Test03 {public static void main(String[] args) {Integer i1 = new Integer(123);System.out.println(i1);Integer i2 = new Integer("123");System.out.println(i1);}
}
- Integer的属性
public class Test03 {public static void main(String[] args) {System.out.println(Integer.MAX_VALUE);System.out.println(Integer.MIN_VALUE);}
}
- Integer的常用方法
方法 | 作用 |
---|
static int parseInt(String s) | 静态方法,传参String,返回int |
static String toBinaryString(int i) | 静态的:将十进制转换成二进制字符串 |
static String toHexString(int i) | 静态的:将十进制转换成十六进制字符串 |
static String toOctalString(int i) | 静态的:将十进制转换成八进制字符串 |
static Integer valueOf(int i) | 静态的:int–>Integer |
static Integer valueOf(String s) | 静态的:String–>Integer |
public class Test04 {public static void main(String[] args) {int retValue = Integer.parseInt("123"); System.out.println(retValue + 100);String binaryString = Integer.toBinaryString(3);System.out.println(binaryString); String hexString = Integer.toHexString(16);System.out.println(hexString); hexString = Integer.toHexString(17);System.out.println(hexString); String octalString = Integer.toOctalString(8);System.out.println(octalString); Object object = new Object();object.toString();System.out.println(new Object()); Integer i1 = Integer.valueOf(100);System.out.println(i1);Integer i2 = Integer.valueOf("100");System.out.println(i2);}
}
(三)拆箱和装箱
- 装箱:
基本数据类型 -(转换为)->引用数据类型(拆箱) - 拆箱:
将引用数据类型–(转换为)-> 基本数据类型(装箱)
public class Test02 {public static void main(String[] args) {Integer integer = new Integer(100);int i1 = integer.intValue();System.out.println(i1);double i2 = integer.doubleValue();System.out.println(i2);}
}
(四)自动拆箱和装箱
定义:将一个基本数据类型的值赋给其所对应的包装类型称为装箱;将一个基本数据类型包装类类型的值赋给其所对应的基本数据类型称为拆箱
Integer a = 12;
int aa = a;
int c = 128;
Integer cc = 128;
Integer ccc = new Integer(128);
System.out.println(c == cc);
System.out.println(c == ccc);
System.out.println(cc == ccc);
(四)Integer和String类型的转换
public class Test05 {public static void main(String[] args) {int i1 = Integer.parseInt("100"); System.out.println(i1 + 1); String s2 = i1 + ""; System.out.println(s2 + 1); Integer x = 1000;int y = x;Integer k = Integer.valueOf("123");String e = String.valueOf(k);}
}
二、包装类数据缓存
(一)包装类数据缓存
Java对部分经常使用的数据采用缓存技术,即第一次使用该数据则创建该数据对象并对其进行缓存,当再次使用等值对象时直接从缓存中获取,从而提高了程序执行性能。
(二)Java中只是对部分基本数据类型对应包装类的部分数据进行了缓存
1.byte、short、int和long所对应包装类的数据缓存范围为 -128~127(包括-128和127);
Integer b1 = 127;
Integer b2 = 127;
System.out.println(b1 == b2);
b1 = 128;
b2 = 128;
System.out.println(b1 == b2);
输出:
true
false
2.float和double所对应的包装类没有数据缓存范围;
Double d1 = 1.0;
Double d2 = 1.0;
System.out.println(d1 == d2);
3.char所对应包装类的数据缓存范围为 0~127(包括0和127);
Character c1 = 127;
Character c2 = 127;
System.out.println(c1 == c2);
4.boolean所对应包装类的数据缓存为true和false;
Boolean b1 = true;
Boolean b2 = true;
System.out.println(b1 == b2);
(三)内存分析