视频学习地址
前言
相应的语句需要执行多次,那么循环结构就诞生了,在Java5中引入了一种主要用于数组的增强型for循环。
while循环
- 只要布尔值为true,循环就会一直执行下去
- 大多数情况是会让循环停止下来的,需要一个让表达式失效的方式来结束循环
- 少部分情况需要循环一直执行,比如服务器的请求响应监听
- 循环条件一直为true就会造成无限死循环,正常的业务编程中应该要避免死循环,会影响程序性能或者造成程序卡死崩溃
do…while循环
对于while语句而言,如果不满足条件,则不会循环,但有时候我们需要即使不满足条件,也至少要执行一次,这个时候do…while就诞生了。
while和do…while的区别
- while先判断后执行,do…while先执行后判断
- do…while总是保证循环体会被至少执行一次,这是它们的主要差别
for循环
虽然所有的循环结构都可以用while和do…while表示,但Java提供了另一种语句,for循环,使一些循环结构变得更加简单,它是一种支持迭代的通用结构,是最有效、最灵活的循环结构。
计算0到100的奇数和偶数的和
public class Demo {
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;
}else {
evensum+=i;
}
}
System.out.println("奇数:"+oddsum);
System.out.println("偶数:"+evensum);
}
}
用while或for循环输出1-1000之前被5整除的数,并每行输出3个
public class Demo {
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(); //System.out.print("/n"); 也可以
}
}
//pinrt 输出不会换行
//pinrtln 输出会换行
}
}
打印九九乘法表
public class Demo {
public static void main(String[] args) {
for (int i = 1; i <= 9; i++) { //1 2 3 4 5...
for (int i1 = 1; i1 <= i; i1++) { //1 1 2 1 2 3 1 2 3 4 1 2 3 4 5...
System.out.print(i1+"*"+i+"="+i*i1+"\t");
}
System.out.println();
}
}
}
增强for循环
public class Demo {
public static void main(String[] args) {
int[] numbers = {10,20,30,40,50}; //定义一个数组 注意:数组的序数是从0开始的
for (int i = 0; i < 5; i++) {
System.out.println(numbers[i]);
}
for (int x:numbers){ //与上面是一样的
System.out.println(x);
}
}
}
break
break在任何循环语句的主题部分,均可用break控制循环的流程,break用于强行退出循环,不执行循环中剩余的语句(break语句也在switch语句中使用)
public class Demo {
public static void main(String[] args) {
int i = 0;
while(i < 100){
i++;
System.out.println(i);
if (i == 30){ //到30就进行一个退出循环,但不会影响后续操作
break;
}
}
System.out.println(123); //这里会继续输出
}
}
continue
continue语句用在循环语句中,用于终止某次循环过程,即跳出循环中尚未执行的语句,接着进行下一次是否执行循环的判定。
public class Demo {
public static void main(String[] args) {
int i = 0;
while(i < 100){
i++;
if (i % 10 == 0){ //i除以10的余数等于0,都不执行,那么就是10,20....90都跳出这一次循环
System.out.println();
continue;
}
System.out.print(i);
}
}
}
关于goto关键字
goto关键字很早就在程序设计语言中出现,尽管goto任是Java的一个保留字,但并未在语言中得到正式适应,Java没有goto,然而,在break和continue这两个关键字的身上,我们任然可以看出一些goto的影子,带标签的break和continue,标签是只后面跟一个冒号的标识符,例如:label:,对Java来说唯一用到标签的地方是在循环语句之前,而在循环之前设置标签的唯一理由是:我们希望在其中嵌套另一个循环,由于break和continue关键字通常只中断当前循环,但若随同标签使用,他们就会中断存在标签的地方。
public class Demo {
//不建议使用
public static void main(String[] args) {
int count = 0;
outer:for (int i = 101; i < 150; i++) {
for (int j = 2; j < i/2; j++) {
if (i % j == 0){
continue outer;
}
}
System.out.println(i);
}
}
}