Java中啥时候需要显示重载toString方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中啥时候需要显示重载toString方法相关的知识,希望对你有一定的参考价值。

为什么有的社会需要重载toString();有的时候不用啊。请解答一下

参考技术A 从本质讲,只有一种情况需要重载toString:
“需要序列化(成字符串)的时候”
这一种情况表现出多种外在现象
比如
1、狭义方面,需要把对象打印显示字符串,打印过程就是对输出流的序列化。
2、需要传递给java库的各种字符接口的时候。
3、自定义的类,需要以显示成比较特殊形式的字符串。
4、等等等等
toString不是序列化的唯一方式,但用到toString就只是为了序列化成字符串
掌握序列化的技巧是关键。
=========
楼上有人说那么多,其实只是属于第1条一种表面情况。

js中啥时候需要“var”? [复制]

【中文标题】js中啥时候需要“var”? [复制]【英文标题】:When is "var" needed in js? [duplicate]js中什么时候需要“var”? [复制] 【发布时间】:2011-10-16 10:07:04 【问题描述】:

可能重复:Difference between using var and not using var in JavaScript

有时,我看到有人这样做

for(var i=0; i< array.length; i++)
 //bababa


但我也看到有人这样做......

for(i=0; i< array.length; i++)
 //bababa


两者有什么不同?谢谢你。

【问题讨论】:

【参考方案1】:

从技术上讲,您永远不必使用它,javascript 会愉快地进行 - 使用您的变量,即使您没有提前声明它们。

但是,实际上,在声明变量时应该始终使用它。它将使您的代码更具可读性并帮助您避免混淆,尤其是当您使用具有相同名称和不同范围的变量时...

var n = 23;
function functThat( )

   var n = 32; // "local" scope

【讨论】:

想解释否决票? 我没有投反对票,但我的猜测是因为这些陈述都是错误的。您真的不希望全局变量弹出并随机更改。是的,弗吉尼亚,Javascript 真的很烂。但是为了帮助减轻您在任何地方使用 var 以减少代码错误的情况。与可读性无关。 问题询问使用 var 和不使用 var 之间的区别是什么,但这个答案只是给出了何时使用它的建议,而没有解释实际的区别是什么。【参考方案2】:

var 关键字从不“需要”。但是,如果您不使用它,那么您声明的变量将在全局范围内公开(即作为window 对象的属性)。通常这不是你想要的。

通常您只希望您的变量在当前范围内可见,这就是 var 为您所做的。它仅在当前范围内声明变量(但请注意,在某些情况下,“当前范围”将与“全局范围”一致,在这种情况下,使用 var 和不使用 var 没有区别)。

在编写代码时,您应该更喜欢这种语法:

for(var i=0; i< array.length; i++)
    //bababa

或者如果你必须,那么像这样:

var i;
for(i=0; i< array.length; i++)
   //bababa

这样做:

for(i=0; i< array.length; i++)
   //bababa

...将在全局范围内创建一个名为i 的变量。如果其他人碰巧也在使用全局 i 变量,那么您只是覆盖了他们的变量。

【讨论】:

嗨,在您的示例中,您是否必须在其他地方注册全局变量 I 才能将其声明为全局范围,或者是否任何未使用 var 声明的内容都被 javascript 引擎隐式理解为全局变量? @Chin - 任何没有用var声明的东西都会被隐式理解为JavaScript中的全局变量,不需要特殊注册。 感谢@aroth 的好建议。将变量保存在本地也有助于我在 Google chrome 中调试时轻松浏览代码。

以上是关于Java中啥时候需要显示重载toString方法的主要内容,如果未能解决你的问题,请参考以下文章

方法“ToString”没有重载需要 1 个参数

格式化 DateTime 错误“方法 'ToString' 没有重载需要 1 个参数”

重载 toString 方法

如何重载单个变量的TOSTRING方法 C#中

重载tostring()方法重要性

在java程序中啥条件下要用import语句?啥时候不用?