学习Java的人都知道,Java所有类都是Object的子类。所以,所有的Java对象都可以调用Object类提供的方法。其中,toString()就是其中一个。下面讲解一下为什么会有重写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;}}

接下来,新建一个类,名为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());}
}

可以看到,运行之后,结果为:
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;}
}

这时,打印出来的结果就是
Fire Water
当然,可根据不同的需求来重写toString方法。

关于重写toString方法相关推荐

  1. 如何:重写 ToString 方法(C# 编程指南)

    如何:重写 ToString 方法(C# 编程指南) C# 中的每个对象都继承 ToString 方法,此方法返回该对象的字符串表示形式.例如,所有 int 类型的变量都有一个 ToString 方法 ...

  2. java中的tostring_java 中重写toString()方法

    toString()方法 一般出现在System.out.println(类名.toString()); toString()是一种自我描述方法 本身返回的是 getClass().getName() ...

  3. java实体类如果不重写toString方法,会如何?

    先认识一下Object Object 类的 toString 方法 返回一个字符串,该字符串由类名(对象是该类的一个实例).at 标记符"@"和此对象哈希码的无符号十六进制表示组成 ...

  4. [转载] JAVA面向对象之代码块 继承 方法的重写 super关键字与重写toString()方法介绍

    参考链接: 可以重写Java中的私有方法吗 JAVA面向对象之代码块与继承 代码块分类 局部代码块 作用:限制变量生命周期 书写位置:在方法中 构造代码块 开发中很少使用 书写位置:类中  方法外 调 ...

  5. [转载] java重写toString()方法

    参考链接: 在Java中重写toString() 前言: 在你兴高采烈的写完一个类,创建测试类时,创建对象,传入参数,调用对象,以为会得到参数值,但突然发现输出的是" 类名@什么东东?(其实 ...

  6. [非技术参考]C#重写ToString方法

    C# 中的每个类或结构都隐式继承 Object 类. 因此,C# 中的每个对象都会获得 ToString 方法,此方法返回该对象的字符串表示形式. 例如,所有 int 类型的变量都有一个 ToStri ...

  7. 创建一个商品类Product类,在该类中定义3个属性id,name,price和重写toString()方法

    ·创建一个商品类Product类,在该类中定义3个属性id,name,price和重写toString()方法,分别实现setter()和getter()方法,创建一个测试类,调用Product类的构 ...

  8. 始终重写 toString 方法

    **始终重写 toString 方法** 虽然 Object 类提供了 toString 方法的实现,但它返回的字符串通常不是你的类的用户想要看到的.它由类名后跟一个「at」符号(@)和哈希码的无符号 ...

  9. 封装一个新闻类News,包含新闻标题,新闻作者,新闻内容,新闻类型三个属性,提供必要的访问器和修改器方法重写toString方法,要求打印对象时输出格式为“标题;

    封装一个新闻类News,包含新闻标题,新闻作者,新闻内容, 新闻类型三个属性,提供必要的访问器和修改器方法,重写toString方法, 要求打印对象时输出格式为"标题:类型:作者" ...

  10. Java基础——重写toString()方法

    1.Object()类的toString() Java默认的toString方法来自Object类 在Java中每个类都直接或者间接继承Object类,toString()方法同样是来自于Object ...

最新文章

  1. mac 10.10 apache php,在Mac上10分钟搞定Apache服务器配置
  2. python判断相同,Python判断两个文件是否相同与两个文本进行相同项筛选的方法
  3. MFC多视图与重绘效率
  4. 学习node js 之微信公众帐号接口开发 准备工作
  5. 2017c语言国二试题,国家计算机c语言二级考试试题
  6. 实践教程 | 万字长文,值得收藏/参考的OpenCV C++基础代码
  7. 剑盾神秘礼物正在维护服务器,宝可梦剑盾神秘礼物获取途径一览
  8. 【神通数据库】图形化界面安装、命令行安装、静默安装、命令行建数据库、日常维护(超详细)
  9. python制作白底界面_python 多张图片黑底白字转白底黑字
  10. 【因缘际会】知乎APP的简单的产品体验报告
  11. BIT软件工程个人项目——数独sudoku
  12. 理性、抽丝剥茧地解决 Easypoi、poi 版本冲突问题,而不是无头苍蝇一样闷头百度、google 一顿搜
  13. 海思方案技术研发交流群/海思方案供需交流群
  14. 台式计算机连不上网,台式机插上网线连不上网怎么办?
  15. 机械革命z2黑苹果改造计划第三番-macOS键盘快捷键Win键盘适配
  16. 初等数论【整除性篇】之习题证明
  17. VMware VMotion迁移与原理
  18. 向工信部投诉中国联通、移动、电信等运营服务商的权威途径
  19. Docker部署RabbitMQ
  20. 2023届暑期实习京东二面

热门文章

  1. 微服务网关限流鉴权-wei-fu-wu-wang-guan-xian-liu--jian-quan
  2. 农村计算机基础知识内容,农村信息员培训2计算机基础知识.pptx
  3. cocos2d学习笔记第四章 粒子效果及座标系
  4. 关于vector的容量增长问题
  5. 吕廷杰:华为鸿蒙OS将重新定义5G时代
  6. tinyxml 使用说明http://blog.csdn.net/zww0815/article/details/8083550
  7. 全球及中国海洋经济产业十四五运行规划与投资动向分析报告2022版
  8. MSP430G2553单片机下载程序
  9. 51单片机下载器兼串口通信模块制作(基于CH340C芯片)
  10. java后端使用信鸽推送