基本数据类型封装类

 为什么要有基本数据类型封装类?

1:Java是以对象为基础的编程语言

2:在如object作为参数的方法中无法直接传入基本数据类型

3:在集合中只能存储对象

Integer

获取Integer对象的方式

 

 

 注意:

Java在底层将-128到127范围内的每个数据都创建了对象

在这个范围内调用valueof方法不会创建新的对象

计算

在以前:1:将对象拆箱为基本数据类型

2:运算

3:把得到的结果再次装箱,变回包装类

JDK5的新机制

自动装箱:将基本数据类型自动变成对应的包装类

自动拆箱:把包装类自动变成其对象的基本数据类型

 常用的方法

 

 

 

 

Byte

Short

Long

Float

Double

Character

Boolean

BigInteger

 //public BigInteger(int num, Random rnd)  获取随机大整数 范围在0-2的num次方-1
    //public BigInteger(String val)           获取指定的大整数
    //public BigInteger(String val,int radix) 获取指定进制的大整数
    //public static BigInteger value(long val) 静态方法获取BigInteger的对象,内部有优化

1:public BigInteger(int num, Random rnd)  获取随机大整数

获取一个随机的大整数

范围: 范围在0-2的num次方-1

2:public BigInteger(String val)           获取指定的大整数

将字符串中字符转化为大整数

该字符串只能是整数  不能是小数或符号字母

3:public BigInteger(String val,int radix) 获取指定进制的大整数

将字符串看成指定的进制的整数表示形式

如:BigInteger("100",a)

a为10则100表示十进制为100

a为2则表示2进制,获取到的整数为4

注:1:传入字符串应与对应的进制表示形式相同

2:直接将该类对象进行打印时会转化成十进制形式输出

4:public static BigInteger value(long val) 静态方法获取BigInteger的对象,内部有优化

BigInteger bds=BigInteger.valuepf(int a);

调用静态方法创建BigInteger对象

内部优化:在内部对常用的数字-16~16进行优化

提前将-16~16先创建好BigInteger的对象,如果多次获取不会重新创建,会将已经创建好的对象地址传给新的对象,多个重复对象指向同一整数时共享对象地址

注:只能传入long范围中的整数

5:对象一旦创建内部的数据不能发生改变

BigInteger对象一旦创建其中的值是不可变的

用该类对象调用方法进行加减乘除所返回的对象都是新的BigInteger对象

BigInteger bd1 =BigInteger("12132");
BigInteger bd2 =BigInteger("12132");
bd2=bd1.add(bd2);

此时bd2所指向的是一个新的BigInteger对象

6:常用方法

  1. public BigInteger  add(BigInteger val)                                  加法
  2. public BigInteger  subtract(BigInteger val)                          减法
  3. public BigInteger  multiply(BigInteger val)                           乘法
  4. public BigInteger  divide(BigInteger val)                                除法,获取商           
  5. public BigInteger divideAndRemainder(BigInteger val)        除法,获取商和余数       0索引为商,1索引为余数
  6. public BigInteger equals(object x)                                           比较是否相同
  7. public BigInteger  pow(int exponent)                                        次幂
  8. public BigInteger  max/min(BigInteger val)                           返回较大或较小值
  9. public int                 intvalue(BigInteger val)                        转为int类型整数,超出范围数据有误

7:BigInteger基本储存原理

将传入字符转换为二进制后,将其分为符号位与数字位,其中数字位从右往左32位为一组,分别转换为对应十进制数,最终将符号位与数字位的分组依次存入一个整形数组中

 其中signum表示符号位

mag是用来存储分组的数组


BigDecimal

        构造方法获取BigDcimal对象
        public BigDecimal(double val)
        public BigDecimal(String val)

        静态方法获取BigDecimal对象
        public static BigDecimal valueof(double val)

1:通过传递double类型的小数来创建对象

细节:这种方式创建的对象不够精确,不建议使用

  BigDecimal bd1=new BigDecimal(323.24);

        System.out.println(bd1);

 2:通过传递字符串表示的小数来创建对象

 BigDecimal bd3=new BigDecimal("232.324");
        BigDecimal bd4=new BigDecimal("324.123");
        System.out.println(bd3);
        System.out.println(bd4);
        System.out.println(bd3.add(bd4));

 3:通过静态方法创建BigDecimal对象

  BigDecimal bd5=BigDecimal.valueOf(10.0);
        System.out.println(bd5);

细节:


1:如果要表示的小数不大,没有超出double范围,建议使用静态方法
2:如果表示的小数比较大,超出了double的取值范围,建议使用构造方法
3:静态方法创建对象,如果我们传递的是0~10之间的整数,包含0,包含10,那么方法会返回已经创建好的对象,不会重新new

4:常用方法

public static BigDecimal valueof(double val)      获取对象

public  BigDecimal   add(BigDecimal val)         加法

public  BigDecimal subtract(BigDecimal val)        减法

public  BigDecimal multiply(BigDecimal val)        乘法

public  BigDecimal divide(BigDecimal val)        除法

public  BigDecimal divide(BigDecimal val ,int scale,RoundingMode roundingMode)        除法

scale  保留几位小数

roundingMode 舍入方式

储存原理

无论哪种获取对象的方法最终都是通过字符串形式获取的对象,只是表示形式不同

而通过字符串获取的小数,将小数的每一位(包括点)转化成对应ASCII码值存储在数组中

负数会将负号也作为一个字符转化为对应的值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值