JAVA包装类、BigDecimal类、BigInteger类

时间:2022-04-07 15:36:44

一、包装类:包装类的作用是让基本类型数据以对象的形式存在和使用,使得基本类型也可以以面向对象的思想进行开发。
包装类和基本类型对应关系:
      基本类型                 包装类
          int                   java.lang.Integer
         char                 java.lang.Character
         byte                 java.lang.Byte
         short                java.lang.Short
         long                 java.lang.Long
        double              java.lang.Double
         float                  java.lang.Float
        boolean            java.lang.Boolean

包装类一些常用的变量和方法:
 常量:MAX_VALUE:最大值,int最大值+1变成int最小值
             MIN_VALUE:  最小值,int最小值-1变成int最大值
方法:int intValue();   拆箱
            Integer valueOf(int a);装箱
            parseXXX(String str),将字符串表示的基本数据类型内容转换为这个基本类型数据,转换之前一定要确保字符串是基本数据类型兼容的数据,否则会转换异常报错numberformatException。
           将一个数字变成字符串有两种方法:
                                                              4+"";
                                                              Integer.valueOf(4).toString();
Integer的两个方法:
 可以将数字以2进制字符串的形式返回      Integer.toBinaryString(int n);
 可以将数字以16进制字符串的形式返回    Integer.toHexString(int n);

public class Demo {
 private static Object[] arrays = new Object[10];
 private static int index = 0;
 public static void add(Object obj){
  if(index<arrays.length){

 arrays[index++] = obj;
  }
 }
 public static void main(String[] args){
  String name = "hello";
  add(name);
  //使用包装类,可以使用add方法了
  Integer a = new Integer(10);//从基本数据类型到引用类型的过程叫“装箱”
  add(a);
  int c = a.intValue();//从引用数据类型到基本数据类型的过程叫“拆箱”,拆箱方法为XXXValue(),xxx是引用类型所 代表的基本类型名
 //在java1.5版本以后,推出了自动拆装箱,编译器在编译期做的预处理工作。基本类型和引用类型可以直接的相互赋值

  int b= 10;
  Integer d =10;//它这里的自动装箱并不是new Integer(10),而是使用Integer.valueOf(10)这种方法装箱,这种方法效 率高点
  int f = d;
  add(b);
  System.out.println(Integer.MAX_VALUE);
  String numStr = "456";
  int i = Integer.parseInt(numStr);
  i+=1;
  String str = i+"";//string str = Integer.valueOf(i).toString();
 }
}

二、BigDeciaml类:
java在计算浮点类型时会有舍入误差,java.math.BigDecimal类可以用于计算和描述非常精确的浮点数。
构造方法:BigDecimal(String num)
支持常用的加减乘除运算。
当我们对计算有严格要求时会使用该类,不过在正常开发中double一般都能满足我们的需求。

 public class TestBigDecimal {
 public static void main(String[] args){
  BigDecimal d1 = new BigDecimal("3.0");
  BigDecimal d2 = new BigDecimal("2.9");
  BigDecimal d3 = d1.subtract(d2);//减法运算
  System.out.println(d3);//0.1
  /*
   * add
   * subtract
   * multiply
   * divide除法,要使用舍入原则,否则当遇到无线小数时,会一直除到溢出
   * BigDecimal.ROUND_HALF_UP    四舍五入
   */
  BigDecimal d4 = d1.divide(d2,10,BigDecimal.ROUND_HALF_UP);
  System.out.println(d4);//1.0344827586
 }
}

三、BigInteger类:

 java提供的整型中int long 都是有范围的。我们可以使用BigInteger 表示一个范围更大的数字,理论上该值的最大值与内存有关。它也支持加减乘除,和BigDecimal的方法一样使用。