Object详解——toString

toString方法
基本介绍
默认返回:全类名+@+哈希值的十六进制,【查看Object的toString方法】
子类往往重写toString方法,用于返回对象的属性信息
public Stringtostring(){
return getClass().getName() + "@" + Integer.toHexString(hashCode());
1.重写toString方法,打印对象或拼接对象时,都会自动调用该对象的toString形式.
案例演示:Monster [name,job,sal]案例:ToString_.java
当直接输出一个对象时,toString方法会被默认的调用

 1 package com.Object;
 2 
 3 public class ToString {
 4     public static void main(String[] args) {
 5 
 6         Monster monster = new Monster("tom", "巡山", 1000);
 7         //monster.toString(), 这里调用的to string()是Object的,因为没有重写
 8         System.out.println(monster.toString()+"\t"+"hashcode="+monster.hashCode());
 9     }
10 }
11 
12 /*
13     Object的tostring()的源码
14        public String toString() {
15         return getClass().getName() + "@" + Integer.toHexString(hashCode());
16     }
17     分析:
18     1.return getClass().getName()类的全类名(包名+类名)
19     2.Integer.toHexString(hashCode())将对象的hashcode值转成16进制数
20  */
21 class Monster{
22     private  String name;
23     private String job;
24     private  double salary;
25 
26     public Monster(String name, String job, double salary) {
27         this.name = name;
28         this.job = job;
29         this.salary = salary;
30     }
31 
32     //重写toString()方法,输出对象的属性值
33     //使用快捷键:Alt+Insert;
34     @Override
35     public String toString() {
36         return "Monster{" +
37                 "name='" + name + '\'' +
38                 ", job='" + job + '\'' +
39                 ", salary=" + salary +
40                 '}';
41     }
42 }

 

finalize方法
1.当对象被回收时,系统自动调用该对象的finalize方法。子类可以重写该方法,
做一些释放资源的操作【演示】
2.什么时候被回收:当某个对象没有任何引用时,则jvm就认为这个对象是一个垃
圾对象,就会使用垃圾回收机制来销毁该对象,在销毁该对象前,会先调用
finalize方法。
3.垃圾回收机制的调用,是由系统来决定,也可以通过System.gc()主动触发垃圾
回收机制,测试:Car [name]

 

 1 package com.Object;
 2 
 3 public class Finalize {
 4     public static void main(String[] args) {
 5         Car car = new Car("川骑");
 6         car =null;
 7         System.gc();//主动调用垃圾回收器
 8         //这时候car对象就是一个垃圾,垃圾回收器就会回收销毁对象,
 9         // 在销毁之前会调用该对象的Finalize()方法
10         //开发人员这时候,就可以编写相关的业务,如;释放资源,数据库连接等;
11         //如果开发人员不重写finalize,程序就会调用Object的finalize方法,
12         //如果开发人员重写了finalize,就可以实现相应的功能。
13         System.out.println("程序退出了......");
14     }
15 }
16 class Car{
17     private String name;
18 
19     public Car(String name) {
20         this.name = name;
21     }
22 
23 
24     //重写finalize方法
25     @Override
26     protected void finalize() throws Throwable {
27         //super.finalize();//默认情况下,调用父类的object
28         System.out.println("我们换了骑手"+name);
29         System.out.println("杜卡迪赛车手即将登场...");
30     }
31 }

 

posted @ 2022-03-09 14:27  捞月亮的渔夫  阅读(288)  评论(0)    收藏  举报