Java核心API -- 5(包装类、BigDecimal、BigInteger)
2015-06-15 09:28
761 查看
1. 包装类
Java语言的8种基本类型分别对应了8种“包装类”。每一种包装类都封装了一个对应的基本类型成员变量,同时还提供了针对该数据类型的实用方法,包装类使用前提:JDK1.5+。
1)包装类的目的:用于将基本类型数据当作引用类型看待。
2)包装类的名字:除了Integer(int),Character(char)外,其余包装类名字都是基本类型名首字母大写。
3)装箱:基本类型转为对象类型
方式一:Double d=new Double(2.2);//装箱
方式二:Double d=Double.valueOf(2.2);//基本类型对应的包装类都有valueOf方法
4)拆箱:对象类型转为基本类型
double num=d.doubleValue();//拆箱
5)JDK1.5包装类自动拆装箱(原理):在编译源程序的时候,编译器会预处理,将未作拆箱和装箱工作的语句自动拆箱和装箱。
Integer i = 10; //自动装箱,基本类型直接赋值给对象,实际已经执行了 Integer i = Integer.valueOf(10);
int num = i; //自动拆箱,对象类型直接赋值给基本类型,实际上执行了 int num = i.intValue();
6)包装类的一些常用功能:将字符串转换为其类型,方法是:parseXXX,XXX代表其类型。这里要特别注意!一定要保证待转换的字符串描述的确实是或者兼容要转换的数据类型!否则会抛出异常!
String numStr="123";
System.out.println(numStr+1);//1231
int num=Integer.parseInt(numStr);
System.out.println(num+1)//124
long longNum=Long.parseLong(numStr);
System.out.println(longNum);//123
double doubleNum=Double.parseDouble(numStr);
System.out.println(doubleNum);//123.0
7)Integer提供了几个方法:将一个整数转换为16进制的形式,并以字符串返回;将一个整数转换为2进制的形式,并以字符串返回。
String bStr=Integer.toBinaryString(num);
String hStr=Integer.toHexString(num);
8)所有包装类都有几个共同的常:获取最大、最小值。
int max=Integer.MAX_VALUE;//int最大值
int min=Integer.MIN_VALUE;//int最小值
System.out.println(Integer.toBinaryString(max));
System.out.println(Integer.toBinaryString(min));
2. BigDecimal类
表示精度更高的浮点型,在java.math.BigDecimal包下,该类可以进行更高精度的浮点运算。需要注意的是,BigDecimal可以描述比Double还要高的精度,所以在转换为基本类型时,可能会丢失精度!
1)BigDecimal的使用:
创建一个BigDecimal实例,可以使用构造方法BigDecimal(String numberFormatString),用字符串描述一个浮点数作为参数传入。
BigDecimal num1=new BigDecimal("3.0");
BigDecimal num2=new BigDecimal("2.9"); //运算结果依然为BigDecimal表示的结果
BigDecimal result=num1.subtract(num2);//num1-num2 System.out.println(result);
float f=result.floatValue();//将输出结果转换为基本类型float
int i=result.intValue();//将输出结果转换为基本类型int
2)BigDecimal可以作加add、减subtract、乘multiply、除divide等运算:这里需要注意除法,由于除法存在结果为无限不循环小数,所以对于除法而言,我们要制定取舍模式,否则会一直计算下去,直到报错(内存溢出)。
result=num1.divide(num2, 8, BigDecimal.ROUND_HALF_UP); // 小数保留8位,舍去方式为四舍五入
3. BigInteger类
使用描述更长位数的整数“字符串”,来表示、保存更长位数的整数,在java.math.BigInteger包下。
1)BigInteger的使用:
// 创建BigInteger
BigInteger num=new BigInteger("1");
//num=new BigInteger(1); // 不可以,没有这样的构造器
//这种方式我们可以将一个整数的基本类型转换为BigInteger的实例
num=BigInteger.valueOf(1);
2)理论上:BigInteger存放的整数位数只受内存容量影响。
3)BigInteger同样支持加add、减subtract、乘multiply、除divide等运算。
for(int i=1;i<=200;i++){
num=num.multiply(BigInteger.valueOf(i));
}
System.out.println("结果"+num.toString().length()+"位");
System.out.println(num);
本文出自 “永远年轻” 博客,请务必保留此出处http://kingkongzhao.blog.51cto.com/6319491/1661903
Java语言的8种基本类型分别对应了8种“包装类”。每一种包装类都封装了一个对应的基本类型成员变量,同时还提供了针对该数据类型的实用方法,包装类使用前提:JDK1.5+。
1)包装类的目的:用于将基本类型数据当作引用类型看待。
2)包装类的名字:除了Integer(int),Character(char)外,其余包装类名字都是基本类型名首字母大写。
3)装箱:基本类型转为对象类型
方式一:Double d=new Double(2.2);//装箱
方式二:Double d=Double.valueOf(2.2);//基本类型对应的包装类都有valueOf方法
4)拆箱:对象类型转为基本类型
double num=d.doubleValue();//拆箱
5)JDK1.5包装类自动拆装箱(原理):在编译源程序的时候,编译器会预处理,将未作拆箱和装箱工作的语句自动拆箱和装箱。
Integer i = 10; //自动装箱,基本类型直接赋值给对象,实际已经执行了 Integer i = Integer.valueOf(10);
int num = i; //自动拆箱,对象类型直接赋值给基本类型,实际上执行了 int num = i.intValue();
6)包装类的一些常用功能:将字符串转换为其类型,方法是:parseXXX,XXX代表其类型。这里要特别注意!一定要保证待转换的字符串描述的确实是或者兼容要转换的数据类型!否则会抛出异常!
String numStr="123";
System.out.println(numStr+1);//1231
int num=Integer.parseInt(numStr);
System.out.println(num+1)//124
long longNum=Long.parseLong(numStr);
System.out.println(longNum);//123
double doubleNum=Double.parseDouble(numStr);
System.out.println(doubleNum);//123.0
7)Integer提供了几个方法:将一个整数转换为16进制的形式,并以字符串返回;将一个整数转换为2进制的形式,并以字符串返回。
String bStr=Integer.toBinaryString(num);
String hStr=Integer.toHexString(num);
8)所有包装类都有几个共同的常:获取最大、最小值。
int max=Integer.MAX_VALUE;//int最大值
int min=Integer.MIN_VALUE;//int最小值
System.out.println(Integer.toBinaryString(max));
System.out.println(Integer.toBinaryString(min));
2. BigDecimal类
表示精度更高的浮点型,在java.math.BigDecimal包下,该类可以进行更高精度的浮点运算。需要注意的是,BigDecimal可以描述比Double还要高的精度,所以在转换为基本类型时,可能会丢失精度!
1)BigDecimal的使用:
创建一个BigDecimal实例,可以使用构造方法BigDecimal(String numberFormatString),用字符串描述一个浮点数作为参数传入。
BigDecimal num1=new BigDecimal("3.0");
BigDecimal num2=new BigDecimal("2.9"); //运算结果依然为BigDecimal表示的结果
BigDecimal result=num1.subtract(num2);//num1-num2 System.out.println(result);
float f=result.floatValue();//将输出结果转换为基本类型float
int i=result.intValue();//将输出结果转换为基本类型int
2)BigDecimal可以作加add、减subtract、乘multiply、除divide等运算:这里需要注意除法,由于除法存在结果为无限不循环小数,所以对于除法而言,我们要制定取舍模式,否则会一直计算下去,直到报错(内存溢出)。
result=num1.divide(num2, 8, BigDecimal.ROUND_HALF_UP); // 小数保留8位,舍去方式为四舍五入
3. BigInteger类
使用描述更长位数的整数“字符串”,来表示、保存更长位数的整数,在java.math.BigInteger包下。
1)BigInteger的使用:
// 创建BigInteger
BigInteger num=new BigInteger("1");
//num=new BigInteger(1); // 不可以,没有这样的构造器
//这种方式我们可以将一个整数的基本类型转换为BigInteger的实例
num=BigInteger.valueOf(1);
2)理论上:BigInteger存放的整数位数只受内存容量影响。
3)BigInteger同样支持加add、减subtract、乘multiply、除divide等运算。
for(int i=1;i<=200;i++){
num=num.multiply(BigInteger.valueOf(i));
}
System.out.println("结果"+num.toString().length()+"位");
System.out.println(num);
本文出自 “永远年轻” 博客,请务必保留此出处http://kingkongzhao.blog.51cto.com/6319491/1661903
相关文章推荐
- 通过一个简单类就可以知道java类和对象的初始化顺序
- Dubbo+Spring+MyBaits客户端得到对象的属性为空
- Java的日期格式化常用方法
- Gradle安装及Eclipse插件配置
- java.lang.NoClassDefFoundError: Could not initialize class ces.com.log.Logge
- Eclipse Xml编译错误Referenced file contains errors - spring-beans-4.0.xsd
- Java中的Object类详细介绍
- java quarz,job控制,时间表示方法
- java中char与汉字占用字节个数问题
- Java中一个for语句导致无穷大死循环的例子
- JAVA经典实例
- struts2实现文件上传进度条(前端JS+Java)(自我整理)
- mac和windows下的eclipse不同编码
- Java内存理解 && 反射访问私有属性或方法
- Java中遍历数组使用foreach循环还是for循环?
- maven3.3不支持JDK1.6
- Java中使用异或语句实现两个变量的互换
- Java中使用While语句自增运算遍历数组典型实例
- struts2 通过源码了解action生命周期过程
- Java中switch判断语句典型使用实例