A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 小鲁哥哥 于 2016-8-11 14:14 编辑

【济南中心】JAVA编程阶梯:基础篇之第四章

循环结构
循环语句顾名思义就是当满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复把循环判断执行这个循环体时,需要在合适的时条件修改为false,从而结束循环,否则循环将一直执行下去,形成死循环。
循环结构的分类
一般我们将循环结构分为三种: for循环,while循环,以及do...while()循环
现在我们分别讲解。

for循环:
格式
  1. for(初始化表达式;条件表达式;循环后的操作表达式) {
  2.             循环体;
  3.         }
复制代码
执行流程
a:执行初始化语句
b:执行判断条件语句,看其返回值是true还是false
         如果是true,就继续执行
        如果是false,就结束循环
c:执行循环体语句;
d:执行循环后的操作表达式
e:回到B继续。
举个栗子
  1. /**
  2. *打印数字0-99
  3. **/
  4. class Demo
  5. {
  6.        public static void main(String[] args){
  7.            for(int x = 0; x < 100; x++){
  8.                  System.out.println("x="+x );
  9.            }
  10.       }
  11. }
复制代码
注意事项
a:判断条件语句无论简单还是复杂结果是boolean类型。
b:循环体语句如果是一条语句,大括号可以省略;如果是多条语句,大括号不能省略。建议永远不要省略。
c:一般来说:有左大括号就没有分号,有分号就没有左大括号

while循环:
格式
  1. while循环的基本格式:
  2.   while(判断条件语句) {
  3.   循环体语句;
  4.   }
  5. 完整格式:
  6. 初始化语句;
  7.   while(判断条件语句) {
  8.   循环体语句;
  9.   控制条件语句;
  10. }
复制代码
执行流程
a:执行初始化语句z
b:执行判断条件语句,看其返回值是true还是false
       如果是true,就继续执行
       如果是false,就结束循环
c:执行循环体语句;
d:执行控制条件语句
e:回到B继续。
举个栗子

  1. /**
  2. * 求1-10的和
  3. */
  4. public class Demo {
  5. public static void main(String[] args) {
  6.                 int x = 0, sum = 0;
  7.                 while (x < 11) {
  8.                         sum += x;
  9.                         x++;
  10.                 }
  11.                 System.out.println(sum);
  12.         }
  13. }
复制代码

do...while循环格式
  1.      do {
  2.             循环体语句;
  3.         }while(判断条件语句);
  4.         
  5.           完整格式;
  6.           初始化语句;
  7.      do {
  8.            循环体语句;
  9.            控制条件语句;
  10.         }while(判断条件语句);
复制代码
执行流程
     a:执行初始化语句
     b:执行循环体语句;
     c:执行控制条件语句
     d:执行判断条件语句,看其返回值是true还是false
        如果是true,就继续执行
         如果是false,就结束循环
     e:回到b继续。

举个栗子
  1. /**
  2. * 打印1-10;
  3. */
  4. class Demo {
  5.         public static void main(String[] args) {
  6.                 int x = 1;
  7.                 do {
  8.                         System.out.println("x=" + x);
  9.                         x++;
  10.                 } while (x <= 10);
  11.         }
  12. }
复制代码
循环结构三种循环语句的区别
三种循环语句其实都可以完成一样的功能,也就是说可以等价转换,但还是有小区别的:
do…while循环至少会执行一次循环体。
for循环和while循环只有在条件成立的时候才会去执行循环体
注意事项:
写程序优先考虑for循环,再考虑while循环,最后考虑do…while循环。
如下代码是死循环

  1. while(true){}
  2. for(;;){}
复制代码
for循环和while循环的区别for循环语句和while循环语句可以等价转换,但还是有些小区别的
使用区别:
控制条件语句所控制的那个变量,在for循环结束后,就不能再被访问到了,而while循环结束还可以继续使用,如果你想继续使用,就用while,否则推荐使用for。原因是for循环结束,该变量就从内存中消失,能够提高内存的使用效率。
场景区别:
for循环适合针对一个范围判断进行操作
while循环适合判断次数不明确操作

循环嵌套
循环嵌套,顾名思义就是循环嵌套循环直接举两个小栗子让大家理解一下
栗子一:

  1. /**
  2.     输出如下图形:
  3.          *
  4.          **
  5.          ***
  6.          ****
  7.          *****
  8. */
  9. class Demo
  10. {
  11.        public static void main(String[] args){
  12.             for(int x = 1; x <= 5; x++){
  13.                   for(int y = 1; y <= x; y++){
  14.                       System.out.print("*" );
  15.                   }
  16.                   System.out.println();
  17.             }
  18.       }
  19. }
