Sur*_*nga 4 java eclipse tostring
据我所知,当你有大量的String时,使用+符号的concatinate String不是一个好习惯.但是当我检查eclipse生成的toString()方法时(写点击源文件 - > Source - > Generate toString())它就一样了.
public class Temp
{
private String tempName;
private String tempValue;
// here getters and setters
/* (non-Javadoc)
* @see java.lang.Object#toString()
*/
@Override
public String toString() {
return "Temp [tempName=" + tempName + ", tempValue=" + tempValue + "]";
}
}
Run Code Online (Sandbox Code Playgroud)
是否有任何地方可以配置像我期望的toString()方法,如eclipse中的bellow或为什么eclipse不考虑这一点.
public String expectedToString(){
StringBuffer sb = new StringBuffer();
sb.append("Temp [tempName=").append(tempName).append(",").append(" tempValue=").append(tempValue).append("]");
return sb.toString();
}
Run Code Online (Sandbox Code Playgroud)
我将使用自动生成的toString()方法来记录我的对象值.
请建议我.
无需更改任何内容,它紧凑且易于阅读,javac将使用StringBuilder进行实际连接,如果您反编译您的Temp.class,您将看到
public String toString() {
return (new StringBuilder("Temp [tempName=")).append(tempName).append(", tempValue=").append(tempValue).append("]").toString();
}
Run Code Online (Sandbox Code Playgroud)
但在其他情况下,比如
String[] a = { "1", "2", "3" };
String str = "";
for (String s : a) {
str += s;
}
Run Code Online (Sandbox Code Playgroud)
+或者+=是真正的性能杀手,请参阅反编译代码
String str = "";
for(int i = 0; i < j; i++) {
String s = args1[i];
str = (new StringBuilder(String.valueOf(str))).append(s).toString();
}
Run Code Online (Sandbox Code Playgroud)
在每次迭代中,创建一个新的StringBuilder,然后转换为String.在这里你应该明确地使用StringBuilder
StringBuilder sb = new StringBuilder();
for (String s : a) {
sb.append(s);
}
String str = sb.toString();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3458 次 |
| 最近记录: |