文章目录
- Object 类部分方法说明
- 一、toString方法
- 二、equals方法
- 三、finalize方法
- 四、hashCode方法
Object 类部分方法说明
一、toString方法
关于Object中的 toString 方法:
- Sun在Object中设置toString方法的目的:
返回java对象的字符串表示形式
。 - 在现实生活中,Object中的toString方法已经不够用(开发者不满意Object中的toString方法的结果),所以Object中的toString方法就是要被重写的
-
当println后是一个引用类型,会默认的调用引用类型的toString方法
- SUN公司的 toString 方法:
public String toString() {
// 返回 类名 @ 16进制的字符串
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
结果:类名@java对象的内存地址经过哈希算法得出的int类型的值再转换成16进制
等同看作:java对象在堆内存中的地址
public class person {
//属性:姓名、年龄
String name;
int age;
//含参构造方法
public person(String name, int age) {
super();
this.name = name;
this.age = age;
}
//重写toString方法
//根据项目的需求:现实格式
// person[name=张三,age=15]
public String toString(){
return "person[name="+name+",age="+age+"]";
}
}
public class ToString {
/**
* @param args
*/
public static void main(String[] args) {
//创建一个object对象
Object o = new Object();
//调用toString方法
String o1 = o.toString();
System.out.println(o1); //java.lang.Object@5d888759
//创建一个person对象
person p = new person("张三",15);
//调用toString方法
String p1 = p.toString();
System.out.println(p1); //Object类.person@3ce53108//person[name=张三,age=15]
person p2 = new person("嵩",35);
System.out.println(p2); //person[name=嵩,age=35]
System.out.println(p2.toString()); //person[name=嵩,age=35]
}
}
返回顶部
二、equals方法
关于Object中的equals方法:
public boolean equals(Object obj) {
return (this == obj);
}
- 若
==
两边如果是引用类型
,则比较内存地址
,地址相同为true,不同为false
- 所以Object中的equals方法 ,比较的是两者的内存地址
- Object中的equals方法设计目的:
比较两个对象是否一致
public class Star {
//属性:id、姓名
int id;
String name;
//Constructor
public Star(int id,) {
super();
this.id = id;
this.name = name;
}
//重写方法
//根据要求:
// id、名字一致就为true,不一致就为false
// s1.equals(s2)
public boolean equals(Object obj){
//s1=this
//s2=obj
if(this==obj) return true;
if(obj instanceof Star){
Star s =(Star)obj;
if(s.id == id && s.name.equals(name)){
return true;
}
}
return false;
}
}
public class equals {
/**
* @param args
*/
public static void main(String[]) {
// TODO Auto-generated method stub
Object o1 = new Object();
Object o2 = new Object();
boolean b1 = o1.equals(o2);
System.out.println(b1); //false
Star s1 = new Star(100,"许嵩");
Star s2 = new Star(100,"许嵩");
System.out.println(s1.equals(s2)); //false//true
//若只需名字和id一致就相等,则需要重写equals方法
}
}
返回顶部
三、finalize方法
关于Object中的finalize方法:
- 垃圾回收器(Garbage Collection),也叫GC,垃圾回收器主要由以下的特点:
- 当对象不再被程序使用时(java对象没有更多的引用指向它时),垃圾回收器将其回收
- 垃圾回收是在后台运行的。我们无法命令垃圾回收器马上回收垃圾资源,但是我们可以告诉他,尽快回收垃圾资源(
System.gc Runtime.getRuntime().gc()
) - 垃圾回收器在回收某个对象的时候,会首先调用该对象的finalize方法
- GC主要针对堆内存
public class garbage {
public void finalize() throws Throwable {
System.out.println(this+"马上就要被回收了!");
}
}
public class finalize {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
garbage g = new garbage();
//没有更多引用指向它,等待回收
g = null;
//程序员只能建议垃圾回收器回收垃圾
System.gc(); //Object类.garbage@3d4b7453马上就要被回收了!
}
}
返回顶部
四、hashCode方法
public native int hashCode();
- -native 本地调用,底层调用C++
- 该方法返回的是该对象的哈希码值
- java对象的内存地址在哈希算法中得出的值
public class hashCode {
/*
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
hashCode h = new hashCode();
System.out.println(h.hashCode()); //1569228633
}
}
返回顶部