JavaSE&常用API(BigInteger,BigDecimal,Arrays,包装类)

简介: JavaSE&常用API(BigInteger,BigDecimal,Arrays,包装类)

1 BigInteger类


1.1 概述

  • 概述 : java.math.BigInteger类是一个引用数据类型 , 可以用于计算一些大的整数 , 当超出基本数据类型数据范围的整数运算时就可以使用BigInteger了。

1.2 构造方法

  • 构造方法 : 可以将整数的字符串 . 转成BigInteger类型的对象

1.3 成员方法

image.png

import java.math.BigInteger;

/*
    构造方法 :
        BigInteger(String value)  可以将整数的字符串,转换为BigInteger对象
    成员方法 :
        public BigInteger add (BigInteger value)      超大整数加法运算
        public BigInteger subtract (BigInteger value) 超大整数减法运算
        public BigInteger multiply (BigInteger value) 超大整数乘法运算
        public BigInteger divide (BigInteger value) 超大整数除法运算,除不尽取整数部分

 */
public class BigIntegerDemo {
    public static void main(String[] args) {
        // 获取大整数对象
        BigInteger bigInteger1 = new BigInteger("2147483648");
        // 获取大整数对象
        BigInteger bigInteger2 = new BigInteger("2");
        // public BigInteger add (BigInteger value)     超大整数加法运算
        BigInteger add = bigInteger1.add(bigInteger2);
        System.out.println(add);

        System.out.println("=============");

        // public BigInteger subtract (BigInteger value)  超大整数减法运算
        BigInteger subtract = bigInteger1.subtract(bigInteger2);
        System.out.println(subtract);

        System.out.println("=============");

        // public BigInteger multiply (BigInteger value)  超大整数乘法运算
        BigInteger multiply = bigInteger1.multiply(bigInteger2);
        System.out.println(multiply);

        System.out.println("=============");
        // public BigInteger divide (BigInteger value)  超大整数除法运算,除不尽取整数部分
        BigInteger divide = bigInteger1.divide(bigInteger2);
        System.out.println(divide);
    }
}

2 BigDecimal类


2.1 概述

  • 概述 : java.math.BigDecimal可以对大浮点数进行运算,保证运算的准确性。float,double 他们在存储及运算的时候,会导致数据精度的丢失。如果要保证运算的准确性,就需要使用BigDecimal。

2.2 构造方法

  • 构造方法 :

     public BigDecimal(String val) : 将 BigDecimal 的字符串表示形式转换为 BigDecimal

2.3 成员方法

  • 成员方法 :

image.png


image.png image.png image.png

import java.math.BigDecimal;

/*
    构造方法 :
        public BigDecimal(String val) 将 BigDecimal 的字符串表示形式转换为 BigDecimal
    成员方法 :
        public BigDecimal add(BigDecimal value) 加法运算
        public BigDecimal subtract(BigDecimal value)  减法运算
        public BigDecimal multiply(BigDecimal value)  乘法运算
        public BigDecimal divide(BigDecimal value)  除法运算(除不尽会有异常)
        public BigDecimal divide(BigDecimal value, int scale, RoundingMode roundingMode)  除法运算(除不尽,使用该方法)
        参数说明:
        scale 精确位数,
        roundingMode取舍模式
                   BigDecimal.ROUND_HALF_UP 四舍五入
                   BigDecimal.ROUND_FLOOR 去尾法
                   BigDecimal.ROUND_UP  进一法
 */
public class BigDecimalDemo {
    public static void main(String[] args) {
        BigDecimal bigDecimal1 = new BigDecimal("0.1");
        BigDecimal bigDecimal2 = new BigDecimal("0.2");

        // public BigDecimal add(BigDecimal value)  加法运算
        BigDecimal add = bigDecimal1.add(bigDecimal2);
        System.out.println(add);

        System.out.println("=================");

        // public BigDecimal subtract(BigDecimal value) 减法运算
        BigDecimal subtract = bigDecimal1.subtract(bigDecimal2);
        System.out.println(subtract);

        System.out.println("=================");

        // public BigDecimal multiply(BigDecimal value) 乘法运算
        BigDecimal multiply = bigDecimal1.multiply(bigDecimal2);
        System.out.println(multiply);

        System.out.println("=================");

        // public BigDecimal divide(BigDecimal value) 除法运算(除不尽会有异常)
        // BigDecimal divide = bigDecimal1.divide(bigDecimal2);
        // System.out.println(divide);

        /*
            public BigDecimal divide(BigDecimal divisor, int roundingMode)  除法运算(除不尽,使用该方法)
            参数说明:
            scale 精确位数,
            roundingMode : 取舍模式
                       BigDecimal.ROUND_HALF_UP 四舍五入
                       BigDecimal.ROUND_FLOOR 去尾法
                       BigDecimal.ROUND_UP  进一法
        */

        // BigDecimal divide = bigDecimal1.divide(bigDecimal2, 3, BigDecimal.ROUND_HALF_UP);
        // BigDecimal divide = bigDecimal1.divide(bigDecimal2, 3, BigDecimal.ROUND_FLOOR);
        // BigDecimal divide = bigDecimal1.divide(bigDecimal2, 3, BigDecimal.ROUND_UP);
        // System.out.println(divide);

    }
}

