Java StringBuilder问题
在我的应用程序中,我正在按以下方式准备用户日志列表:Java StringBuilder问题,java,string,Java,String,在我的应用程序中,我正在按以下方式准备用户日志列表: final StringBuilder _sb = new StringBuilder(); final String[] _ae = _d.getErrorsDetails(); for (int i=0; i<_ae.length; ++i) { _sb.append(_ae[i]); _sb.append(i == _ae.length-1 ? "" : s+s); }
final StringBuilder _sb = new StringBuilder();
final String[] _ae = _d.getErrorsDetails();
for (int i=0; i<_ae.length; ++i) {
_sb.append(_ae[i]);
_sb.append(i == _ae.length-1 ? "" : s+s);
}
final StringBuilder\u sb=new StringBuilder();
最后一个字符串[]_ae=_d.getErrorsDetails();
对于(int i=0;i如果s
是char
而不是String
,s+s
将执行整数加法(即添加字符的代码点值),而不是字符串串联。35是#的整数,35+35是70,看起来像ae[i]使用调试器,你会发现我已经尝试过了,但是在我调用35;sb.toString()之前,一切似乎都是正确的……只需添加\u sb.append(s+s);
(或者修复错误的任何东西)可能会更容易些在for循环之后。无需继续检查i===\ae.length-1
@并将条件反过来-如果在最后一个元素,则不要追加。@JiriTousek啊!那么,您仍然不需要该条件:只需转到循环中的\ae.length-1
,并将最后一个元素追加到外部。谢谢,现在我理解了。不,我仍然不需要我不确定。之前我对代码做了一点修改,创建了一个新的字符串变量,我把##放在它的末尾。然后我把这个字符串附加到sb,结果我也得到了#70对##。然后请发布一个说明。否则我们只能猜测你犯了错误的地方。没有ae[I]是一个与#不同的字符串文本值#