循环结构:
相同的事情执行多次,就是循环结构;
while循环:
while循环是最基本的循环,它的结构为:
while(布尔表达式){ //循环内容 } //1,只要布尔表达式为true,循环就会一直执行下去 //2,我们大多数情况是让循环停止下来的,我们需要一个让表达式失效的方式来结束循环 //3,少部分情况需要循环一直执行,比如服务器的请求响应监听等 //4,循环条件一直为true就会造成死循环,我们正常的业务编程中应该尽量避免死循环,会影响程序性能 //5,思考:1+2+3....+100=?
代码案例:
public class WhileDemo01 { public static void main(String[] args) { //输出1-100 int i=0; while (i<100){ i++; System.out.println(i); } } }
代码案例2:重点
public class WhileDemo03 { public static void main(String[] args) { //计算:1+2+3+...+100 int i=0; int sum=0; while (i<=100){ sum=sum+i; i++;//一定要记得改变布尔表达式的值,使循环停止 } System.out.println(sum);//5050 } }
do..while循环:
对于while语句而言,如果不满足条件,则不能进入循环;但有的时候我们需要即使不满足条件,也至少执行一次;
do..while循环和while循环相似,不同的是,do..while循环至少会执行一次;
do{ //代码语句 }while(布尔表达式);
while和do..while的区别:
while先判断后执行,do while是先执行后判断;
do while总是保证循环体至少执行一次,这是他们的主要区别;
代码案例:
public class DoWhileDemo01 { public static void main(String[] args) { //计算1+2+3....+100 int i=0; int sum=0; do{ //循环体 sum=sum+i; i++;//改变布尔值,让循环停下来; }while (i<=100); System.out.println(sum); } }
代码:while和do..while的区别
public class DoWhileDemo02 { public static void main(String[] args) { //对比while和do while int a=0; while (a>0){ System.out.println(a); } System.out.println("===============");//分割线 do{ System.out.println(a); }while (a>0); } }
for循环:
虽然所有循环结构都可以用while或者do while表示,但是Java提供了另一种语句:for 循环;使得循环结构更加简单;
for循环语句是支持迭代的一种通用结构,是最有效,最灵活的循环结构;
for循环执行的次数是在执行前就确定的;
//语法: for(初始化;布尔表达式;更新){ //循环代码块 }
注意:
public class ForDemo01 { public static void main(String[] args) { int a=1;//初始化条件 while(a<=100){//条件判断 //循环体 System.out.println(a); a+=2;//迭代 } System.out.println("呵呵呵呵"); //初始化条件//条件判断//迭代 for(int i=1;i<=100;i++){ System.out.println(i); } System.out.println("for循环结束"); //IDEA快捷键:100.for 回车 for (int i = 0; i < 100; i++) { } /** * 关于for循环,有以下几点说明: * * 最先执行初始化步骤,可以声明一种类型,但可初始化一个或多个循环控制变量,也可以是空 语句 * 然后,检测布尔表达式的值,如果为true,循环体被执行,如果为false,循环终止,开始执 行循环体后面的语句 * 执行一次循环后,更新循环控制变量(迭代因子控制循环变量的增减) * 再次检测布尔表达式,循环执行上面的过程 */ //死循环的写法 for (; ; ) { } } }
代码例子:计算0到100之间的奇数和偶数的和
public class ForDemo02 { public static void main(String[] args) { //0-100之间的奇数和偶数 int oddSum=0; int evenSum=0; for (int i = 0; i <= 100; i++) { if(i%2!=0){//模运算,不等于0,就是奇数 evenSum+=i;//注意+=的学习 }else{ oddSum+=i; } } System.out.println("奇数和:"+evenSum); System.out.println("偶数和:"+oddSum); } }
代码例子:用while或for循环输出1-1000之间能被5整除的数,并且每行输出3个
public class ForDemo03 { public static void main(String[] args) { //用while或for循环输出1-1000之间能被5整除的数,并且每行输出3个 //while循环 int i=1; int j=0;//计数用的变量 while(i<1000){ if(i%5==0){//能被5整除 if(j<3){ // System.out.print(i+" "); System.out.print(i+" \t");// \t转义字符 j++; }else{ System.out.println();//不打印,只是为了换行 j=0; } } i++; } //for循环实现:k,k1 for (int k = 1,k1=0; k <= 1000; k++) { if(k%5==0){ if(k1<3){ System.out.print(k+" "); k1++; }else { System.out.println(); k1=0;//切记,换行后,要改变条件变量;//同时学会DEBUG调试 } } } System.out.println("程序结束"); //优化代码:\t 制表符 \n换行 %模运算 for (int i1 = 1; i1 <= 1000; i1++) { //模运算 if(i1%5==0){ System.out.print(i1+"\t"); } if(i1%(5*3)==0){//换行:每行3个,最大就是i1*3 System.out.print("\n"); } } } }
代码例子:打印九九乘法表:
public class ForDemo04 { public static void main(String[] args) { //打印九九乘法表 /** * 思路: * 1,先画出来大概模型: * 第一行:1*1=1 * 第二行:2*1=2 2*2=4 * 第三行:3*1=3 3*2=6 3*3=9 * * 2,按行打印:2个变量:所有要定义2个变量:i控制行,j控制列 * 3,行再变,列也再变,所有需要循环嵌套 */ for (int i = 1; i < 10; i++) { for(int j=1;j<=i;j++){ //打印 System.out.print(i+"*"+j+"="+i*j+"\t");//怎么换行 if(j==i){ //换行 System.out.print("\n"); } } } } }
在Java5中引入了一种主要用于数组的增强型for循环:
主要是用来遍历数组和对象的;
Java5引入了一种主要用于数组或集合的增强型for循环;
//语法 for(声明语句:表达式){ //循环代码块; }
声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配,其作用域限定在循环代码块,其值与此时数组元素的值相等;
表达式:表达式是要访问的数组名,或者是返回值为数组的方法;
代码例子:
public class ForDemo06 { public static void main(String[] args) { //增强型For循环:主要用于遍历数组或对象 int[] numbers={10,20,30,40};//定义了一个数组 for(int i=0;i<4;i++){ System.out.println(numbers[i]); } System.out.println("----------------------"); //遍历数组的元素 for(int x:numbers){ System.out.println(x); } } }