Java重写toString方法
2017-02-13 11:00
836 查看
学习Java的人都知道,Java所有类都是Object的子类。所以,所有的Java对象都可以调用Object类提供的方法。其中,toString()就是其中一个。下面讲解一下为什么会有重写toString()方法一说。
首先,我们先来创建一个Persion类,它只简单的包含 firstname 和 lastname,当然,加上它的setter 和 getter 法。放在com.bean包下:
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
接下来,新建一个类,名为Test,让它包含main函数:
2
3
4
5
6
7
8
9
1
2
3
4
5
6
7
8
9
可以看到,运行之后,结果为:
Person@c17164
注:打印一个对象,可以直接System.out.println(p);其实println方法内部会自动调用p 的 toString() 方法。
但是,我们一般想要的结果并不是这样,因为Object类的toString()方法总是返回对象的所属类的类名 + @ + hashCode值,代表对象在内存的位置。这显然不能满足我们通常的需求。像这里,我们是希望能打印出p的全名出来,这时,就需要重写toString()方法,因为重写了toString()之后,那么p在调用toString()方法的时候,会优先调用自己类里的toString()方法。可自行回顾多态知识点
修改后的类如下:
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
这时,打印出来的结果就是
当然,可根据不同的需求来重写toString方法。
首先,我们先来创建一个Persion类,它只简单的包含 firstname 和 lastname,当然,加上它的setter 和 getter 法。放在com.bean包下:
public class Person { private String firstname; private String lastname; public String getFirstname() { return firstname; } public void setFirstname(String firstname) { this.firstname = firstname; } public String getLastname() { return lastname; } public void setLastname(String lastname) { this.lastname = lastname; } }1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
接下来,新建一个类,名为Test,让它包含main函数:
public class Test { public static void main(String[] args) { Person p = new Person(); p.setFirstname("Fire"); p.setLastname("Water"); System.out.println(p.toString()); } }1
2
3
4
5
6
7
8
9
1
2
3
4
5
6
7
8
9
可以看到,运行之后,结果为:
Person@c17164
注:打印一个对象,可以直接System.out.println(p);其实println方法内部会自动调用p 的 toString() 方法。
但是,我们一般想要的结果并不是这样,因为Object类的toString()方法总是返回对象的所属类的类名 + @ + hashCode值,代表对象在内存的位置。这显然不能满足我们通常的需求。像这里,我们是希望能打印出p的全名出来,这时,就需要重写toString()方法,因为重写了toString()之后,那么p在调用toString()方法的时候,会优先调用自己类里的toString()方法。可自行回顾多态知识点
修改后的类如下:
public class Person { private String firstname; private String lastname; public String getFirstname() { return firstname; } public void setFirstname(String firstname) { this.firstname = firstname; } public String getLastname() { return lastname; } public void setLastname(String lastname) { this.lastname = lastname; } //重写toString方法 public String toString(){ return firstname + " " + lastname; } }1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
这时,打印出来的结果就是
Fire Water
当然,可根据不同的需求来重写toString方法。
相关文章推荐
- 44 java toString 方法 重写equals 方法
- java学习之旅40--面向对象_13_继承_Object类用法_toString和equals方法_重写toString
- Java之面向对象例子(三) 多态,重写,重载,equals()方法和toString()方法的重写
- java:toString方法重写
- Java:object类 中常用equals()和 toString()方法的重写
- 巧用重写toString的方法,输出格式的问题留给java帮我解决吧~
- Java重写ToString()方法的意义
- 一起学Java_Eclipse开发工具介绍及equals、toString方法的重写equals
- java 中重写toString()方法
- java实体类如果不重写toString方法,会如何?
- 【java】在java中为啥要重写toString 方法?
- 【Core Java Volume1】重写equals,hashCode,toString方法
- Java类中重写toString方法
- java实体类重写toString方法,得到想要字符串
- Java中为什么要重写ToString方法
- Java仿照JavaScript的JSON的stringify()方法重写toString()方法的启示
- Java 重写与重载区别 Java父类的Object方法 要重写tostring原因,多个catch处理逻辑
- Java 重写tostring方法
- java反射 重写类的toString方法 转化为每个字段名为标签的xml
- java tostring方法重写代码示例