常用API
什么是API?
API(Application Programming interface)应用程序编程接口。
简单来说:就是Java帮我们已经写好的一些方法,我们直接拿过来用就可以了。
Object
Object类的作用:
1、一个类要么默认继承了Object类,要么间接继承了Object类,Object类是Java中的祖宗类。
2、Object类的方法是一切子类都可以直接使用的,所以我们要学习Object类的方法。
Object类的常用方法:
方法名 | 说明 |
---|---|
public String toString() | 默认是返回当前对象在堆内存中的地址信息:类的全限名@内存地址 |
public Boolean equals(Object o) | 默认是比较当前对象与另一个对象的地址是否相同,相同返回trus,不同返回false |
toString()
问题引出:
1、开发中直接输出对象,默认输出对象的地址其实毫无意义的。
2、开发中输出对象变量,更多的时候是希望看到对象的内容数据而不是对象的地址信息。
toString()存在的意义
父类toString()方法存在的意义就是为了被子类重写,以便返回对象的内容信息,而不是地址信息!!
Object的equals方法
问题思考:
直接比较两个对象的地址是否相同完全可以用 “==” 替代equals。
equals存在的意义
父类equals方法存在的意义就是为了被子类重写,以便子类自己来定制比较规则。
Objects
Object类与Object还是继承关系,Objects类是从JDK 1.7开始之后才有的。
官方在进行字符串比较时,没有对象自己的equals方法,而是选择了Objects的equals方法来比较两个对象。
@Override
public boolean equals(Object o) {
//1、判断是否是同一个对象比较,如果是返回true。
if (this == o) return true;
//2、如果o是null 返回false 如果o不是学生类型返回false ... Student != ..Pig
if (o == null || this.getClass() != o.getClass()) return false;
// 3、说明o一旦是学生类型而且不为null
Student student = (Student) o;
return sex == student.sex && age == student.age && Objects.equals(name, student.name);
}
Objects的equals方法比较的结果是一样的,但是更安全。
Objects的常见方法:
方法名 | 说明 |
---|---|
public static boolean equals(Object a, Object b) | 比较两个对象的,底层会先进行非空判断,从而可以避免空指针异常。在进行equals比较 |
public static boolean isNull(Object o) | 判断变量是否为null,为null返回true,反之 |
源码分析:
public static boolean equals(Object a,Object b) {
return (a == b) || (a != null && a.equals(b));
}
StringBuilder
1、StringBuilder是一个可变的字符串类,我们可以把他看成是一个对象容器。
2、作用:提高字符串的操作效率,如拼接、修改等。
3、StringBuilder构造器
名称 | 说明 |
---|---|
public StringBuilder() | 创建一个空白的可变的字符串对象,不包含任何内容 |
public StringBuilder(String str) | 创建一个指定字符串内容的可变字符串对象 |
总结
1、为什么拼接、反转字符串建议使用StringBuilder?
String:内容是不可变的、拼接字符串性能差
StringBuilder:内容是可变的、拼接字符串性能好、代码优雅。
定义字符串使用String
拼接、修改等操作字符串使用StringBuilder
Math类
1、包含执行基本数字运算的方法,Math类没有提供公开的构造器。
2、如何使用类中的成员呢?看类的成员是否都是静态的,如果是,通过类名就可以直接调用
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 doublle pow(double a,double b) | 获取a的b次幂的值 |
public static double random( ) | 返回值为double的随机值,范围[0.0,1.0) |
System类
System的功能是通用的,都是直接用类名调用即可,所以System不能被实例化
System类的常用方法
方法名 | 说明 |
---|---|
public static void exit(int status) | 终止当前运行的Java虚拟机,非零表示异常终止 |
public static long currentTimeMills() | 返回当前系统的时间毫秒值形式 |
public static void arraycopy(数据源数组,起始索引,目的地数组,起始索引,拷贝个数) | 数组拷贝 |
时间毫秒值
计算机认为世界是有起点的,起始时间:1970年1月1日 00:00:00
时间毫秒值:指的是从1970年1月1日 00:00:00走到此刻的总的毫秒数,应该是很大的。1s = 1000ms。
原因:
1969年8月,被而是现实程序员肯汤普逊利用妻儿离开一个月的机会,开始着手创造一个全新的革命性的操作系统,它使用B编译语言在老旧的PDP-7机器上开发出了Unix的一个版本。
随后汤普逊和同时丹尼斯里奇改进了B语言,开发出了C语言,重写了UNIX。
1970年1月1日 算C语言的生日。
long time = System.currentTimeMillis();
System.out.println(time); //1575465416955
BigDecimal
作用:用于解决浮点型运算精度失真的问题
使用步骤:创建对象BigDecimal封装浮点型数据(最好的方法是调用方法)
public static BigDecimal valueOf(double val): 包装浮点数称为BigDecimal对象。
BigDecimal常用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 对象,精确几位,舍入模式) | 除法 |
BigDecimal 是一定要精度运算的。