API
一、定义
**API:**应用程序编程接口
**简单理解:**API就是别人已经写好的东西,我们不需要自己编写,直接使用即可。
例如随机数:
public static void main(String[] args)
{
Random r = new Random();
int number = r.nextInt(100);
}
**Java API:**指的就是JDK中提供的各种功能的Java类
这些类将底层的实现封装了起来,我们不需要关心这些类是如何实现的,只需要学习这些类如何使用即可。
二、object类
object类介绍
- 所有的类,都直接或间接的继承object类(祖宗类)
- Object类的方法是一切子类都可以直接使用的,所以我们要学习Object类的方法
1.toString方法
public String toString()//返回该对象的字符串表示
public String toString(){
return getClass().getName() + "@" + Integer.toHexString(hasCode());
}
getClass().getName():全类名(包名+类名)
Integer.toHexString():转十六进制
hasCode():返回的是对象内存地址,哈希算法,算出来的整数(哈希值)
细节:使用打印语句,打印对象名的时候,println方法,源码层面,会自动调用该对象的toString方法、
public static String valueOf(object obj){
return(obj == null) ? "null" : obj.toString();
}
Object的toString方法:
方法名 | 说明 |
---|---|
public String toString() | 默认是返回当前对象在堆内存中的地址信息:类的全类名@十六进制哈希值 |
- 开发中直接输出对象,默认输出对象的地址其实是毫无意义的。
- 开发中输出对象变量,更多的时候是希望看到对象的内容数据而不是对象的地址信息
toString存在的意义
- 父类toString()方法存在的意义就是为了被子类重写,以便返回对象的内容信息,而不是地址信息!!!
2.equals方法
Object类中的equals方法:
public boolean equals(Object obj)//对象之间进行比较,返回true,或者是false
public boolean equals(Object obj)
{
return (this == obj);
}
结论:Object类中的equals方法,默认比较的是对象内存地址
-通常会重写equals方法,让对象之间,比较内容
重写equals方法
public boolean equals(Object obj){
if(obj instanceof Student){
//向下转型的目的,是为了调用子类特有的成员
Student stu = (Student) obg;
return this.age == stu.age && this.name.equals(stu.name);
}else{
return false;
}
}
Object的equals方法:
方法名 | 说明 |
---|---|
public boolean equals (Object o) | 默认是比较当前对象与另一个对象的地址值是否相同,相同返回true,不同返回false |
equals存在的意义
- 父类equals方法存在的意义就是为了被子类重写,以便子类自己来定制比较规则。
快捷键重写equals方法解读
public boolean equals(Object o){
//this:stu1
//o:stu2
if(this == o){
//两个对象做地址值比较,如果地址相同,里面的内容肯定相同,直接返回true.
return true;
}
//代码要是能走到这,代表地址肯定不相同
if(o == null || this.getClass() != o.getClass()){
//代表stu1肯定不是null
//stu1不是null,stu2是null,就直接返回false
//this.getClass() != o.getClass():两个对象的字节码是否相同
//如果字节码不相同,就意味着类型不相同,直接返回false
return false;
}
//代码要是能够走到这,代表字节码相同,类型肯定相同
//向下转型
Student student = (Student) o;
//比较
return this.age == student.age && Object.equals(this.name,student.name);
}
3.Objects概述
Objects类与Object还是继承关系,Objects类是从JDK1.7开始之后才有的。
Objects的常见方法
方法名 | 说明 |
---|---|
public static boolean equals (Object a , Object b); | 比较两个对象的,底层会先进行非空判断,从而可以避免空指针异常。再进行equals比较 |
public static boolean isNull(Object obj) | 判断变量是否为null |
- Object.equals方法,内部依赖于我们自己所编写的equals
- Object.equals方法,内部带有非null判断
拓展:
||:左边为true,右边不执行
&&:左边为false,右边不执行
三、Math类
- 包含执行基本数字运算的方法
Math类的常用方法
**注:**都是静态方法,直接用类名调用即可
四、System类概述
- System的功能是静态的,都是直接用类名调用即可
常用方法
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-theFsynd-1680936792585)(…/…/AppData/Roaming/Typora/typora-user-images/image-20230407160841350.png)]
- 第二个方法可以查看代码运行了多久
- 返回1970年1月1日 0时0分0秒(C语言生日),到现在所经历过的毫秒值
- 因为时差原因,各个地返回值不同
五、BigDecimal类概述
- 用于解决小数运算中,出现的不精确问题
BigDecimal类使用
- 创建对象
第一个不推荐使用,无法保证小数运算的精确
-
常用方法
用于解决小数运算中,出现的不精确问题
BigDecimal类使用
- 创建对象
-
第一个不推荐使用,无法保证小数运算的精确
- 常用方法