日撸Java三百行(day06:基本for语句)

目录

一、循环语句

1.三种循环语句

2.for循环

2.1for基本循环

2.2for - each循环

二、ForStatement.java

总结


一、循环语句

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基本循环,所以我们不能一概而论,需要根据实际进行选择。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值