您的位置:首页 > 编程语言 > Java开发

CoreJava学习3——​基本类型的包装类

2013-09-12 12:21 183 查看
基本类型的包装类
Java语言的8种基本类型分别对应8种“包装类”,每一种包装类都封装了一个对应的基本类型成员变量,同时还提供了一些针对该数据类型的实用方法。
包装类是让基本数据数据以对象的形式存在和使用。
1、编译器对包装类的支持
在JDK5之前,使用包装类进行运算较繁琐的“拆箱”和“装箱”操作:即运算前先包装类对象所封装的基本数据类型,运算后在将结果封装成包装类对象。
Integer i = Integer.valueOf(100);
Integer i = Integer.valueOf(200);
Integer k = Integer.valueOf(i.intValue()+j.intValue());
JDK5增加了自动“拆箱”和“装箱”的功能,就简单多了。
Integer i = 100;
Integer i = 200;
Integer k = i+j;
自动“拆箱”和“装箱”是编译器的“预处理”操作。

2、Integer和Double常用方法
Integer.parseInt(obj):转换为int或者double,无法解析时候抛出 NumberFormatException
Integer.toBinaryString(int);
Integer.toHexString(int);
分别把int转换成二进制和十六进制的字符串序列。

3、BigDecimal类
Java浮点数据类型(float/double)在运算时会有舍入误差,如果希望得到精确的计算结果,可以使用java.math.BigDecimal类。
BigDecimal d1 = new BigDecimal("2.5");
BigDecimal d2 = new BigDecimal("3.6");
System.out.println(d1.subtract(d2));//减法
System.out.println(d1.add(d2));//加法
System.out.println(d1.multiply(d2));//乘法
//除法
/*注意:
* 使用除法要使用舍入原则
* 否则当遇到无限小数时,会一直除到溢出,无限下去就溢出。
* 使用BigDecimal.ROUND_HALF_UP 为其四舍五入。
*/
System.out.println(d1.divide(d2, BigDecimal.ROUND_HALF_UP));
当我们对计算精度有严格要求时,会使用该类,不过在大多情况下double足够。
4、BigInteger类
java提供的整数类型(int和long)的储存范围有限,当需要进行在更大的整数运算时可以使用这个类,理论上讲BigInteger的储存范围之受内存容量的限制。
同样也有加减乘除运算。只不过只针对整数运算。
BigInteger sum = BigInteger.valueOf(1);
for (int i = 2; i <= 200; i++) {
//multiply参数要求BigInteger,所以i也要转换为BigInteger
sum = sum.multiply(BigInteger.valueOf(i));
}
System.out.println(sum.toString().length());//结果的长度
System.out.println(sum);

//试试看有多少光年?
sum = sum.divide(BigInteger.valueOf(3600*24*360).multiply(BigInteger.valueOf(300000)));
System.out.println(sum);

本文出自 “美好的生活需要用心记录” 博客,请务必保留此出处http://huing.blog.51cto.com/1669631/1294992
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: