tostring方法的作用通俗一点,tostring方法是干嘛的

  tostring方法的作用通俗一点,tostring方法是干嘛的

  Java toString方法是一个非常有用的方法,即使你可能不知道它,我相信你在你的程序中经常使用它。

  Java toString方法是一个非常有用的方法,即使您可能不知道它,我也可以肯定您在程序中使用了很多方法。

  Java toString方法(Java toString方法)

  让我们首先确定为什么我之前说你已经使用了一个字符串方法,即使你可能不知道它。是否同意使用系统。出去。println(对象);用于学习和调试?我在早期经常使用它,现在仍然用它来调试我的代码(生产前)。如果仔细观察,System.out是PrintStream的实例,它的转换对象为字符串方法实现如下。

  首先,让我们确定为什么我之前说过即使您可能不知道转换对象为字符串方法,也是如此。您是否同意使用系统。出去。println(对象);用于学习和调试目的?我在早期使用了很多东西,但仍然使用它来调试我的代码(生产前)。如果仔细观察,System.out是PrintStream实例,并且它的转换对象为字符串方法实现如下。

  public void println(Object x){ String s=String。(x)的值;已同步(这个){ printnewLine();}}和String.valueOf()的实现是这样的:

  而且String.valueOf()实现是这样的:

  (Object obj) { return (obj==null)的公共静态字符串值? null :obj。tostring();}所以最终println()和打印()函数调用对象的toString()方法来获取字符串表示,然后打印出来。所以下面两条语句将产生相同的结果。

  因此最终,println()和打印()函数调用对象的toString()方法来获取字符串表示形式,然后进行打印。因此,以下两个语句将产生相同的结果。

  系统。出去。println(对象。tostring());系统。出去。println(对象);既然我们同意它被大量使用,让我们开始更详细地探索转换对象为字符串方法。

  现在我们同意它已经被大量使用了,让我们开始更详细地研究转换对象为字符串方法。

  爪哇对象toString()方法(Java对象toString()方法)让我们看一个简单的程序,我们将创建一个爪哇对象并调用它的转换对象为字符串方法。

  让我们看一个简单的程序,在该程序中我们将创建一个爪哇对象并将其称为转换对象为字符串方法。

  包com。日志开发。字符串;public class Java tostring { public static void main(String[]args){ Data d=new Data(10, Java );系统。出去。println(d);} }类数据{私有int id私有字符串名称;Data(int a,String b){ this。id=a;这个。name=b;}}当我运行并编译这个程序时,得到的输出是com。日志开发。字符串。数据@ 7a 46 a697 .

  运行并编译该程序时,输出为com。日志开发。字符串。数据@ 7a 46 a697。

  现在出现了两个问题——首先是toString()方法在哪里实现,因为我在数据类中没有看到它?其次,这个几乎没有任何有意义信息的输出是什么。

  现在出现两个问题首先是toString()方法在哪里实现,因为我在数据类中看不到它?其次是几乎没有任何有意义的信息的输出。

  我们知道爪哇岛支持继承,而目标位于这个层次结构的顶层,也就是转换对象为字符串方法实现的地方。如果你看看对象类转换对象为字符串的实现,它是这样的:

  我们知道爪哇支持继承,并且目标在此层次结构的顶层,即转换对象为字符串方法的实现位置。如果查看目标类的转换对象为字符串实现,则如下所示:

  公共字符串toString() { return getClass().getName() @ 整数。tohexstring(hashCode());}现在很清楚为什么输出是带有@的类名,然后是一些十六进制数字。

  现在很清楚为什么输出的类名带有@,然后是一个十六进制数。

  Java toString()方法要点(Java toString()方法要点)我们现在来看看对象toString()方法javadoc,看看它说了什么。

  现在让我们看一下Object toString()方法javadoc,看看它说了什么。

  Java toString方法返回对象的字符串表示Java toString方法返回对象的字符串表示形式结果应该是一个简洁但信息丰富的表示,易于阅读。

  结果应该是简洁易懂的表示形式,便于人们阅读建议所有子类都重写此方法。

  建议所有子类都重写此方法。

  基于上面的建议,我们应该总是覆盖toString()方法来返回关于对象的有用信息。因此,让我们更改我们的数据类实现,并覆盖它的转换对象为字符串方法。

  基于以上建议,我们几乎应该始终重写toString()方法以返回有关该对象的有用信息。因此,让我们更改数据类的实现,并覆盖它的转换对象为字符串方法。

  包com。日志开发。字符串;public class Java tostring { public static void main(String[]args){ Data d=new Data(10, Java );系统。出去。println(d);} }类数据{私有int id私有字符串名称;Data(int a,String b){ this。id=a;这个。name=b;} public int getId(){ return id;} public String getName(){ return name;}/** *返回具有编号和名称的数据字符串*将来实现可以更改,不依赖于将对象转换为JSON */@ override public String toString(){ return“{ id : id , name : name } ;}}现在,当您运行上面的程序时,输出将是{id:10, name:Java} .这对于任何关注输出的人来说都更有意义。

  现在,当您运行上述程序时,输出将为{id:10, name:Java}。现在,这对于查看输出的任何人都更有意义。

  重写toString()方法的要点(重写toString()方法的要点)让我们看看在重写toString()方法时应该考虑的一些要点。

  让我们看看重写toString()方法时应考虑的一些重要点。

  始终使用@覆盖注释,以避免由于输入错误而导致任何错误或不需要的结果。始终将@覆盖注释与其一起使用,以避免由于错别字而引起的任何错误或不良结果确保在toString()方法中只返回有用的数据,你的波乔类可能有一些敏感信息,如电子邮件身份证,SSN号码等。您应该屏蔽它们或完全避免它们,否则它们会在生产服务器日志中打印出来,并导致安全和数据隐私问题。

  确保仅在toString()方法中返回有用的数据,您的波乔类可能包含一些敏感信息,例如电子邮件身份证,SSN编号等。您应该屏蔽它们或完全避免使用它们,否则它们将被打印在生产服务器日志和导致安全和数据隐私问题提供一些关于toString()方法输出的文档总是一个好主意。例如,有人不应该使用我的toString()实现将目标转换为数据字符串。这就是为什么我明确地补充说实现在未来可以改变。

  提供一些有关toString()方法输出的文档始终是一个好主意。例如,某人不应使用我的toString()实现将对象转换为数据字符串。这就是为什么我明确添加了实现可以在将来更改的原因您应该始终为属于toString()方法输出字符串的对象属性提供吸气剂方法。否则,程序员将被迫解析toString()输出来获得所需的数据,因为没有其他选择。

  您应该始终为对象属性提供吸气剂方法,这些对象属性是toString()方法输出字符串的一部分。否则,由于没有其他选择,程序员将被迫解析toString()输出以获得所需的数据提供toString()方法的实现总是最好的,即使你可能认为这不是必需的。想想下面的代码,有人正在打印一个数据对象列表. list数据列表=new ArrayList();list.add(新数据(10,‘Java’));list.add(新数据(20,‘Python’));系统。出去。println(列表);

  你更喜欢哪种输出?

  Without toString() implementation:

  With toString() implementation:

  [{id:10, name:Java},{id:20, name:Python}]始终最好提供toString()方法的实现,即使您可能认为它不是必需的。考虑下面的代码,其中有人在打印数据对象列表。

  您需要哪种输出?

  没有toString()实现:

  【com。日志开发。字符串。数据@ 7a 46 a697,com。日志开发。字符串。数据@ 5f 205 aa]使用toString()实现:

  以上是对java toString()方法的简要概括。

  这就是对java toString()方法的简短总结。

  参考:API文件

  参考:API文档

  翻译自:https://www . journal dev . com/18578/Java-tostring-method

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: