为8种基本类型对应提供了8种包装类型,8种包装类型属于引用数据类型,父类是Object
8种基本类型对应的8种包装类型名:
基本数据类型 包装类型名
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)
重点以 java.lang.Integer 为例子学习
研究一下 Number类:Number类是抽象类
含有的方法:
public static void main(String[] args) { // 1.基本数据类型转换为引用数据类型, 称作 装箱 Integer i = new Integer(123); // 2. 引用数据类型转换为基本数据类型, 称作 拆箱 float f = i.floatValue(); System.out.println(f);//123.0 int s = i.intValue(); System.out.println(s);//123 }
public static void main(String[] args) { // 1.Integer访问常量来获取最值 System.out.println(Integer.MAX_VALUE); System.out.println(Integer.MIN_VALUE); //类比于Integer类,对于常见的Byte包装类 System.out.println(Byte.MAX_VALUE);//127 System.out.println(Byte.MIN_VALUE);//-128 // 2.自动装箱和自动拆箱 Integer x = 100;//自动装箱 此处的x是引用数据,保存对象的内存地址,等同于Integer x = new Integer(100); int y = x;//自动拆箱 System.out.println(x + 100);//200 //此处 + 处的x不是基本数据类型,自动拆箱 // 3.整数型常量池 “池”cache就是缓存机制,优点就是效率高,但耗费内存 /*java中为了提高程序的执行效率,将-128 到 127 之间的所有的包装对象提前创建好,放到 一个方法区的整数型常量池中,目的是这个区间的数据不需要再new了,直接从整数型常量池中取出来使用*/ //Integer类加载的时候,会初始化整数型常量池:共256个对象 Integer a = 127; Integer b =127; System.out.println(a==b);//true // == 判断的是两个对象的内存地址 }
public static void main(String[] args) { // 1.不是一个数字,可以包装成Integer类吗?不可以, 出现了数字格式化异常 java.lang.NumberFormatException //Integer x = new Integer("100"); //Integer s = new Integer("中文"); //编译没有问题,运行时出错,出现了数字格式化异常,字符串改为不是一个数字就报错 // 2.方法1(掌握): static int parseInt(String s) 传参String,返回int int s = Integer.parseInt("100"); System.out.println(s+100);//200 //类比于其他包装类 double s1 = Double.parseDouble("1.2"); System.out.println(s1+1);//2.2 // 3.了解方法 //static String toBinaryString(int) 将十进制转换为二进制字符串 String binaryString = Integer.toBinaryString(3); System.out.println(binaryString);//11 // static String toOctalString(int) 将十进制转换为八进制字符串 String octalString = Integer.toOctalString(8); System.out.println(octalString);//10 //static String toHexString(int) 将十进制转换为十六进制字符串 String hexString = Integer.toHexString(17); System.out.println(hexString);//11 // 4.了解valueOf方法 //static Integer valueOf(int i) 将 int类型 转换为 Integer类型 //static Integer valueOf(String i) 将String类型 转换为 Integer类型 Integer s1 = Integer.valueOf(11); Integer s2 = Integer.valueOf("22"); System.out.println(s1);//11 System.out.println(s2);//22
public static void main(String[] args) { // 1.int 和 String 之间转换: //String转换为int: Integer.parseInt(String) int s1 = Integer.parseInt("100"); System.out.println(s1+1);//101 //int转换为String: 1. 拼接一个空字符串 2. String.valueOf(int) String s2 = s1+""; System.out.println(s2+100);//100100 String s3 = String.valueOf(200); System.out.println(s3+100);//200100 // 2.int 和 Integer 之间转换 //int转换为Integer: 1.自动装箱 2. Integer.valueOf(int) Integer x = 1000; Integer y =Integer.valueOf(2000); //Integer转换为int: 1.自动拆箱 int a = x; // 3.String 和 Integer 之间转换 //String转换为Integer:Integer.valueOf(String) Integer s5 = Integer.valueOf("100"); //Integer转换为String:String.valueOf(Integer对象) String s4 = String.valueOf(x); }