在开发环境中,我们常会有许多具有规律性的重复指令需要计算机去操作。因此就需要使用到循环。
循环是由反复被执行的循环体语句和循环终止条件共同组成。

for 循环

for 语句属于前测试循环语句,它具有在执行循环前初始化变量和定义循环后要执行的代码的能力。
语法:

  1. for(表达式1 表达式2 表达式3){
  2. 循环体;
  3. }

for 循环分为3步:

  1. 初始化(initialize):确定循环的初始值,只在循环开始时执行一次
  2. 测试(test):检查循环条件,为 true 就进入循环体
  3. 递增(increment):完成后续操作返回上一步,再次检查循环条件

  4. 遇到 for 关键字,首先执行表达式 1

  5. 再判定表达式 2 是否为 true,为真进入下一步,为假退出循环
  6. 执行循环体语句
  7. 执行表达式3,然后回到 2 进行下一次是否循环的判断

while 循环

while 也是前测试语句。也就是说在循环体内的代码被执行前就会对出口条件求值。因此循环体内的代码就有可能永远不会被执行。
语法:

  1. while(条件表达式){
  2. 循环语句块;
  3. }

do while 循环

do while 语句是一种后测试循环语句,即在循环体执行后才会测试出口条件。换句话说先是执行一次循环体再进行条件的判断,如果成立就再次执行循环体,否则就退出。do while 至少会执行一次。
语法:

  1. do{
  2. 循环语句块;
  3. }while(条件表达式);

三种循环的比对

  1. for循环适用于明确知道循环的次数
  2. while循环适用于不知道循环的具体次数,只知道达到某个条件的时候循环结束
  3. do-while循环适用于不知道循环的具体次数但至少要执行一次,只知道达到某个条件的时候循环结束

打断循环

breakcontinue 关键字用于在循环中精确地控制代码的执行,break 用于立即跳出整个循环。continue 结束本次循环,循环没有跳出,进入下一次循环。

break

在循环结构中,用break语句跳出本层循环体,从而提前结束本层循环。

  1. for (int i = 0; i < 10; i++) {
  2. if (i == 3) {
  3. break;
  4. }
  5. System.out.println(i); // 0 1 2
  6. }

continue

continue是结束本次循环(即跳过本次循环中余下尚未执行的语句),接着再一次进行循环条件的判定。

  1. for (int i = 0; i < 10; i++) {
  2. if (i == 3) {
  3. continue;
  4. }
  5. System.out.println(i); // 0 1 2 4 5 6 7 8 9
  6. }

对比 break 和 continue

  1. for (int i = 0; i < 5; i++) {
  2. if (i == 3) {
  3. break;
  4. }
  5. System.out.println(i); // 0 1 2
  6. }
  7. for (int i = 0; i < 5; i++) {
  8. if (i == 3) {
  9. countinue;
  10. }
  11. System.out.println(i); // 0 1 2 4
  12. }

循环的嵌套

双重循环也就是循环内再套循环。每当外层循环执行1次,内层循环执行1圈。
语法:

  1. 外层循环{
  2. 内层循环{}
  3. }

分析输出:

  1. for (int i = 1; i <= 3; i++) {
  2. System.out.println("i:" + i);
  3. for (int j = 1; j <= 5; j++) {
  4. System.out.println("j:" + j);
  5. }
  6. }
  7. /*
  8. i:1 j:12345
  9. i:2 j:12345
  10. ...
  11. */

