API 应用程序编程接口,提高编程效率。本次学习了Object类,Objects工具类,包装类,StringBuilder,StringBuffer,和StringJoiner。
目录
1.Object
Object类是java中所有类的祖宗类,因此所有类都可以直接使用Object类中的一些方法
常见方法:
方法名 | 说明 |
public String toString() | 返回对象的字符串表达形式 |
public boolean equals(Object o) | 判断两个对象是否相等 |
protected Object clone() | 对象克隆 |
package d10_api_Object;
import java.util.Objects;
public class Student {
private String name;
private int age;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
//重写equals方法,比好两个对象的内容一样就返回true
//比较者:s2 == this
//被比较者:s1 == o
@Override
public boolean equals(Object o) {
//1.判断两个对象的地址是否一样 一样直接返回true
if (this == o) return true;
//2.判断o是否为null直接返回false 比较的二者类型不相同,返回false
if (o == null || getClass() != o.getClass()) return false;
//3.o不是空 且一定是学生类型的对象,开始比较内容了
Student student = (Student) o;
return age == student.age && Objects.equals(name, student.name);
}
@Override
protected Object clone() throws CloneNotSupportedException {
//super 去调用父类的Object的clone方法
//使用时类要加一个Cloneable的接口 这是一个标记接口
//会有报错提醒 需要去抛开
return super.clone();
}
public Student() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
package d10_api_Object;
public class Text {
public static void main(String[] args) {
//目标:学习认识API Object
Student s1 = new Student("陈平安",19);
System.out.println(s1.toString());
System.out.println(s1); //s1 默认是调用toString方法
//toString默认是显示地址,实际用处不大,常重写为显示内容
Student s2 = new Student("陈平安",19);
System.out.println(s2.equals(s1));
//equals默认是比较两个元素的地址
System.out.println(s2 == s1); //一样可以进行地址的比较
// 所以还是会需要子类去重写这个方法 去比较内容
//克隆
//浅克隆 :拷贝出的新对象与原数据中的一模一样(引用类型拷贝的只是地址)
//深克隆:对象中的基本数据类型直接拷贝
// 字符串数据拷贝的还是地址
// 还包含的其他对象,不会拷贝地址,会创建新对象
}
}