您现在的位置是:主页 > 博文 > 福利专区 > 编程那点事 >

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

2020-03-02 收藏 推荐 文章来源:生活作者:二狗

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

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

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

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


  1.  
    package com.zout.toString;
  2.  
    public class Test {
  3.  
    public static void main(String[] args){
  4.  
    Object zt = new Object();
  5.  
    System.out.println(zt.toString());
  6.  
    }
  7.  
    }
输出结果:java.lang.Object@7852e922  

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


  1.  
    package demoTest_zt;
  2.  
    /**
  3.  
    *@class_name:toStringTest
  4.  
    *@param: java实体类重写tostring方法的测试
  5.  
    *@return:
  6.  
    *@author:Zoutao
  7.  
    *@createtime:2017年9月11日
  8.  
    */
  9.  
    public class toStringTest {
  10.  
     
  11.  
    private String name;
  12.  
    private String sex;
  13.  
    private int No;
  14.  
     
  15.  
    public void Show(){
  16.  
    System.out.println("这是没有tostring重写实体类的时候!");
  17.  
    }
  18.  
    public String getName() {
  19.  
    return name;
  20.  
    }
  21.  
    public void setName(String name) {
  22.  
    this.name = name;
  23.  
    }
  24.  
    public String getSex() {
  25.  
    return sex;
  26.  
    }
  27.  
    public void setSex(String sex) {
  28.  
    this.sex = sex;
  29.  
    }
  30.  
    public int getNo() {
  31.  
    return No;
  32.  
    }
  33.  
    public void setNo(int no) {
  34.  
    this.No = no;
  35.  
    }
  36.  
    }

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


  1.  
    package demoTest_zt;
  2.  
    /**
  3.  
    *@class_name:toStringTest
  4.  
    *@param: java实体类重写tostring方法的测试调用
  5.  
    *@return:
  6.  
    *@author:Zoutao
  7.  
    *@createtime:2017年9月11日
  8.  
    */
  9.  
    public class Ceks_tostring {
  10.  
    public static void main(String[] args) {
  11.  
    Class<?> demo= null;
  12.  
    try {
  13.  
    //包-类路径 demo=Class.forName("demoTest_zt.Ceks_tostring");
  14.  
    } catch (ClassNotFoundException e) {
  15.  
    e.printStackTrace();
  16.  
    }
  17.  
    toStringTest test= new toStringTest();
  18.  
    test.setName("zout");
  19.  
    test.setNo(001);
  20.  
    test.setSex("man");
  21.  
    test.Show();
  22.  
    System.out.println("调用实体类返回的是:" +test);
  23.  
    }
  24.  
    }

运行结果:


  1.  
    这是没有tostring重写实体类的时候!
  2.  
    调用实体类返回的是:demoTest_zt.toStringTest@15db9742
  •  

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

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


  1.  
    //重写tostring方法
  2.  
    @Override
  3.  
    public String toString() {
  4.  
    return "toStringTest [name=" + name + ", sex=" + sex + ", No=" + No + "]";
  5.  
    }

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


  1.  
    这是有tostring重写实体类的时候!
  2.  
    调用实体类返回的是:toStringTest [name=zout, sex=man, No=1]

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

pojo类中的toString方法什么时候加什么时候可以不加,他的作用是什么?


toString()源自老祖宗Object类,重写并不是必须的,需要根据当前程序的实际情况而定。
譬如一个JavaBean插入数据库时需要打印一段该JavaBean内容的日志,这时在JavaBean里重写toString()就显得很优美了。

个人认为主要作用是:接收的参数类型为什么类型,根据返回参数来看,是否需要加toString

toString()是把别的类型的数据转换为字符串类型

在打印的时候会调用toString方法,可以按照你想要的结果输出.


 

维护站点不易,如果您觉得文章对你有帮助。

赞赏激励下吧,谢谢支持! ~(@^_^@)~!

赞赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,一分一毛不嫌少

打开支付宝扫一扫,即可进行扫码打赏哦

学的不仅是技术,更是梦想!!!



本站系原创文章其中有部分转载,转载目的在于传递更多信息, 并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本网联系, 我们将在第一时间删除内容![声明]本站文章版权归原作者所有 内容为作者个人观点 本站只提供参考并不构成任何投资及应用建议。本站拥有对此声明的最终解释权。
 

Tags:toString()方法、

顶一下
(0)
0%
踩一下
(0)
0%

相关文章

发表评论

评论列表(条)

    猜你喜欢