java中的Object类
2021-06-10 21:05
标签:sys 其它 str 子类初始化 getname 实现 初始化 strong lse 简介 类层次结构最顶层的基类,所有类都直接或间接继承自Object类,所以,所有的类都是以恶个Object(对象) 构造方法 Object: 构造一个对象,所有子类初始化时都会优先调用该方法 常用的成员方法 栗子: 输出结果: 重写Object类的方法 需求:开发中通常需要将对象转换成字符串形式就行传输,也需要对即将使用的对象进行相等判断。定义标准javaBean类,重 写toString和equals方法。 步骤: 定义java Bean类Student,属性:id,name,score 重写toString(): 该对象的字符串表现形式,一般都是包含所有属性值且具有一定格式的字符串 重写equals(): 代码: java中的Object类 标签:sys 其它 str 子类初始化 getname 实现 初始化 strong lse 原文地址:https://www.cnblogs.com/zxy6/p/14243046.html
package dome6;
public class Test {
public static void main(String[] args) {
//非静态方法的调用方式:通过 对象名 . 的形式调用
Object obj = new Object(); //创建Object对象
Object obj1 = new Object();
// int hashCode(): 返回调用者的字节码文件对象,不同对象的哈希码值一般不同
int a = obj.hashCode();
System.out.println(a);
// Class> getClass():返回该调用者的字节码文件对象,一个类只有一个字节码文件
Class b = obj.getClass();
Class e = obj1.getClass();
System.out.println(b);
System.out.println(e);
//String toString(): 返回该对象的字符串表示形式,默认打印的是地址值,但是不同的对象地址值肯定不同
// 地址值的组成:全类名(包+类) + @ + 通过对象的哈希码的无符号十六进制形式
String c = obj.toString();
String p = obj1.toString();
System.out.println(c);
System.out.println(p);
//boolenan equals() 比较两个对象是否相等,默认比较的是地址值,无意义,子类一般都会重写这个方法
Boolean d = obj.equals(obj1);
System.out.println(d);
}
}
class a{
}
class b{
}
460141958
class java.lang.Object
class java.lang.Object
java.lang.Object@1b6d3586
java.lang.Object@4554617c
false
package dome6;
import java.util.Objects;
public class Student {
public static void main(String[] args) {
//测试toSting()方法
Stu stu = new Stu(19,"亚索",23);
//输出语句直接打印对象,默认调用了该对象的toSting()方法,因为所有的类都继承自Object
System.out.println(stu);
//测试equals
Stu stu1=new Stu(19,"压缩",23);
System.out.println(stu.equals(stu1));
}
}
class Stu{
//私有变量
private int id;
private String name;
private int score;
//构造方法
public Stu(){};
public Stu(int id, String name,int score) {
this.id = id;
this.name = name;
this.score = score;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
//重写方法
//重写toString()
@Override
public String toString() {
return "Stu{" +
"id=" + id +
", name=‘" + name + ‘\‘‘ +
", score=‘" + score + ‘\‘‘ +
‘}‘;
}
//重写equals():用来比较两个对象是否相同
//自定义版的重写equals()方法
//假设id属性值相同,两个对象就是同一个对象
//注意 在实际开发中,我们把两个对象的哥哥属性值都相同的情况下,才会认为这两个对象是同一个对象
// @Override
// public boolean equals(Object obj){
// /*
// this:谁调用,this就表示谁
// obj:对象
// */
// //向下转型
// Stu s2 = (Stu)obj;
// //比较id是否相同
// return this.id == s2.id;
// }
//通过快捷键实现 alt+insert
@Override
public boolean equals(Object o) {
//this:stu o:stu1
// 比较两个对象的地址值,提高效率
//如果if语句控制的语句体只有一行代码,则不需要大括号
if (this == o) return true;
//判断要比较的两个对象是否是同一个类型的对象
//程序默认 this.getClass()
if (o == null || getClass() != o.getClass()) return false;
//向下转型,正常的逻辑代码
Stu stu = (Stu) o;
return id == stu.id &&
score == stu.score &&
Objects.equals(name, stu.name); //name属于String,属于引用型变量,所以有equals()方法
}
}
上一篇:DAY 16 PYTHON入门
下一篇:线程池