来自黑马程序员论坛的一个题目,考察java语言for循环的初始化表达式
public class ForTest {
public static void main(String[] args) {
String[] books = { "《Java就业培训教程》", "《深入体验JAVA Web 开发内幕--高级特性》","《Java邮件开发详解》 " };
//代码1
for(int i = 0;i<books.length;i++);
{
System.out.println("第i个元素的值:" + books[i]);
}
//代码2
int i =0;
for(;i<books.length;i++);
{
System.out.println("第i个元素的值:" + books[i]);
}
//代码3
for(int[] intArr = {5,6,-10};int i = 0;i<intArr.length;i++) {
System.out.println("intArr数组的元素为:"+intArr[i]);
}
//代码4
for(int i = 0,String name = "abc";i<books.length;i++)
{
System.out.println("第i个元素的值:" + books[i]+name);
}
}
}
main方法内 开始先定义了名为books的字符串数组, 每一个代码分开来说 其他加注释
代码1:看起来像普通的for循环写法 但是for()后面有; 而for()语句里的初始化变量int i=0;的作用域只在for循环里面
所以这句代码块 System.out.println("第i个元素的值:" + books[i]); 会报错 提示i变量未定义
代码2:这句是将初始化变量语句int i = 0;写在for循环外面.但for()后还是有;
所以下面的代码块输出for()循环后i的值3,虽然for循环没有任何显示但循环判断都在运行,最后i值为3跳出for循环
提示越界异常.
代码3:这句for()括号内有三个; 出题的本意应该是定义一个int型数组intArr和int型i. 但写法错误
尝试写成for(int[] intArr = {5,6,-10},int i = 0;i<intArr.length;i++) //eclipse报以下错误
- Type mismatch: cannot convert from int[] to int
- Type mismatch: cannot convert from int to int[] 前两行 应该是java语法编译中类型向后传递导致的错误?或者初始化语句必须是同类型的
- The operator < is undefined for the argument type(s)
int[], int
代码4:和代码三同样的错误,初始化语句必须是同类型的