5.1 java8增强的包装类
自动装箱(Autoboxing)和自动拆箱(AutoUnboxing)功能
package code;
public class AutoBoxUnboxing{
public static void main(String [] args){
//直接把一个基本类型变量赋给Integer对象
Integer inObj = 5;
//直接把一个boolean类型变量赋给一个Object类型的变量
Object boolObj = true;
//直接把一个Integer对象赋给int类型的变量
int it = inObj;
if(boolObj instanceof Boolean){
//先把Object对象强制类型转换为Boolean类型,再赋给boolean变量
boolean b = (Boolean)boolObj;
System.out.println(b);
}
}
}
当JDK提供了自动装箱和自动拆箱功能后,大大简化了基本类型变量和包装类对象之间的转换过程
把字符串类型的值转换为基本类型的值有两种方式:
1.利用包装类提供的parseXxx(String s )的静态方法,(除了Character);
2.利用包装类提供的Xxx(String s )构造器
将基本类型变量转换为字符串:
利用String类提供的多个重载valueOf()方法
package code;
public class Primitive2String{
public static void main(String[] args){
String intStr = "123";
//把一个特定字符串转换成int类型
int it1 = Integer.parseInt(intStr);
int it2 = new Integer(intStr);
System.out.println(it1);
System.out.println(it2);
String floatStr = "4.56";
float ft1 = Float.parseFloat(floatStr);
float ft2 = new Float(floatStr);
System.out.println(ft1);
System.out.println(ft2);
String ftStr = String.valueOf(2.345f);
System.out.println(ftStr);
//把一个boolean变量转换成String变量
String boolStr = String.valueOf(true);
System.out.println(boolStr.toUpperCase());
}
}
如果希望将基本类型装换成字符串,直接将基本类型和”“进行连接运算,系统会自动把基本类型变量转换成字符串,
package code;
public class WrapperClassCompare{
public static void main(String[]args){
Integer a = new Integer(6);
System.out.println("6的包装类实例是否大于5.0" + (a > 5.0));
System.out.println("比较两个包装类的实例是否相等" + (new Integer(2) == new Integer(2)));
//通过自动装箱,允许把基本类型赋值给包装类实例
Integer ina = 2;
Integer inb = 2;
System.out.println("两个2自动装箱后是否相等:" + (ina == inb));//true
Integer biga = 128;
Integer bigb = 128;
System.out.println("两个128自动装箱后是否相等:" + (biga == bigb));//false
//两个boolean类型比较时,true>false
System.out.println(Boolean.compare(true,false));
System.out.println(Boolean.compare(true,true));
System.out.println(Boolean.compare(false,true));
}
}
系统把一个-128~127之间的整数自动装箱成Integer实例,并放入一个名为cache的数组中缓存起来,如果以后把-128~127之间的整数自动装箱成一个Integer实例时,实际上是直接指向对应的数组元素,所以全部相等,但每次把一个不在-128~127范围内的整数自动装箱成Integer实例时,系统总是重新创建一个Integer实例,所以出现上述结果
package code;
public class UnsignedTest{
public static void main(String[]args){
byte b = -3;
//将byte类型的-3转换为无符号整数
System.out.println("byte类型的-3对应的无符号整型是" + Byte.toUnsignedInt(b));
//指定使用十六进制解析无符号整数
int val = Integer.parseUnsignedInt("ab", 16);
System.out.println(val);
//将-12转换为无符号int型,然后转换为十六进制的字符串
System.out.println(Integer.toUnsignedString(-12,16));
//将两个数转换为无符号整数后相除
System.out.println(Integer.divideUnsigned(-4,2));
//将两个数转换为无符号整数相除后求余
System.out.println(Integer.remainderUnsigned(-2,7));
}
}
原文:http://blog.csdn.net/u014270902/article/details/43877199