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 }
想多了都是问题,做多了才是答案

浙公网安备 33010602011771号