java实体类为什么要写.toString()方法

java实体类为什么要写.toString()方法

转载自:https://blog.csdn.net/itbiggod/article/details/79290332

java实体类重写.toString()方法

前言 笔者在做javaweb项目时候,使用SSM+maven+easyui,然后在写java实体类的时候,发现大家都要写tostring方法,那么为什么java实体类都要写.toString()方法?于是顺便在这里记录一下。

了解 在Java中每个类都默认继承Object类,除非声明继承于某个类。 而toString 方法来自于Object 类,作用是: 返回一个字符串,是该Java对象的内存地址经过哈希算法得出的int类型的值在转换成十六进制。。 换句话说,该方法返回一个字符串,它的值大概就是等于: getClass().getName()+’@’+Integer.toHexString(hashCode()) 这是一个内存地址经过哈希算法得出的int类型的值在转换成十六进制的东西。等同的看作Java对象在堆中的内存地址。 例如:

package com.zout.toString;

public class Test {

public static void main(String[] args){

Object zt = new Object();

System.out.println(zt.toString());

}

}

输出结果:java.lang.Object@7852e922

这是直接使用tostring的时候返回的东西。 3. 实验 那么在定义一个实体类后,不写tostring,返回的结果又会是什么呢? 新建toStringTest.java:

package demoTest_zt;

/**

*@class_name:toStringTest

*@param: java实体类重写tostring方法的测试

*@return:

*@author:Zoutao

*@createtime:2017年9月11日

*/

public class toStringTest {

private String name;

private String sex;

private int No;

public void Show(){

System.out.println("这是没有tostring重写实体类的时候!");

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getSex() {

return sex;

}

public void setSex(String sex) {

this.sex = sex;

}

public int getNo() {

return No;

}

public void setNo(int no) {

this.No = no;

}

}

再写一个Ceks_tostring.java主函数调用:

package demoTest_zt;

/**

*@class_name:toStringTest

*@param: java实体类重写tostring方法的测试调用

*@return:

*@author:Zoutao

*@createtime:2017年9月11日

*/

public class Ceks_tostring {

public static void main(String[] args) {

Class demo= null;

try {

//包-类路径 demo=Class.forName("demoTest_zt.Ceks_tostring");

} catch (ClassNotFoundException e) {

e.printStackTrace();

}

toStringTest test= new toStringTest();

test.setName("zout");

test.setNo(001);

test.setSex("man");

test.Show();

System.out.println("调用实体类返回的是:" +test);

}

}

运行结果:

这是没有tostring重写实体类的时候!

调用实体类返回的是:demoTest_zt.toStringTest@15db9742

很显然这要是在项目开发的时候,不应该是一串看不懂的数字,而应该是符合逻辑的东西;

接下来测试带有tostring方法的时候,Object中的toString方法就要被重写。 在toStringTest.java的最底下添加toString方法:

//重写tostring方法

@Override

public String toString() {

return "toStringTest [name=" + name + ", sex=" + sex + ", No=" + No + "]";

}

然后在运行主函数测试: 输出结果:

这是有tostring重写实体类的时候!

调用实体类返回的是:toStringTest [name=zout, sex=man, No=1]

返回的就是我们正常的业务代码。这也就是为什么我们在写java实体类的时候,往往要返回的是对象和值,所以习惯性都要加一个tostring方法的原因; 4. 总结 重写toString,object类里的toString只是把字符串的直接打印,数字的要转化成字符再打印,而对象,则直接打印该对象的hash码。 如果在类中没有重写ToString方法,默认使用的是Object的toString方法输出格式。这个时候,对象就会直接显示hash码。 如果在类中重写toString方法,那么输出格式就会按照我们定义的方式输出这个对象,因此可以这样理解: 重写toString是对对象在打印输出时候的一种格式化。这样做符合业务逻辑,显示结果人性化。 当你print一个对象是你需要这个对象在打印时展现的是什么形态你就把toString重写成你需要的返回形态。

你可能也喜欢

总有一款你爱的:iOS 最佳拼图应用合辑
365bet线上攻略

总有一款你爱的:iOS 最佳拼图应用合辑

📅 08-01 👀 215
2023年最新手机号段一览表,你还不知道吗?
亚洲365bet体育

2023年最新手机号段一览表,你还不知道吗?

📅 07-13 👀 2763
淘宝店铺违规记录多久会消除
亚洲365bet体育

淘宝店铺违规记录多久会消除

📅 08-31 👀 844
BRTV和BTV是一个台吗?
365bet线上攻略

BRTV和BTV是一个台吗?

📅 08-27 👀 3231
部落冲突添加好友的正确步骤是什么?
s365国网公司健步走app

部落冲突添加好友的正确步骤是什么?

📅 08-20 👀 7086
免费P图软件哪个好用,2025热门推荐!
亚洲365bet体育

免费P图软件哪个好用,2025热门推荐!

📅 07-05 👀 7418