包装类
-
java为八种基本数据类型对应准备了八种包装类型,八种包装类属于引用数据类型,父类是Object
-
适用场景
- dosome(Object obj){} dosome方法传入的参数是引用数据类型,但是当有传入基本数据类型的需求时【int a ;dosome(a)】,会报错。因为dosome()无法接收一个基本数据类型的数字,此时可以传一个数字对应的包装类进去。
-
八种基本数据类型对应的包装类型名
-
AtomicInteger, AtomicLong, BigDecimal, BigInteger, Byte, Double, Float, Integer, Long, Short 这些类继承Number父类,Boolean和Charcater的父类是Object。
-
Number具备的方法是六种包装类的公共方法
拆箱 装箱
- 基本数据——(转换)——>引用数据 装箱
- 引用数据——(转换)——>基本数据 拆箱
例题一
package Advance.Integer;
/**
* @author 衣鱼
* 八种基本数据类型对应的包装类型名
*
* 基本数据类型 包装类型
*—————————————————
* byte java.lang.Byte
* short java.lang.Short
* int java.lang.Integer
* long java.lang.Long
* float java.lang.Float
* double java.lang.Double
* boolean java.lang.Boolean
* char java.lang.Charcater
*
*Inter的构造方法
* Integer(int);
* Integer(String);
*通过访问包装类Integer的常量,来获取最值
*/
public class IntegerTest02 {
public static void main(String[] args) {
//123基本数据类型,进行构造方法的包装,达到了基本数据类型向引用数据类型的转换
//基本数据——(转换)——>引用数据 装箱
Integer i = new Integer(123);
//将引用数据类型转换为基本数据类型!!
//引用数据——(转换)——>基本数据 拆箱
float f =i.floatValue();
System.out.println(f); //123.0
//最值
System.out.println("int最大值"+Integer.MAX_VALUE);
System.out.println("int最小值"+Integer.MIN_VALUE);
//自动装箱
Integer x = 100;
//自动拆箱
int y = x;
Integer z =1000; //自动装箱 z存储的是内存地址
System.out.println(z+1); //自动拆箱
Integer a1 =1000; //integer a1 = new Integer(1000);
Integer a2 =1000;
System.out.println(a1==a2); //false a1、a2都是引用
//a1、a2指向的值在byte范围内,-128——127之间,内存地址是一样的 ,结果是true
/**
* 面试题:
* Java为了提高程序效率,将-128——127之间的包装对象提前创建好,放到一个方法区的“整数型常量池”——缓存
* 目的:只要用这个区间的数据不需要再创建,直接从常量池当中取出。
* 所以,下面的a3、a4指向的是同一个对象,内存地址一样
* */
Integer a3=127;
Integer a4 =127;
System.out.println(a3==a4);
Integer a5=128;
Integer a6 =128;
System.out.println(a5==a6);
}
}
Integer 常用方法
package Advance.Integer;
/**
* @author 衣鱼
* Integer常用方法
*/
public class IntegerTest03 {
public static void main(String[] args) {
//手动装箱
Integer i= new Integer(123);
//手动拆箱
int j = i.intValue();
//含参构造方法
//Integer m1 = new Integer("张掖"); //运行异常 数字格式异常 NumberFormatException
Integer m2 = new Integer("123");
// static int parseInt(String s) 静态方法:传入字符串,返回整数类型
// 将字符串参数作为有符号的十进制整数进行解析。
//应用:在终端输入数字,实际上是字符串,但是数据库要求存储数字,此时需要再次转回数字
Integer x = Integer.parseInt("123");
System.out.println(x+123);
//*************************************************************************************
// static String toBinaryString(int i)
//以二进制(基数 2)无符号整数形式返回一个整数参数的字符串表示形式。
String sb = Integer.toBinaryString(8);
System.out.println(sb);
//Object类中的toString()
//hashCode()是一个Int类型数据, Integer.toHexString(),返回十六进制的数据
/*
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
*/
// static Integer valueOf(int i)
//返回一个表示指定的 int 值的 Integer 实例。 int ——转换——>Integer
Integer s = Integer.valueOf(333);
System.out.println(s);
}
}