toString()方法是Object类的方法,调用toString()会返回对象的描述信息。

  1)为什么重写toString()方法呢?

  如果不重写,直接调用Object类的toString()方法,打印的是该对象的内存地址(类名@哈希码值)。如下代码所示:

class Person {
String name;
String sex;
int age;
public Person() {}
public Person(String name, String sex, int age) {
this.name = name;
this.sex = sex;
this.age = age;
}
} class Demo {
public static void main(String[] args) {
Person p = new Person();
System.out.println(p);
}
}

运行结果:Person@10dea4e

  从上面代码可知,调用p的toString方法,打印出来的信息是类名+内存地址值。不符合要求。根据我们之前学的继承,假如父类的指定的功能能不能满足要求,那么子类可以复写父类的功能函数,那么该对象再调用toString()方法时,则会调用子类复写的toString方法。

  (2)一般什么时候重写toString方法?

  一般在编写代码,POJO类必须重写toString方法。如果继承了另一个POJO类,注意在前面加一下super.toString。

  POJO(Plain Ordinary Java Object)即普通的java类,具有一部分getter/setter方法的那种类就可以称作为POJO类。重写toString()方法后,在方法执行跑出异常时,可以直接调用POJO的toString()方法打印其属性值,便于排查问题。

  (3)如何重写toString()?

  toString()方法重写代码样例如下: 

class Person {
String name;
String sex;
int age; public Person() {
} public Person(String name, String sex, int age) {
this.name = name;
this.sex = sex;
this.age = age;
}

@Override
public String toString() {
return "Person [name=" + name + ", sex=" + sex + ", age=" + age + "]";
} }

  编程习惯:开发者要对自定义的类重写toString(),对对象做详细的说明。

java重写toString()方法的更多相关文章

  1. java重写toString方法

    在输出对象属性时,重写toString按照你希望的输出形式重写 object类里的toString只是把字符串的直接打印,数字的要转化成字符再打印,而对象,则直接打印该对象的hash码.所以当你要想按 ...

  2. Effective Java 第三版——12. 始终重写 toString 方法

    Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将 ...

  3. java 中重写toString()方法

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

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

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

  5. 【java基础】为什么重写toString()方法?

    不得不说,有很多java初学者写java实体类的时候,并没有真正理解重写toString() 方法,可能是口头知道也可能是跟风随带添加toString() 方法,并没有真正理解其意义,如果真要被问起来 ...

  6. java继承 、方法重写、重写toString方法

    1.Java的继承,关键词Extends package cn.mwf.oo; public class TextExtends { public static void main(String[] ...

  7. 在java中为啥要重写toString 方法?

    在java中为啥要重写toString 方法?下面以一个简单的例子来说明. 先定义一个test5类.并写它的get,set方法. package test5; public class Test5 { ...

  8. 由Java中toString()方法引发的无意识的递归想到的

    先看一段很简单的java代码: toString()/** * @author jeffwong */ public class InfiniteRecursion { public String t ...

  9. Java重写toString和泛型的使用

    一.在一个类中重写toString方法 public class Person { private String name; private int age; public Person() { } ...

随机推荐

  1. IFIX 5.9 历史数据 曲线 (非SQL模式)

    装完 ifix 5.9 默认是没有Hist 开头的 历史数据源的,没存,至少我装的版本是这样. 那个Historian 也没有安装包,好像还要授权,自己研究不了. 1 先把数据存本地 在你的安装包里 ...

  2. Leetcode(11)-盛最多水的容器

    给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) .画 n 条垂直线,使得垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0).找出其中的两条线,使得 ...

  3. TensorFlow+restore读取模型

    # 注意和前一或二篇Lenet训练并验证的文章从`y_conv = tf.nn.softmax(fc2)`起的不同 # 部分函数请参照前后2篇文章 import tensorflow as tf im ...

  4. Androidstudio 新GradlePlugin和Gradle Version对应关系

    Project Gradle AS建议升级到4.2. Plugin对应AS的版本,Plugin工具也要和Gradle对应上,否则某些语法不支持,如果是非必要的建议不要轻易升级. Gradle DSL ...

  5. js map & Number

    js map & Number const regionIds = `1,2,3`; // "1,2,3" regionIds.split(',').map(Number) ...

  6. 一个汉字在php中占几个字节?

    问:一个汉字在php中占几个字节? 答: 对于中文字符,若使用 GBK.Big-5 版本,每个中文字符相当于 2 个字节: 若使用 UTF-8 版本,每个中文字符相当于 3 个字节.

  7. ESLint & husky & git commit limit

    ESLint & husky & git commit limit 2 == error .eslintrc { "extends": "eslint-c ...

  8. Tumult Hype

    Tumult Hype hype generated script https://tumult.com/hype/documentation/ HTML5 animation editor http ...

  9. React Hooks vs React Class vs React Function All In One

    React Hooks vs React Class vs React Function All In One React Component Types React Hooks Component ...

  10. WebIDE All In One

    WebIDE All In One web IDE Visual Studio Code vscode Code editing Redefined. Free. Built on open sour ...