黑马程序员技术交流社区

标题: 看Arrays.toString()的源码实现时竟然大脑短路了 [打印本页]

作者: mnxnm    时间: 2015-6-2 11:14
标题: 看Arrays.toString()的源码实现时竟然大脑短路了
本帖最后由 mnxnm 于 2015-6-2 11:30 编辑

请看以下代码第12行代码处 if (i == iMax) ,每次循环都要判断一次,i == iMax,判断是否要添加"]"符号
这不是影响性能吗,如果直接每次 b.append(a+","),最后把","替换成"]"不就好了
不用每次都去判断是不是要结束了要添加"]"了
哈哈,其实,我想错了,因为i == iMax这一步其实就是for循环的终止条件,循环一次检验一次,
满足条件就 return b.append(']').toString()并结束循环,哈哈,
  1.     public static String toString(int[] a) {
  2.         if (a == null)
  3.             return "null";
  4.         int iMax = a.length - 1;
  5.         if (iMax == -1)
  6.             return "[]";

  7.         StringBuilder b = new StringBuilder();
  8.         b.append('[');
  9.         for (int i = 0; ; i++) {
  10.             b.append(a[i]);
  11.             if (i == iMax)
  12.                 return b.append(']').toString();
  13.             b.append(", ");
  14.         }
  15.     }
复制代码

作者: w490541    时间: 2015-6-2 21:48
顶顶顶顶顶顶顶顶顶
作者: Jfccnws    时间: 2015-6-9 00:08
的确是这样,看代码要仔细啊!return返回




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2