[Java笔记12] 常用API

本文介绍了Java编程中的核心概念,包括Object类的toString()和equals()方法,以及Objects工具类的使用。讲解了StringBuilder类在字符串拼接中的高效应用,并通过示例展示了其与String的区别。此外,还探讨了Math类的常用数学运算方法,System类的系统相关方法,以及BigDecimal类在高精度计算中的重要性。最后,提供了示例代码以加深理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

Object

toString方法

equals方法

Objects

StringBuilder

StringBuilder 构造器

StringBuilder 常用方法

String拼接字符串内存图

StringBuilder append方法 拼接字符串内存图

String和StringBuilder比较

Math

Math 类的常用方法

System

System 类的常用方法 

BigDecimal

BigDecimal对象获取

BigDecima类的常用方法 


视频教程传送门 -> https://www.bilibili.com/video/BV1Cv411372m?p=113

Object

Object类的方法是一切子类对象都可以直接使用的
一个类要么默认继承了Object类,要么间接继承了Object类

public String toString() -> 默认是返回当前对象在堆内存中的地址信息:类的全限名@内存地址
public boolean equals(Object o) -> 默认是比较当前对象与另一个对象的地址是否相同,相同返回true,不同返回false

toString方法

父类toString()方法存在的意义就是为了被子类重写,以便返回对象的内容信息,而不是地址信息

IDEA右键 -> Generate -> toString

或者输入tos回车

自动写好架子

equals方法

父类equals方法存在的意义就是为了被子类重写,以便子类自己来定制比较规则。

右键 -> Generate -> equals() and hashCode(),自动写好架子,删除hashCode部分即可

在IDEA中查看源码,例如查看String的源码 => Ctrl + 点击String

Objects

Objects是一个工具类,提供了一些方法去完成一些功能。

使用Objects的equals方法在进行对象的比较会更安全 <= 有非空判断

public static boolean equals(Object a, Object b) -> 比较两个对象的,底层会先进行非空判断,从而可以避免空指针异常,再进行equals比较
public static boolean isNull(Object obj) -> 判断变量是否为null ,为null返回true, 反之

StringBuilder

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

StringBuilder 构造器

public StringBuilder()  -> 创建一个空白的可变的字符串对象,不包含任何内容
public StringBuilder(String str)  -> 创建一个指定字符串内容的可变字符串对象

StringBuilder 常用方法

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

String拼接字符串内存图

StringBuilder append方法 拼接字符串内存图

String和StringBuilder比较

String :内容是不可变的、拼接字符串性能差。
StringBuilder:内容是可变的、拼接字符串性能好、代码优雅。

==>
定义字符串使用String
拼接、反转、修改等操作字符串使用StringBuilder

【例】设计一个方法用于输出任意整型数组的内容,输出格式:[11, 22, 33, 44, 55]

package com.test.d11_api_stringbuilder;

public class StringBuilderTest2 {
    public static void main(String[] args) {
        int[] arr1 = null;
        System.out.println(toString(arr1));

        int[] arr2 = {10, 88, 99};
        System.out.println(toString(arr2));

        int[] arr3 = {};
        System.out.println(toString(arr3));
    }

    /**
       1、定义方法接收任意整型数组,返回数组内容格式
     */
    public static String toString(int[] arr){
       if(arr != null){
            // 2、开始拼接内容。
           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;
       }
    }
}

三个测试用例的输出为:

null
[10, 88, 99]
[]

Math

包含执行基本数字运算的方法,Math类没有提供公开的构造器 =>
类的成员如果是静态的,通过类名就可以直接调用

Math 类的常用方法

public static int abs​(int a)  -> 获取参数绝对值,参数可以是double,float,int,long
public static double ceil​(double a)  -> 向上取整
public static double floor​(double a)  -> 向下取整
public static int round​(float a)  -> 四舍五入,参数可以是double,float
public static int max​(int a,int b)  -> 获取两个int值中的较大值,参数可以是double,float,int,long
public static double pow​(double a,double b)  -> 返回a的b次幂的值
public static double random​()  -> 返回值为double的随机值,范围[0.0,1.0)

【例】生成3~9之间的随机数

// 生成 3~9 之间的随机整数
//  [0 - 6] + 3
int data =  (int)(Math.random() * 7) + 3;
System.out.println(data);

System

System 类的常用方法 

public static void exit​(int status) -> 终止当前运行的 Java 虚拟机,传入非零表示异常终止
public static long currentTimeMillis​() -> 返回当前系统的时间毫秒值形式
public static void arraycopy(源数组, 源起始索引, 目的数组, 目的起始索引, 拷贝个数) -> 数组拷贝

【例】数组拷贝

        int[] arr1 = {10, 20, 30, 40, 50, 60, 70};
        int[] arr2 = new int[6]; // [0, 0, 0, 0, 0, 0] ==>  [0, 0, 40, 50, 60, 0]
        System.arraycopy(arr1, 3, arr2, 2, 3);
        System.out.println(Arrays.toString(arr2));

BigDecimal

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

BigDecimal对象获取

创建对象BigDecimal封装浮点型数据(最好的方式是调用方法)
public static BigDecimal valueOf(double val)  -> 包装浮点数成为BigDecimal对象

BigDecima类的常用方法 

public BigDecimal add(BigDecimal b)
public BigDecimal subtract(BigDecimal b)
public BigDecimal multiply(BigDecimal b)
public BigDecimal divide(BigDecimal b)
public BigDecimal divide (另一个BigDecimal对象,精确几位,舍入模式) 

说明:舍入模式
BigDecimal.ROUND_UP  进一法
BigDecimal.ROUND_FLOOR 去尾法
BigDecimal.ROUND_HALF_UP 四舍五入

public double doubleValue() -> 把BigDecimal转换成double类型

【例】除法运算

package com.test.d14_bigdecimal;


import java.math.BigDecimal;
import java.math.RoundingMode;

public class BigDecimalDemo {
    public static void main(String[] args) {

        // 注意事项:BigDecimal是一定要精度运算的
        BigDecimal a11 = BigDecimal.valueOf(10.0);
        BigDecimal b11 = BigDecimal.valueOf(3.0);
        /**
           参数一:除数 参数二:保留小数位数  参数三:舍入模式
         */
        BigDecimal c11 = a11.divide(b11, 2, RoundingMode.HALF_UP); // 3.3333333333
        System.out.println(c11);

    }
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值