public static String toString(long[] a) {
if (a == null)
return "null";
int iMax = a.length - 1;
if (iMax == -1)
return "[]";
StringBuilder b = new StringBuilder();
b.append('[');
for (int i = 0; ; i++) {
b.append(a[i]);
if (i == iMax)
return b.append(']').toString();
b.append(", ");
}
}
for循环有点奇怪,中间的那个表辑ּ是空的。其实即使加上了条gQfor (int i = 0; i<=iMax ; i++) 和源E序是一个效果的Q纯_Ҏ多余的,但是我就是多余地加上了这条,l果~译出错了!提示我没有返回语句!
我又重新~写了两个小E序来验证一下:
下面q个能通过~译Q?br />
class Test{
static String m(){
int a =10;
for (int i = 0; ; i++)
if(i==a)
return "10";
}
public static void main (String[] args) {
System.out.println (m());
}
}
for循环的中间语句是I的?br />
下面q个׃能编译了Q?br />
class Test{
static String m(){
int a =10;
for (int i = 0; i<=a ; i++)
if(i==a)
return "10";
}
public static void main (String[] args) {
System.out.println (m());
}
}
其实加上的语句ƈ没有改变原来逻辑l构。这是ؓ什么呢Q?br />
如果在for的外面加上一个return语句Q随便返回什么字W串Q又能通过~译了!Q!q个字符串永q不能输出的Q!Q根本就是个摆设Q!Q?br />
class Test{
static String m(){
int a =10;
for (int i = 0; i<=a ; i++)
if(i==a)
return "10";
return "never be touch!!!";
}
public static void main (String[] args) {
System.out.println (m());
}
}
另外如果像下面这样在for的中间表辑ּ加上一个恒{式Q又能通过~译了!Q!q是Z么呢Q请高手指点Q?br />
class Test{
static String m(){
int a =10;
for (int i = 0; true==true ; i++)
if(i==a)
return "10";
}
public static void main (String[] args) {
System.out.println (m());
}
}
附:q是JDK1.5的源码,谢谢GrayWolf!
1.6的代码到底比1.5的改q在哪里呢?我觉?.5版的实现比较清晰Q可L好一炏V?br />
# public static String toString(long[] a) {
# if (a == null)
# return "null";
# if (a.length == 0)
# return "[]";
#
# StringBuilder buf = new StringBuilder();
# buf.append('[');
# buf.append(a[0]);
#
# for (int i = 1; i < a.length; i++) {
# buf.append(", ");
# buf.append(a[i]);
# }
#
# buf.append("]");
# return buf.toString();
# }

]]>