常用API——StringBuilder、Math、System、BigDecimal


StringBuilder概述

  • StringBuilder是一个可变的字符串类,我们可以把它看成是一个对象容器。
  • 作用:提高字符串的操作效率,如拼接、修改等。

StringBuilder 构造器

public StringBuilder()

创建一个空白的可变的字符串对象,不包含任何内容

public StringBuilder(String str)

创建一个指定字符串内容的可变字符串对象

StringBuilder常用方法

方法名称 说明
public StringBuitsler append(任意类型) 添加数据并返回StringBuilder对象本身
public StringBuilder reverse() 将对象的内容反转
public int length() 返回对象内容长度
public String toString() 通过toString()就可以实现把StringBuilder转换为String

为什么拼接、反转字符串建议使用StringBuilder

  • String :内容是不可变的、拼接字符串性能差。
  • StringBuilder:内容是可变的、拼接字符串性能好、代码优雅。
  • 定义字符串使用String
  • 拼接、修改等操作字符串使用StringBuilder

案例:打印整数数组

需求:

设计一个方法用于输出任意整型数组的内容,要求输出成如下格式: “该数组内容为:[11,22,33,44,55]”

分析:

  1. 定义一个方法,要求该方法能够接收数组,并输出数组内容。 —> 需要参数吗?需要返回值类型申明吗?
  2. 定义一个静态初始化的数组,调用该方法,并传入该数组。
public class StringBuilderTest {
    public static void main(String[] args) {
        int[] arr1 = null;
        System.out.println(toString(arr1));
        int[] arr2 = {1, 2, 3, 4, 5};
        System.out.println(toString(arr2));
    }

    public static String toString(int[] arr) {
        if (arr != null) {
            StringBuilder sb = new StringBuilder("[");
            for (int i = 0; i < arr.length; i++) {
                sb.append(arr[i]).append(i == arr.length - 1 ? "" : ", ");
            }
            sb.append("]");
            return sb.toString();
        } else {
            return null;
        }
    }
}

Math类

  • 包含执行基本数字运算的方法,Math类没有提供公开的构造器。
  • 如何使用类中的成员呢?看类的成员是否都是静态的,如果是,通过类名就可以直接调用

Math类的常用方法

方法名称 说明
public static int abs(int a) 获取参数绝对值
public static double ceil(double a) 向上取整
public static double floor(double a) 向下取整
public static int round(float a) 四舍五入
public static int max(int a,int b) 获取两个int值中的较大值
public static double pow(double a,double b) 返回a的b次幂的值
public static double random() 返回值为double的随机值,范围[0.0,1.0)

System类

System 类概述

  • System的功能是通用的,都是直接用类名调用即可,所以System不能被实例化。

System类的常用方法

方法名称 说明
public static void exit(int status) 终止当前运行的Java 虚拟机,非零表示异常终止
public static long currentTimeMillis() 返回当前系统的时间毫秒值形式
public static void arraycopy(数据源数组,起始索引,目的地数组,起始索引,拷贝个数) 数组拷贝

时间毫秒值

计算机认为时间是有起点的,起始时间: 1970年1月1日 00:00:00

时间毫秒值:指的是从1970年1月1日00:00:00走到此刻的总的毫秒数,应该是很大的。1s = 1000ms。

原因:1970年1月1日算C语言的生日

long time = System.currentTimeMillis();
System.out.printIn(time);//1642740834486

BigDecimal类

BigDecimal作用

  • 用于解决浮点型运算精度失真的问题

使用步骤

  • 创建对象BigDecimal封装浮点型数据(最好的方式是调用方法)

public static BigDecimal valueOf(double val); 包装浮点数成为BigDecimal对象。

BigDecima常用API

方法名称 说明
public BigDecimal add(BigDecimal b) 加法
public BigDecimal subtract(BigDecimal b) 减法
public BigDecimal multiply(BigDecimal b) 乘法
public BigDecimal divide(BigDecimal b) 除法
public BigDecimal divide (另一个BigDecimal对象,精确几位,舍入模式) 除法

注意事项

正例:优先推荐入参为String的构造方法,或使用BigDecimal的valueOf方法,此方法内部其实执行了Double 的 toString,而Double 的 toString 按 double 的实际能表达的精度对尾数进行了截断。

BigDecimal recommend1 = new BigDecimal("0.1")
BigDecimal recommend2 = BigDecimal valueOf(0.1)

文章作者: 泷少
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 泷少 !
评论
  目录