在嵌套循环中需要注意的点:

  1. 几重循环看的是循环嵌套的层级,而不是循环的个数;
  2. 在语法上循环嵌套的层次是可以无限的,但是在现实开发当中,最多达到三重循环;嵌套层次过多会导致程序流程控制力度下降,算法可读性降低;
  3. 嵌套循环的关键,在于搞清楚循环执行的顺序。外层循环执行1次,内层循环执行1圈;
    内层循环可以访问外层循环的循环控制变量;
    外层循环不能访问内层循环的循环控制变量;
  4. 循环控制变量命名,最外层的用i,第二层用j,第三层用k,依次类推,这是“约定俗成”的规范; 同层循环可以使用同名的循环控制变量;
  5. break 和 continue,只能对本层循环起作用

    等号与equals()

    在进行数据量的比较时,只有基本数据类型才能使用 “ == ” 比较值是否相等。引用数据类型 String 要用 字符串.equals(另一个字符串);来进行比较。 ```java // 使用字符比较是相等 String str = “男”; char cha = ‘男’; System.out.println(str == “男”); // true System.out.println(cha == ‘男’); // true

// 如果是获取的输入 System.out.println(“请输入:”); String ipt = scan.next(); if (ipt == “男”) { System.out.println(“输入的是男”); } else{ System.out.println(“啥也不是”); // 无法进 if }

// 改为 equals() System.out.println(“请输入:”); String ipt = scan.next(); if (ipt.equals(“男”)) { System.out.println(“输入的是男”); // 可以被成功判断 } else { System.out.println(“啥也不是”); }

  1. <a name="QgcMT"></a>
  2. # GUI
  3. Java 在 javax.swing 包自带了 GUI(graph user interface) 图形开发的 API,使用 `JOPtionPane` 类弹窗,可以替代 Scanner 接收用户信息。
  4. - 消息框:`showMessageDialog()` 替代 System.out.printLn() `JOptionPane.showMessageDialog(null, "显示文字")`
  5. - 输入框:替代 Scanner `JOptionPane.showInputDialog(null, "提示内容");`
  6. - 确认框:`JOptionPane.showConfirmDialog(null,"确认的消息");` 返回值是 int 值,取消 2 否 1 确认 0
  7. ![1.png](https://cdn.nlark.com/yuque/0/2022/png/1454005/1650793545276-c5a064fc-c580-4ac2-b528-a0a5ac3c942c.png#clientId=u33b6687a-8ed6-4&crop=0&crop=0&crop=1&crop=1&from=ui&id=u2dd9a8bd&margin=%5Bobject%20Object%5D&name=1.png&originHeight=334&originWidth=524&originalType=binary&ratio=1&rotation=0&showTitle=false&size=32794&status=done&style=none&taskId=u28a89615-dc9a-490c-b00b-d2794e02167&title=)<br />![2.png](https://cdn.nlark.com/yuque/0/2022/png/1454005/1650793566900-dd36a09a-7434-4ba7-912b-b2a6ccdd8231.png#clientId=u33b6687a-8ed6-4&crop=0&crop=0&crop=1&crop=1&from=ui&height=225&id=u84d11276&margin=%5Bobject%20Object%5D&name=2.png&originHeight=334&originWidth=778&originalType=binary&ratio=1&rotation=0&showTitle=false&size=38646&status=done&style=none&taskId=u509450ad-820b-4aa7-92cb-7deca519e17&title=&width=524)<br />![3.png](https://cdn.nlark.com/yuque/0/2022/png/1454005/1650793596869-b9c0a42e-3c16-414f-9722-9be568570650.png#clientId=u33b6687a-8ed6-4&crop=0&crop=0&crop=1&crop=1&from=ui&height=305&id=u1bdbdd49&margin=%5Bobject%20Object%5D&name=3.png&originHeight=334&originWidth=574&originalType=binary&ratio=1&rotation=0&showTitle=false&size=39450&status=done&style=none&taskId=u1c29067d-59da-41a2-89c1-3b9afcf5e4b&title=&width=524)
  8. <a name="IfDYl"></a>
  9. # 字符串和基本数据类型之间的转换
  10. 1. 基本数据类型转字符串 -- 基本数据类型 + “”
  11. 1. 字符串转基本数据类型。首先保证字符串里的内容是一个正确的可以被转换的数据
  12. ```java
  13. String str = "123";
  14. // 字符串 -> int
  15. int num = Integer.parseInt(str);
  16. // 字符串 -> double
  17. double weight = Double.parseDouble(str);