📅  最后修改于: 2020-02-12 15:07:25             🧑  作者: Mango
编程语言中的循环是一项功能,可在某些条件评估为真时,重复执行一组指令/功能。
Java提供了三种执行循环的方式。尽管所有方式都提供相似的基本功能,但是它们的语法和条件检查时间有所不同。
while(布尔条件)
{
循环语句...
}
流程图:
// Java程序,展示while循环的使用
class whileLoopDemo
{
public static void main(String args[])
{
int x = 1;
// x大于4,跳出
while (x <= 4)
{
System.out.println("x的值:" + x);
// 每次循环,累加x的值
x++;
}
}
}
输出:
x的值:1
x的值:2
x的值:3
x的值:4
for循环: for循环提供了一种简洁的编写循环结构的方法。与while循环不同,for语句在一行中表达了初始化、条件和增量/减量,从而提供了更短,更易于调试的循环结构。
语法:
for (initialization condition; testing condition;
increment/decrement)
{
statement(s)
}
流程图:
// Java代码,展示for循环的例子
class forLoopDemo
{
public static void main(String args[])
{
// for循环在x=2开始,在x>4结束
for (int x = 2; x <= 4; x++)
System.out.println("x的值:" + x);
}
}
输出:
x的值:2
x的值:3
x的值4
增强的For循环
Java还包括Java 5中引入的for循环的另一个版本。增强的for循环提供了一种更简单的方法来遍历集合或数组的元素。它是不灵活的,仅在需要以顺序方式遍历元素而又不知道当前已处理元素的索引时才应使用。
还要注意,使用增强的for循环时,对象/变量是不可变的,即,它确保数组中的值不能被修改,因此可以说是只读循环,其中您不能像其他循环那样更新值可以修改值的循环。
我们建议尽可能使用此形式的for语句,而不要使用一般形式。
语法:
for (T element:Collection obj/array)
{
statement(s)
}
让我们以一个例子来演示如何使用增强的for循环来简化工作。假设有一个名称的数组,我们想打印该数组中的所有名称。让我们看一下这两个示例的区别:
Enhanced for loop简化了工作,如下所示:
// Java展示增强for循环
public class enhancedforloop
{
public static void main(String args[])
{
String array[] = {"Ron", "琳琳", "东东"};
// 增强for循环
for (String x:array)
{
System.out.println(x);
}
/* 传统for循环写法
for (int i = 0; i < array.length; i++)
{
System.out.println(array[i]);
}
*/
}
}
输出:
Ron
琳琳
东东
do while: do while循环与while循环相似,只是执行语句后检查条件,因此是 Exit Control Loop的一个示例。
语法:
do
{
statements..
}
while (condition);
流程图:
// Java展示do-while循环示例
class dowhileloopDemo
{
public static void main(String args[])
{
int x = 21;
do
{
// 这行将被打印,即使条件是false
System.out.println("x的值:" + x);
x++;
}
while (x < 20);
}
}
输出:
x的值: 21
循环陷阱
//Java展示循环的弊端.
public class LooppitfallsDemo
{
public static void main(String[] args)
{
// 这会创造一个无限循环
for (int i = 5; i != 0; i -= 2)
{
System.out.println(i);
}
int x = 5;
// 这也会创造一个无限循环.
while (x == 5)
{
System.out.println("在循环内");
}
}
}
// Java因循环导致的内存不足
import java.util.ArrayList;
public class Integer1
{
public static void main(String[] args)
{
ArrayList ar = new ArrayList<>();
for (int i = 0; i < Integer.MAX_VALUE; i++)
{
ar.add(i);
}
}
}
输出:
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at Java.util.Arrays.copyOf(Unknown Source)
at Java.util.Arrays.copyOf(Unknown Source)
at Java.util.ArrayList.grow(Unknown Source)
at Java.util.ArrayList.ensureCapacityInternal(Unknown Source)
at Java.util.ArrayList.add(Unknown Source)
at article.Integer1.main(Integer1.Java:9)