目录
StringBuilder append方法 拼接字符串内存图
视频教程传送门 -> 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);
}
}