javaSE-day01-Object类的toString方法
This commit is contained in:
37
javaSE-day01/src/com/inmind/object01/Demo02.java
Normal file
37
javaSE-day01/src/com/inmind/object01/Demo02.java
Normal file
@@ -0,0 +1,37 @@
|
||||
package com.inmind.object01;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
/*
|
||||
Object类的toString方法
|
||||
String toString() 返回对象的字符串表示形式。
|
||||
|
||||
Object类的toString的源码:
|
||||
public String toString() {
|
||||
return getClass().getName() + "@" + Integer.toHexString(hashCode());
|
||||
}
|
||||
|
||||
注意:在实际开发中,一个对象的地址值对于我们而言,没有太大的帮助,我们程序员希望直接看到
|
||||
该对象的内容(属性),那怎么办呢???
|
||||
|
||||
现在父类Object类的toString功能,不符合子类Person的需求,那么我们就可以在对应的子类中重写toString
|
||||
|
||||
总结:今后打印对象时,如果发现打印时输出了地址,但是我们想看属性内容,应该在该对象的类中重写toString,
|
||||
不用手动写alt+insert自动生成即可
|
||||
*/
|
||||
public class Demo02 {
|
||||
public static void main(String[] args) {
|
||||
Person p = new Person();
|
||||
p.age = 20;
|
||||
p.name = "张三";
|
||||
System.out.println(p);//com.inmind.object01.Person@3b07d329,此处调用的是Object的toString方法
|
||||
|
||||
ArrayList<Integer> lists = new ArrayList<>();
|
||||
lists.add(1);
|
||||
lists.add(2);
|
||||
lists.add(3);
|
||||
//为何现在打印对象内容变了??因为println(Object):底层调用的是该对象的toString方法并返回,但是ArrayList重写了父类的toString方法
|
||||
System.out.println(lists);//[1, 2, 3]
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,14 @@
|
||||
package com.inmind.object01;
|
||||
|
||||
public class Person {//直接继承自Object
|
||||
String name;
|
||||
int age;
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "Person{" +
|
||||
"age=" + age +
|
||||
", name='" + name + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user