循环结构
● while循环
● do...while循环
● for循环
● 在Java5中引入了一种主要作用于数组的增强型for循环
while循环
● while是最基本的循环,它的结构为:
while(布尔表达式){
//循环内容
}
● 只要布尔表达式为true,循环就会一直下去。
● 我们大多数情况是会让循环停止下来的,我们需要一个让表达式失效的方式来结束循环
● 少部分情况需要循环一直执行,比如服务器的请求响应监听
● 循环条件一直为true就会造成无限循环(死循环),我们正常的业务中应该尽量避免死循环,死循环会影响程序性能或者造成程序卡死崩溃
public static void main(String[] args) {
int i = 0;
int sum = 0;
while(i<=100) {
sum = sum + i;
i++;
}
System.out.println(sum);
}
do...while循环
● do-while循环,先执行一次,然后在判断,如果条件成立,在循环执行,如果不成立,继续往下执行
● 语法:
do{
statement(s)
}while(expression);
//布尔表达式在循环体的后面,所以语句块在检测布尔表达式之前已经执行了。如果布尔表达式的值为 true,则语句块一直执行,直到布尔表达式的值为 false
● 与while区别 while循环语句只有循环条件满足时,才执行循环体;不满足,则跳过循环体!do while 循环语句至少执行一次循环,实例如下:
public static void main(String[] args){
int i = 1;
do{
System.out.println(i);
i++;
}
while(i<30); //do-while循环,先执行一次,然后在判断,如果条件成立,在循环执行,如果不成立,继续往下执行
}
For循环
● 虽然所有循环结构都可以用while或者do...while表示,但Java提供了另一种语句——for循环,使一些循环变得更加简单
● for循环语句是支持迭代的一种通用结构,是最有效,最灵活的循环结构
● for循环语句的次数是在执行前就确定的,语法格式如下:
for(初始化,布尔表达式,更新){
// 代码语句
}
练习1:0~100所有奇数,偶数之和
public static void main(String[] args) {
int oddSum = 0;
int evenSum = 0;
for (int i = 0;i <= 100; i++) {
if (i%2!=0) {//奇数
oddSum+=i;//oddSum = oddSum + i;
}else {//偶数
evenSum+=i;
}
}
System.out.println("奇数和为:"+oddSum);
System.out.println("偶数和为:"+evenSum);
}
练习2:使用while或for循环输出1~1000之间能被5整除的数,并且每行输出3个
public static void main(String[] args) {
for (int i = 0; i <= 1000; i++) {
if (i%5==0) {
System.out.print(i+"\t");
}
if (i%(5*3)==0) {
System.out.println();
}
}
//println 输出完会换行
//print 输出完不会换行
}
练习3:打印九九乘法表
public static void main(String[] args) {
//1.我们先打印第一列
//2.我们把固定的1用循环包起来
//3.去掉重复项,i<j
//4.调整样式
for (int j = 1; j <= 9; j++) {
for (int i = 1; i <= j; i++) {
System.out.print(i+"*"+j+"="+j*i+"\t");
}
System.out.println();
}
}
增强for循环
● Java5引入了一种主要用于数组或集合的增强型for循环
● Java增强for循环语法格式如下
for(声明语句:表达式)
{
//代码句子
}
● 声明语句:声明新的局部变量,该变量的类型必须和数据元素的类型匹配。其作用域限定在循环语句块,其值与此事数组元素的值相等
● 表达式:表达式是要访问的数组名,或者是返回值为数组的方法
public static void main(String[] arge) {
int[] numbers = {10,20,30,40,50};
for(int x:numbers) {
System.out.println(x);
}
}
break continue
● break在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环,不执行循环中剩余的语句。(break语句也在switch语句中使用)
● continue语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。
public class Demo05 {
// continue:用在循环中,基于条件控制,跳过某次循环体内容的执行,继续下一次的执行
// break:用在循环中,基于条件控制,终止循环体内容的执行,也就是说结束当前的整个循环
public static void main(String[] args) {
for (int i = 1; i <= 5; i++){
if (i%2==0){
continue;
//break;
}
System.out.println(i);
}
}
● 关于goto关键字
● goto关键字很早就在程序设计语言中出现。尽管goto仍是Java的一个保留字,但并未在语言中得到正式使用;Java没有goto。然而,在break和continue这两个关键字的身上,我们仍然能看出一些goto的影子---带标签的break和continue.
● “标签”是指后面跟一个冒号的标识符,例如: label:
● 对Java来说唯一用到标签的地方是在循环语句之前。而在循环之前设置标签的唯一理由是:我们希望在其中嵌套另一个循环,由于break和continue关键字通常只中断当前循环,但若随同标签使用,它们就会中断到存在标签的地方。