0
点赞
收藏
分享

微信扫一扫

【Java】Object 类部分方法说明



文章目录

  • ​​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
}
}

​​返回顶部​​


举报

相关推荐

java中Object类的方法

Object 类方法

Object 类相关方法

java:Object类

【Java】Object类

Object类的方法15

0 条评论