Java常用类:包装类/整数缓冲区
包装类
- 基本数据类型所对应的引用数据类型
- Object可以统一所有数据,包装类的默认值时null
包装类对应:
| 基本数据类型 | 包装类型 |
|---|---|
| byte | Byte |
| short | Short |
| int | Integer |
| long | Long |
| float | Float |
| double | Double |
| boolean | Boolean |
| char | Character |
类型转换与装箱、拆箱
-
装箱:基本数据类型转换为包装类 栈->堆
拆箱:包装类转换为基本数据类型 堆->栈
-
8种包装类提供不用类型间的转换方式
Number父类中提供的6个共性方法
valueOf( )静态方法 -->装箱parseXXX( )静态方法 -->字符串转基本类型 -
注意:类型转换时要保证类型兼容,否则抛出NumberFormatException异常
装箱/拆箱:
public class Demo1 { public static void main(String[] args) { //jdk1.5之前 //类型转换:装箱,基本类型转成引用类型的过程 int num1=18; //使用Integer类创建对象 Integer integer1=new Integer(num1); Integer integer2=Integer.valueOf(num1); //类型转换:拆箱,引用类型转成基本类型 Integer integer3=new Integer(100); int num2=integer3.intValue(); //=================================================== //jdk1.5之后,自动装箱和拆箱 int age=30; //自动装箱 Integer integer4=age; //自动拆箱 int age2=integer4; } }
基本类型和字符串之间转换:
package com.wu.包装类; public class Demo1 { public static void main(String[] args) { //基本类型和字符串之间转换 //1 基本类型转成字符串 int n1=100; //1.1 使用+号 String s1=n1+""; //1.2使用Integer中的toString()方法 String s2=Integer.toString(n1); //重载方法:public static String toString(int i,int radix) // i - 要转换成字符串的整数。 //radix - 用于字符串表示形式的基数。 //2 字符串转成基本类型 String str="111"; //使用Integer.parseXXX() int n2=Integer.parseInt(str); //boolean字符串形式转成基本类型,"true"-->true, 非"true"-->false String str2="f"; boolean b1=Boolean.parseBoolean(str2);//b1=false } }
整数缓冲区
-
在Java 5中,在Integer的操作上引入了一个新功能来节省内存和提高性能。整型对象通过使用相同的对象引用实现了缓存和重用。
-
Java预先创建了256个常用的证书包装类型对象
-
在实际应用当中,对已创建的对象进行复用
-
适用于整数值区间-128 至 +127。
只适用于自动装箱。使用构造函数创建对象不适用。
在创建对象之前先从IntegerCache.cache中寻找。如果没找到才使用new新建对象。
package com.wu.整数缓冲区;
public class Demo1 {
public static void main(String[] args) {
// 面试题
Integer integer1 = new Integer(100);
Integer integer2 = new Integer(100);
System.out.println(integer1 == integer2); // false
Integer integer3 = 100;// 自动装箱:Integer.valueOf(100)
Integer integer4 = 100;
System.out.println(integer3 == integer4); // true
Integer integer5 = 200;// 自动装箱
Integer integer6 = 200;
System.out.println(integer5 == integer6); // false
// 因为缓存区数组 [-128, 127] 在这之内地址一样
//在创建对象之前先从IntegerCache.cache数组中寻找。如果没找到才使用new新建对象。
}
}

浙公网安备 33010602011771号