复制代码
栗子二:
  1. /**
  2. * 需求:打印出99乘法表
  3. **/
  4. class Demo {
  5.         public static void main(String[] args) {
  6.                 for (int x = 1; x <= 9; x++) {
  7.                         for (int y = 1; y <= x; y++) {
  8.                                 System.out.print(y + "*" + x + "=" + (x * y) + "\t");
  9.                         }
  10.                         System.out.println();
  11.                 }
  12.         }
  13. }
复制代码
那如果我们想在某个循环到某一步的时候就结束该怎么办呢?Java就提供了break,continue和return来实现循环语句的跳转和中断。
break
    使用场景:只能在switch和循环中,既可以跳出单层循环又可以跳出多层循环
continue
    使用场景 : 只能在循环中,只能退出本次循环
return
return关键字不是为了跳转出循环体,更常用的功能是结束一个方法,也就是退出一个方法。跳转到上层调用的方法


方法概述和格式说明
使用方法的好处
      提高代码的复用性
什么是方法
      完成特定功能的代码块。
格式

  1. 修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2...) {
  2.             方法体语句;
  3.             return 返回值;
  4.         }
复制代码
格式说明
    修饰符:public protected private  static
    返回值类型:就是功能结果的数据类型。
    方法名:符合命名规则即可。方便我们的调用。
    参数:
         实际参数:就是实际参与运算的。
         形式参数;就是方法定义上的,用于接收实际参数的。
     参数类型:就是参数的数据类型
     参数名:就是变量名
     方法体语句:就是完成功能的代码。
     return:结束方法的。
     返回值:就是功能的结果,由return带给调用者。


写方法之前我们明确返回值类型和参数列表
例如:
  1. /**
  2.          *
  3.          **
  4.          ***
  5.          ....
  6.          打印N行星星
  7. */
  8. class Demo {
  9.         public static void main(String[] args) {
  10.                 printStart(6);
  11.         }

  12.         private static void printStart(int b) {
  13.                 for (int x = 1; x <= b; x++) {
  14.                         for (int y = 1; y <= x; y++) {
  15.                                 System.out.print("*");
  16.                         }
  17.                         System.out.println();
  18.                 }
  19.         }
  20. }
复制代码

方法的注意事项
    a:方法不调用不执行
    b:方法与方法是平级关系,不能嵌套定义
    c:方法定义的时候参数之间用逗号隔开
    d:方法调用的时候不用在传递数据类型
    e:如果方法有明确的返回值,一定要有return带回一个值


方法重载概述和基本使用
方法重载概述
    在同一个类中,方法名相同,参数列表不同。与返回值类型无关。
    参数列表不同:
        A:参数个数不同
        B:参数类型不同
        C:参数的顺序不同(算重载,但是在开发中不用)
比较两个数据是否相等。
案例:

  1. /**
  2. *
  3. * 重载方法演示
  4. */
  5. class Demo {
  6.         public static void main(String[] args) {
  7.                 print(1);
  8.                 print(1, 2);
  9.                 print("1", "2");
  10.         }

  11.         public static void print(int a) {
  12.                 System.out.println("a=" + a);
  13.         }

  14.         public static void print(int a, int b) {
  15.                 System.out.println("(a+b)=" + (a + b));
  16.         }

  17.         public static void print(String a, String b) {
  18.                 System.out.println("(a+b)=" + (a + b));
  19.         }
  20. }
复制代码



评分

参与人数 1技术分 +10 黑马币 +10 收起 理由
济南王昭珽 + 10 + 10 很给力!

查看全部评分

42 个回复

正序浏览
滑动验证
回复 使用道具 举报
挺棒
回复 使用道具 举报
键盘敲烂,月薪过万
回复 使用道具 举报
1111111111111111111111111
回复 使用道具 举报
键盘敲烂,月薪过万
回复 使用道具 举报
键盘敲烂,月薪过万
回复 使用道具 举报
whcll 中级黑马 2016-7-26 08:22:56
37#
大家一起敲代码
回复 使用道具 举报
好好努力
回复 使用道具 举报
HPC 中级黑马 2016-7-26 00:54:01
35#
键盘敲烂,月薪过万,兄弟们加油
回复 使用道具 举报
好好敲代码吧
回复 使用道具 举报
键盘敲烂,月薪过万!冲啊
回复 使用道具 举报
月薪过万就在眼前,同志们冲啊
回复 使用道具 举报
好好加油,好好敲代码
回复 使用道具 举报
好,加油
回复 使用道具 举报
使用循环结构时,要注意System.out.println();d的位子,不然输出结果和实际结果会有误的
回复 使用道具 举报
挺好的 加油 帮帮哒
回复 使用道具 举报
加油,我来啦
回复 使用道具 举报
济南,我来了
回复 使用道具 举报
挺好的 加油  帮帮哒
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 加入黑马