3 Arrays类


3.1 概述

  • 概述 : java.util.Arrays是数组的工具类,里面有很多静态的方法用来对数组进行操作(如排序和搜索),还包含一个静态工厂,可以将数组转换为List集合(后面会讲到集合知识

3.2 构造方法

  • 构造方法 : private Arrays(){}
  • image.png
import java.util.Arrays;
import java.util.Random;

/*
    1 随机生成10个[0,100]之间的整数,放到整数数组中,按照从小到大的顺序排序并打印元素内容。
 */
public class ArraysDemo {
    public static void main(String[] args) {
        // 创建数组
        int[] arr = new int[10];

        // 创建随机数对象
        Random r = new Random();

        // 采用随机数给数组的每一个元素赋值
        for (int i = 0; i < arr.length; i++) {
            arr[i] = r.nextInt(101);
        }

        // 对数组进行排序
        Arrays.sort(arr);

        // 把数组转成指定格式的字符串
        System.out.println(Arrays.toString(arr));
    }
}

4 包装类


4.1 概述

  • 概述 :

     Java中基本数据类型对应的引用数据类型

4.2 包装类的作用

  • 包装类的作用 :

     基本数据类型 , 没有变量 , 没有方法 , 包装类就是让基本数据类型拥有变量和属性 , 实现对象化交互

     基本数据类型和字符串之间的转换

4.3 基本数据类型和包装类对应

  • 基本数据类型和包装类的对应关系

image.png

4.4 自动装箱和自动拆箱

  • 自动转型和自动拆箱
  • 自动装箱和拆箱是JDK1.5开始的
  • 自动装箱 : 基本数据类型自动转成对应的包装类类型
  • 自动拆箱 : 包装类类型自动转成对应的基本数据类型
Integer i1 = 10;
int i2 = i1;

4.5 基本数据类型和字符串之间的转换

  • 使用包装类, 对基本数据类型和字符串之间的转换
  • 在开发过程中数据在不同平台之间传输时都以字符串形式存在的,有些数据表示的是数值含义,如果要用于计算我们就需要将其转换基本数据类型.
  • 基本数据类型–> String

              直接在数值后加一个空字符串

              通过String类静态方法valueOf()

         String --> 基本数据类型

image.png

注意事项 :


  • 包装类对象的初始值为null(是一个对象)
  • Java中除了float和double的其他基本数据类型,都有常量池

整数类型:[-128,127]值在常量池

字符类型:[0,127]对应的字符在常量池

布尔类型:true,false在常量池

  • 在常量池中的数据 , 会进行共享使用 , 不在常量池中的数据会创建一个新的对象
相关文章
|
5月前
|
Java API
JavaSE——常用API进阶二(6/8)-ZoneId、ZoneDateTime、Instant(常见方法、用法示例)
JavaSE——常用API进阶二(6/8)-ZoneId、ZoneDateTime、Instant(常见方法、用法示例)
48 1
|
2月前
|
Java
BigInteger和BigDecimal18
BigInteger和BigDecimal18
39 3
|
5月前
|
存储 缓存 Java
JavaSE 字符串String及相关API StringBuilder StringJoiner 底层原理 详解
JavaSE 字符串String及相关API StringBuilder StringJoiner 底层原理 详解
45 2
|
5月前
|
存储 Java API
JavaSE——常用API进阶二(8/8)-Arrays、Comparable、Comparator(Arrays类提供的的常见方法、用法示例)
JavaSE——常用API进阶二(8/8)-Arrays、Comparable、Comparator(Arrays类提供的的常见方法、用法示例)
37 2
|
5月前
|
安全 Java API
JavaSE——常用API进阶二(7/8)-DateTimeFormatter、Period、Duration(常见方法、用法示例)
JavaSE——常用API进阶二(7/8)-DateTimeFormatter、Period、Duration(常见方法、用法示例)
48 2
|
5月前
|
安全 Java API
JavaSE——常用API进阶二(5/8)-JDK 8新增的时间API,LocalDate、LocalTime、LocalDateTime
JavaSE——常用API进阶二(5/8)-JDK 8新增的时间API,LocalDate、LocalTime、LocalDateTime
46 2
|
6月前
|
Java
【Java】如果一个集合中类型是String如何使用拉姆达表达式 进行Bigdecimal类型计算?
【Java】如果一个集合中类型是String如何使用拉姆达表达式 进行Bigdecimal类型计算?
107 0
|
6月前
|
存储 Java
你知道Java中的BigInteger类和BigDecimal类吗?
你知道Java中的BigInteger类和BigDecimal类吗?
|
3月前
|
Java
【Java】Math、System、RunTime、BigDecimal类常用方法
【Java】Math、System、RunTime、BigDecimal类常用方法
|
5月前
|
Java
深入了解Java中的BigDecimal类及其方法
深入了解Java中的BigDecimal类及其方法