📅  最后修改于: 2020-02-12 15:14:19             🧑  作者: Mango
先决条件:Java中的循环
for循环的基本结构:
for(initialization; boolean expression; update statement)
{
//内部语句
}
让我们看一下使用for循环的一些基本示例,以及使用for循环的常见陷阱
1,必须在for循环中提供表达式: For循环必须在循环语句中包含一个有效的表达式,否则将导致无限循环。该声明
for ( ; ; )
is similar to
while(true)
例子:
// Java程序展示无限循环
public class Example1
{
public static void main(String[] args)
{
for( ; ; )
{
System.out.println("这是一个无限循环");
}
}
}
输出:此代码重复打印语句“ 这是一个无限循环”。
2,初始化多个变量:在Java中,无论是否在循环中使用它,都可以在for循环的初始化块中初始化多个变量。
// Java展示在for的初始化模块中初始化多给变量
public class Example2
{
public static void main(String[] args)
{
int x = 2;
for(long y = 0, z = 4; x < 10 && y < 10; x++, y++)
{
System.out.println(y + " ");
}
System.out.println(x);
}
}
在上面的代码中,for循环有简单的变化,在初始化块中声明并初始化了两个变量。我们没有使用变量“ z”。另外,其他两个组件包含额外的变量。因此,可以看出,这些块可以包括可能互不引用的额外变量。
3,在初始化块中重新声明变量:假设初始化变量已经声明为整数。我们可以在for循环中与其他数据类型一起重新声明它吗?不行。请参见示例:
// Java代码,展示重新声明的例子
public class Example3
{
public static void main(String[] args)
{
// x是整数
int x = 0;
// 重新声明x是long类型
for(long y = 0, x = 1; x < 5; x++)
{
System.out.print(x + " ");
}
}
}
便衣报错:
Example3.Java:12: error: variable x is already defined in method main(String[])
for(long y = 0, x = 1; x < 5; x++)
在此,x已被初始化为零(作为整数),并在循环中使用数据类型long进行了重新声明,编译就报错了。
但是可以通过稍微修改代码来解决此问题。在这里,变量x和y以不同的方式声明。
// Java例子,重新声明变量
public class Example3
{
public static void main(String[] args)
{
// x是一个整数
int x = 0;
long y = 10;
for (y = 0, x = 1; x < 5; x++)
{
System.out.print(x + " ");
}
}
}
输出:
1 2 3 4
4,在初始化块中声明的变量必须具有相同的类型:当我们声明一个变量为
int x, y;
这两个变量是同一类型。for循环初始化块也是如此。
// Java程序展示初始化两个变量
public class Example4
{
public static void main(String[] args)
{
// 解注释如下将会报错
// int x;
// 重新声明x为long会报错
for (long y = 0, x = 1; x < 5; x++)
{
System.out.print(x + " ");
}
}
}
5,循环中的变量只能在以下位置访问:在初始化块中声明的变量只能在循环中访问。有关变量范围的更多信息,请参见此处
// Java展示循环中变量的范围
public class Example5
{
public static void main(String[] args)
{
// x和y的范围,只在for循环内部
for(int x = 0, y = 0; x < 3 && y < 3; x++, y++)
{
System.out.println(y + " ");
}
System.out.println(x);
}
}
错误
Example5.Java:13: error: cannot find symbol
System.out.println(x);
在上面的示例中,变量x在循环外部不可访问。语句‘System.out.println(x); ’会导致编译器错误。