目录
一、循环语句
1.三种循环语句
作为程序的核心,循环语句在编程中是非常重要的控制结构,主要用于重复执行一段特定的代码。与C语言体系一致,在java中,循环语句也有三种,如下:
- for循环
for (初始化表达式; 循环条件; 更新表达式) {
循环体;
}
- while循环
while (循环条件) {
循环体;
}
- do-while循环
do {
循环体;
} while (循环条件);
其中的for循环是应用最广泛的,在大部分情况下可以代替while循环和do-while循环,下面主要介绍for循环的用法。
2.for循环
2.1for基本循环
for基本循环的语法以及应用与C语言中几乎没有什么差异,基本格式如下:
for (初始化表达式; 循环条件; 更新表达式) {
循环体;
}
例如:打印所有的水仙花数(注:水仙花数是指一个三位数,其个位、十位、百位上的数字的立方和 = 其本身)
int baiNumber,shiNumber,geNumber;
for(int i = 100;i<1000;i++) {
baiNumber = i / 100; //得到该三位数的百位数字
shiNumber = i / 10 % 10; //得到该三位数的十位数字
geNumber = i % 10; //得到该三位数的个位数字
if(baiNumber * baiNumber * baiNumber + shiNumber * shiNumber * shiNumber + geNumber * geNumber * geNumber == i) {
System.out.println("" + i + "是水仙花数");
} // of if
} // of for i
输出结果为:
2.2for - each循环
除了上面的for基本循环以外,JDK1.5还提供了一种增强的for循环,也叫做for - each循环。for - each循环可以更简洁地遍历数组或集合中的元素,它比for基本循环更易使用,不需要我们增加值,也不需要我们使用下标表示法。
for - each循环的基本格式如下:
for(声明语句:表达式){
循环体;
}
- 声明语句:即声明新的局部变量,主要包括循环变量类型、循环变量名称,要求该局部变量的类型必须与数组元素的类型一致。
- 表达式:即要被遍历的对象,一般是指要访问的数组名,也可以是返回值为数组的方法。
以遍历数组为例,首先我们使用for的基本循环语句,如下:
int[] numbers = {1, 2, 3, 4, 5};
for (int i = 0; i < numbers.length; i++) {
System.out.println(numbers[i]);
}
输出结果为:
接着,我们再利用增强型for循环进行输出,如下:
int[] numbers = {1, 2, 3, 4, 5};
for (int number : numbers) {
System.out.println(number);
}
输出结果为:
可以看出,增强for循环无需使用循环变量i就实现遍历。事实上,这是因为增强for循环内部有一个Iterator迭代器,使得其会自动遍历数组中的每个元素,然后将当前元素的值赋给我们定义的变量number,因此不用我们手动进行索引。
二、ForStatement.java
程序代码:
package basic;
/**
* This is the sixth code. Names and comments should follow my style strictly.
*
* @author Xin Lin 3101540094@qq.com.
*/
public class ForStatement {
/**
*********************
* The entrance of the program.
*
* @param args Not used now.
*********************
*/
public static void main(String args[]) {
forStatementTest();
}// Of main
/**
*********************
* Method unit test.
*********************
*/
public static void forStatementTest() {
int tempN = 10;
System.out.println("1 add to " + tempN + " is: " + addToN(tempN));
tempN = 0;
System.out.println("1 add to " + tempN + " is: " + addToN(tempN));
int tempStepLength = 1;
tempN = 10;
System.out.println("1 add to " + tempN + " with step length " + tempStepLength + " is: "
+ addToNWithStepLength(tempN, tempStepLength));
tempStepLength = 2;
System.out.println("1 add to " + tempN + " with step length " + tempStepLength + " is: "
+ addToNWithStepLength(tempN, tempStepLength));
}// Of forStatementTest
/**
*********************
* Add from 1 to N.
*
* @param paraN The given upper bound.
* @return The sum.
*********************
*/
public static int addToN(int paraN) {
int resultSum = 0;
for (int i = 1; i <= paraN; i++) {
resultSum += i;
} // Of for i
return resultSum;
}// Of addToN
/**
*********************
* Add from 1 to N with a step length.
*
* @param paraN The given upper bound.
* @param paraStepLength The given step length.
* @return The sum.
*********************
*/
public static int addToNWithStepLength(int paraN, int paraStepLength) {
int resultSum = 0;
for (int i = 1; i <= paraN; i += paraStepLength) {
resultSum += i;
} // Of for i
return resultSum;
}// Of addToNWithStepLength
}// Of class ForStatement
运行结果:
从运行结果可以看到,1到0进行求和最后得到是0,这是因为for语句是一种在程序执行前就要先判断循环条件是否成立的循环结构,如果循环条件不成立,那么就根本不会进入循环。这里的循环条件是i <= paraN,其中i = 1,paraN = 0,显然循环条件并不成立,所以循环语句不会被执行,函数的返回值为resultSum的初始值0。
总结
(1)面对大量、重复的代码,循环语句可以帮助我们更简洁地实现需要重复执行的操作,并且循环语句也是程序的核心,算法的时间复杂度一般根据循环语句来计算。
(2)而在java的三种循环结构中,for循环是使用最广泛的,它比while循环、do-while循环多了初始化部分和迭代更新部分,其结构更为简洁,能够在一行内完成循环控制的全部部分。
(3)增强for循环主要用于遍历数组或集合,其优点是简洁直观、易读性强,可以避免索引操作,但不能用来修改数组或集合中的元素。
(4)虽然增强for循环看起来更加简单,但是如果需要对数组或集合中的元素进行操作,仍然需要使用传统的for基本循环,所以我们不能一概而论,需要根据实际进行选择。