BigInteger
1)解释
- BigInteger顾名思义大整数
- 整数类型:byte,short,int,long
- 占用字节数:byte=>1, short=>2, int=>4, long=>8
- 1 byte = 8 bit
- 所以对于long来说,一共有8*8= 64位,第一位表示符号0为正、1为负,也有上限,所有BigInteger就是解决比long更大的数的
2)BigInteger的构造方法
public BigInteger(int num , Random rnd) //获取随机大整数,[0, (z**num )-1]
//常用构造方法
public BigInteger(String var);
public BigInteger(String var ,int radix ) //var 是String类型,radix如果是二进制,var就只能有0和1
public static BigInteger valueOf(long var)
3)构造方法的实现
//(1)
//第一种方法
BigInteger bi1 = new BigInteger(4 , new Random() )
//第二种方法
Random r = new Random( );
BigInteger bi1 = new BigInteger(4 , r ) ;
//(2)常用的,要记住
BigInteger bi2 = new BigInteger(“2345672345679876543223457765432”);//只能放整数,不可以放字符串或者小数,否则会报错
//(4)因为valueOf是static静态方法,直接调用方法,不用new
BigInteger bi3 = BigInteger.valueOf(100);
4)小结
- 如果BigInteger表示的数字没有超出long的范围,可以用静态的方法获取
- 如果表示的数字超出long的范围,可以用构造方法获取
- 对象一旦创建,BigInteger内部记录的值不能发生改变
5)常用方法
BigInteger add(BigInteger )//加
BigInteger subtract(BigInteger )//减
BigInteger mutiply(BigInteger )//乘
BigInteger divide(BigInteger )//除,获取商
BigInteger[ ] divideAndRemainder(BigInteger )//获取商和余数,返回数组
boolean equals(Object)//是否相等,比较属性值,不是比较地址值
BigInteger pow(int )//幂
BigInteger max/min(BigInteger )//返回最大值和最小值
int intValue(BigInteger )
BigDecimal
1)解释
- 小数运行结果不精确,所以有了BigDecimal
- 用于小数的精确计算
- 存储很大的小数
2)构造方法
//构造方法获取BigDecimal对象
public BigDecimal(double val) //BigDecimal b1 = new BigDecimal( 12.3 )//不精确
public BigDecimal(String val) //BigDecimal b2 = new BigDecimal( "123.454") //精确
//静态方法获取BigDecimal对象
public static BigDecimal valueOf(double val) //BigDecimal b3=BigDecimal.valueOf(10)//10.0
- 尽量用第二和第三种方法
- 如果要表示的数字不大,没有超出double的范围,建议使用静态方法
- 如果表示的数字比较大,超出了double的范围,建议使用构造方法
- 如果传递0-10之间的整数,左闭右闭,那么方法会返回已经创建好的对象,不会重新new,即地址值是一样的