java提供了8个包装类,目的就是为了解决基本数据类型不能直接参与面向对象开发的问题,使得基本类型可以通过包装类的实例对象形式存在, 其中有关于数字类的包装类都继承与java.lang.Number,而char和boolean的包装类 都直接继承了Object。
Number是一个抽象类,定义了一些方法,目的是包装类可以将其表示的基本数据类型 转换为其他数字类型
package com.scy.number;
public class NumberDemo {
public static void main(String[] args) {
//基本类型包装类 Integer Double Float Short Long Byte Boolean Character
//基本类型转换为包装类
int i = 123;
//Java推荐我们使用包装类的静态方法valueOf()将基本类型转换为包装类,而不是直接new
Integer i1 = Integer.valueOf(i);//Integer会重用-128-127之间的整数对象
Integer i2 = Integer.valueOf(i);
System.out.println(i1==i2);//true
System.out.println(i1.equals(i2));//true
double d =123.456;
Double d1 = Double.valueOf(d);//Double类型不是直接转换,而是直接new
Double d2 = Double.valueOf(d);
System.out.println(d1==d2);//false
System.out.println(d1.equals(d2));//true
//包装类型转为基本类型 ,使用intValue() doubleValue() ...xxValue()方法
int value = i1.intValue();
System.out.println(value);//123
double value2 = d1.doubleValue();
System.out.println(value2);//123.456
int value3 = d1.intValue();//大类型转小类型可能存在丢失精度
System.out.println(value3);
//1.可以通包装类的属性MAX_VALUE和MIN_VLAUE来获取数据类型的最大取值以及最小取值
int maxValue = Integer.MAX_VALUE;
System.out.println(maxValue);
int minValue = Integer.MIN_VALUE;
System.out.println(minValue);
//....
//2.字符串转换为基本数据类型的前提是该字符串正确描述了基本数据类型
//可以保存的值, 可以利用parseXXX()方法
//否则会抛出异常: NumberFormatException 数字转换异常
String str = "123";
//String str1 = "123,123";//不能正确转换
int parseInt = Integer.parseInt(str);
System.out.println(str);//"123"
System.out.println(parseInt);//123
System.out.println(str+parseInt);//"123123"
System.out.println(parseInt+parseInt);//246
String str2 = "123.123";
double parseDouble = Double.parseDouble(str2);
System.out.println(parseDouble);//123.123
//包装类型的自动拆装箱 jdk5
Integer integer = new Integer("123");
int intValue = integer.intValue();
//以上代码会触发自动拆箱特性,编译器会补充代码将包装类型转为基本类型:
//代码会简化为以下代码
int inte =new Integer("123"); //自动拆箱
//触发编译器的自动装箱特性,
Integer va = Integer.valueOf(123);
//代码会被编译器改为:
Integer in = 123;
}
}