黑马程序员技术交流社区

标题: 【济南中心】JAVA编程阶梯:基础篇之第四章 [打印本页]

作者: 小鲁哥哥    时间: 2016-7-24 18:10
标题: 【济南中心】JAVA编程阶梯:基础篇之第四章
本帖最后由 小鲁哥哥 于 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. }
复制代码




作者: 济南王昭珽    时间: 2016-7-24 23:11
好贴
作者: 橘子哥    时间: 2016-7-25 10:36
好贴必须顶!!!
作者: huang01    时间: 2016-7-25 12:21
支持好贴。。
作者: bhc702178    时间: 2016-7-25 12:32
已经学过了,复习复习,温故知新
作者: 骚动的石头    时间: 2016-7-25 12:58
挺全的,看了之后又有了点收获
作者: 雷雨天    时间: 2016-7-25 13:37
深度好贴
作者: deathline    时间: 2016-7-25 13:41
好帖,好帖
作者: 昭阳    时间: 2016-7-25 14:11
棒棒嗲,又学到循环结构了
作者: ゛Babyゝ    时间: 2016-7-25 14:51
总结的很好,顶
作者: coco2016    时间: 2016-7-25 16:22
顶上去啊...
作者: SutMaceZo    时间: 2016-7-25 17:14
正在自学中。。
作者: 李铮    时间: 2016-7-25 19:49
赞一个 不错
作者: haochengjian    时间: 2016-7-25 21:23
赞赞赞赞赞赞赞
作者: WatingU    时间: 2016-7-25 22:00
正在自学中。。
作者: tukang00    时间: 2016-7-25 22:26
赞一个 不错
作者: xpf0121    时间: 2016-7-25 22:28
不错,很详细,新手多指教
作者: lijiazhi    时间: 2016-7-25 22:29
这个绕得很
作者: 麦子守望星空    时间: 2016-7-25 22:30
加油!!!!!!
作者: zhu21925    时间: 2016-7-25 22:38
一言不合敲代码
作者: lynch123    时间: 2016-7-25 22:40
键盘还是新的!
作者: zhu21925    时间: 2016-7-25 22:42
又涨姿势了
作者: 敲代码小蚂蚁    时间: 2016-7-25 22:56
赞一个赞一个
作者: jjw642961416    时间: 2016-7-25 22:57
键盘敲烂,月薪过万
作者: WatingU    时间: 2016-7-25 23:04
挺好的 加油  帮帮哒
作者: chenxe    时间: 2016-7-25 23:09
济南,我来了
作者: houzhiming    时间: 2016-7-25 23:12
加油,我来啦
作者: Bingo8888    时间: 2016-7-25 23:18
挺好的 加油 帮帮哒
作者: 小b,试试就试试    时间: 2016-7-25 23:21
使用循环结构时,要注意System.out.println();d的位子,不然输出结果和实际结果会有误的
作者: 紫电_恶魔    时间: 2016-7-25 23:23
好,加油
作者: 18363802316    时间: 2016-7-25 23:57
好好加油,好好敲代码
作者: lijiazhi    时间: 2016-7-26 00:08
月薪过万就在眼前,同志们冲啊
作者: 发现一只程序猿    时间: 2016-7-26 00:09
键盘敲烂,月薪过万!冲啊
作者: java627    时间: 2016-7-26 00:18
好好敲代码吧
作者: HPC    时间: 2016-7-26 00:54
键盘敲烂,月薪过万,兄弟们加油
作者: zhangjiesss    时间: 2016-7-26 06:54
好好努力
作者: whcll    时间: 2016-7-26 08:22
大家一起敲代码
作者: huang01    时间: 2016-7-26 09:48
键盘敲烂,月薪过万
作者: 敲代码小蚂蚁    时间: 2016-7-26 09:51
键盘敲烂,月薪过万
作者: 新晋猿工    时间: 2016-7-26 10:56
1111111111111111111111111
作者: 天天图蓝    时间: 2016-7-26 11:08
键盘敲烂,月薪过万
作者: 小沫    时间: 2016-7-29 11:54
挺棒
作者: justime    时间: 2017-5-18 08:48
滑动验证




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2