初识Java(四)(循环结构)(自己学习整理的资料)

目录

 

一:Java中的三大循环结构

1.循环的含义

二. for 循环

for循环案例

三.break和continue

1.break

break案例

2.continue 

continue案例

 3.break和continue区别

四.while循环

while循环案例

 for 和 while的区别

五.do - while 循环

六.练习题


 

一:Java中的三大循环结构

  • for 循环
  • while 循环
  • do - while 循环

1.循环的含义

  • 所谓循环就是在条件满足的情况下重复执行一段代码。

二. for 循环

  • for 循环的四大要素

  1. 循环变量赋初值。

  2. 循环条件。

  3. 改变变量的值。(ag:i++ ,i-- , i*=2 )

  • 语法

 for(循环变量赋初值;循环条件;循环变量增值){

循环语句;

}

ps:其中“循环语句;”就是循环体,可以是一个简单的语句,也可以是一个用“ { } ”括起来的复合语句。

例:

public class lian {
    public static void main(String[] args) {
    for (int i = 1;i <= 3;i++);
  }
    }
  • 流程图 

1e3cfd1596da47af8e47c3c53d533ccd.png

  • 执行机制
  1.  先执行循环变量赋初值语句。

  2. 再判断循环条件,若为假(值为0),则结束循环,转到 5 ;若其值为真(值非0),则执行循环体语句。

  3. 执行循环变量增值语句。

  4. 转回 2 继续执行。

  5. 循环结束,执行 for 语句的下一条语句。

for循环案例

  • 打印一百遍“清澈的爱只为中国!”。
public class lian {
    public static void main(String[] args) {
        for (int i = 1; i <= 100; i++) {
            System.out.println("第" + i + "次清澈的爱只为中国!");
        }
    }
}

ps:赋初值只执行一次(int i = 1)。

 b0869e579a89404590bf8ad5cf34cb83.png

练习题

  • (一)计算100以内的奇数和以及偶数和
public class lian {
    public static void main(String[] args) {
        int odd = 0;
        int even = 0;
        for (int i = 1; i <= 100; i++) {
            if (i % 2 == 0){//证明为偶数
                even +=i;//加到偶数和中
            }else {//证明为奇数
                odd +=i;//加到奇数和中
            }
        }
        System.out.println("奇数的和为:" + odd + "\n" + "偶数和为:" + even);
    }
}
  • (二) 求1x2+2x3+3x4······+100x101的和是多少?
public class lian {
    public static void main(String[] args) {
        int sum = 0;
        for (int i= 1;i <= 100;i++){
            //这个循环控制的是表达式的个数
            int temp = i*(i + 1);
            sum += temp;
        }
        System.out.println("总和为:" + sum);
    }
}

三.break和continue

1.break

  • break可以改变程序控制流(可跳出循环而执行循环后面的语句)。

  • break是强制跳出。(强制结束整个循环,让流程跳转到 for 循环右大括号之后)。

break案例

  • 输入一个数,判断其是不是素数。
  • 提示:素数是只能被1和它本身整除的数字

ag:2是最小的素数。

import java.util.Scanner;

public class lian {
    public static void main(String[] args) {
        System.out.println("请输入一个整数:");
        //接收一个数字
        Scanner input = new Scanner(System.in);
        int num = input.nextInt();
        //假设每一个数都是素数
        boolean flag = true;
        if(num == 1){
            flag = false;
        }
        for (int i = 2; i < num; i++) {
            //判断i是否能够被num整除
            if (num % i == 0) {
                //如果被num整除,那么就不是素数
                flag = false;
                break;
            }
        }
        if (flag == true) {
            System.out.println(num + "是素数");
        } else {
            System.out.println(num + "不是素数");
        }
    }
}

2.continue 

  • continue的作用是结束本次循环,下次循环会继续。不会结束整个循环。(跳过循环体中剩余的语句而执行下一次循环)

continue案例

  • 小明和朋友们玩一个“逢7必过”的小游戏。游戏规则是:大家围成一圈,从1开始报数,但逢7的倍数或者尾数是7,则不去报数,要喊“过”。试编一程序,模拟游戏1~50的报数。
public class lian {
    public static void main(String[] args) {
   for (int i = 1; i <= 50;i++){
       if (i % 7 == 0 || i % 10 == 7){
           System.out.println("过");
           continue;
       }
           System.out.println(i);
       }
   }
    }

练习题

  •  水仙花数是一个三位数,它等于自己各个数位上数字的立方和。(ag:153=1的3次方+5的3次方+3的3次方)
  • 编写一个程序,求出所有的水仙花数。
public class lian {
    public static void main(String[] args) {
  for (int i = 100;i <= 999;i++){
      //拆分数位
      int ge = i % 10;
      int shi = i / 10 % 10;
      int bai = i / 100;
      if (ge * ge * ge + shi * shi *shi + bai * bai *bai == i){
          System.out.println(i);
      }
  }
   }
    }

 3.break和continue区别

使用场合

  • break 常用于 switch 结构和循环结构中。

  • continue 一般用于循环结构中。

作用(循环结构中)

  • break 语句终止某个循环,程序跳转到循环块外的下一条语句。

  • continue 跳出本次循环,进入下一次循环。

四.while循环

  • 语法

while(循环条件){

循环操作

}

  • 特点:先判断,再执行
  • 含义

先计算循环条件的值,当循环条件的值为真(循环条件成立)时,去执行一次循环体。和 if 语句不同的是,执行完一次循环体后,while 语句又回到开始处,继续计算和判断表达式的真假,决定是否再次执行循环体。也就是“当表达式成立时,不断重复执行循环体”,所以又称为“当型循环”。

while循环案例

  • 编写一个程序,使用 while 循环在屏幕上输出1~100这几个数字。
public class lian {
    public static void main(String[] args) {
  int i = 1;
      while (i <= 100){
          System.out.println(i);
          i++;
      }
   }
    }

 练习

  • 求 6 + 12 + 18 + 24 +······+ 180的和是多少?
import java.util.Scanner;

public class lian {
    Scanner input = new Scanner(System.in);

    public static void main(String[] args) {
        int i = 6;
        int sum = 0;
        while (i <= 180) {
            sum += i;
            i += 6;
        }
        System.out.println("总和是:" + sum);
    }
}
  • 对于正整数n,m,求s=1+2+3·····+n,当加到第几项时,s的值会超过m?
import java.util.Scanner;

public class lian {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        int num = input.nextInt();
        int i = 1;
        int sum = 1;
        while (sum <= num) {
            i++;
         sum += i;
        }
        System.out.println(i);
    }
}

 for 和 while的区别

  • for 处理的场景是循环次数已经知道的情况,while 处理的是循环次数位置的情况。

  • for 循环小括号里面可以写三大要素:while 循环小括号中只有一个循环条件,注意:不要忘记在循环体中写i++改变变量的值,否则会造成死循环。

五.do - while 循环

  • 语法

do{

循环操作

}while(循环条件);

  • 特点:do - while循环至少会执行一次。
  • 流程图(ag:生活中考驾照的例子)

9277a249864f4ebbb6f6facd0660463e.png

 练习题

  • (一)拍手游戏
  • 小明每一秒拍手一次,小红每2秒拍手一次,小刚每4秒拍手一次。如果三人同时开始第一次拍手,且都只拍10次,那么我们能听到多少声掌声?

public class lian {
    public static void main(String[] args) {
   int ming,hong,gang;//三位同学的拍手次数
        ming = hong = gang = 1;//时间是第0秒的时候,每人都拍一次手
        int time = 0,num = 1;//num:我们听到的掌声次数
        boolean flag = false;//有没有人拍手
        do {
            flag = false;
            //时间在流动
            time++;
            if (ming < 10){//判断拍够10次了吗
                ming++;
                flag = true;
            }
            if (hong < 10 && time%2 == 0){
                hong++;
                flag = true;
            }
            if (gang < 10 && time % 4 == 0){
                gang++;
                flag = true;
            }
            if (flag == true){
                //证明有人拍手
                num++;
            }
        }while(ming + hong + gang < 30 );//一共最多30次掌声
        System.out.println(num);
    }
}
  •  (二)报数游戏

  • 小明和小红玩报数游戏,小明按照1~20进行循环报数,小红按照1~30进行循环报数。若两个人同时开始报数,并且以同样的速度报数,当两个人报了1000个数时,同时报相同数的次数是多少?

public class lian {
    public static void main(String[] args) {
   int ming = 0,hong = 0;
   int num = 0;//num:报的数字的个数
        int count = 0;//count:报相同数字的个数
        do {
            ming++;
            if (ming > 20) {
                ming = 1;
            }
            hong++;
            if (hong > 30) {
                hong = 1;
            }
            //如果报的数字相同
            if (ming == hong) {
                count++;
            }
            num++;
        }while (num < 1000);
        System.out.println(count);
    }
}

六.练习题

  • (一)有一根长15米的铁丝,有一根长18米的铁丝,要把它们截成同样长的小段,不许剩余,那么每段最长有几米?
public class lian {
    public static void main(String[] args) {
       //寻找两个数字的最大公约数 
  int num1 = 15;
  int num2 = 18;
  //辗转相除法
  int r = num1 % num2;
  while (r != 0){
      //继续相除
      num1 = num2;
num2 = r;
r = num1 % num2;
  }
        System.out.println(num2);
    }
}

ps:辗转相除法:用较大数除以较小数,再用出现的余数去除除数,如此反复,直到最后余数为0为止。此时的除数就是这两个数的最大公约数。所以在代码中不断的变更除数和被除数来取余。

 

<think>好的,用户想要获取Java基础知识点的总结。我需要先整理一下用户提供的引用内容,看看里面有没有相关的信息。 首先,引用[1]提到Java基础知识点总结的目录,包括简介、基础语法、面向对象、String、Integer、Object、异常、IO、序列化、泛型、注解、反射。看来这些都是基础部分的重要内容。用户可能希望了解这些方面的基本概念和关键点。 引用[2]更详细地列出了Java基础的结构,比如第一章的初识Java、常识知识、三大平台、基础语法、跨平台工作原理、JDK安装目录、注释、项目结构、关键字、基本数据类型和变量、常量、类型转换、运算符、流程控制等。这些内容都是Java入门必须掌握的知识点,用户可能需要一个系统的梳理。 引用[3]提供了一个数据结构原理的链接,但链接已经失效。不过数据结构Java中也是基础的一部分,比如集合框架,但用户的问题可能更偏向于语言本身的基础,而不是数据结构。不过可能需要提到集合框架作为基础的一部分。 接下来需要组织这些内容,按照逻辑顺序进行总结。通常Java基础会从简介开始,然后是环境搭建、语法要素、数据类型、运算符、流程控制、面向对象、异常处理、常用类库、IO、集合框架、泛型、注解、反射等。 需要注意的是用户引用的资料中提到了IDEA的层级结构,这部分可能属于开发工具的使用,但如果是基础知识点,可能不需要深入,但可以简要提及项目结构。 此外,引用中提到的面试题可能也是用户关心的,比如关键字的例子、类型转换的问题,这些可以作为示例加入总结中,帮助理解。 需要检查是否有遗漏的部分,比如面向对象是Java的核心,必须详细说明大特性:封装、继承、多态、抽象。还有String和Integer的特殊性,比如不可变性、自动装箱拆箱等。 异常处理部分包括try-catch-finally、异常分类(Checked和Unchecked),IO部分包括流的概念、字节流和字符流的区别,序列化的机制。 泛型部分需要解释类型参数化,注解和反射则是高级特性,但属于基础知识点的一部分。 另外,用户提供的引用中有提到跨平台原理,即JVM的作用,这点需要强调。 可能还需要补充一些引用中没有明确提到但基础中重要的内容,比如对象生命周期、垃圾回收、静态关键字static、final等。 最后,生成相关问题时要围绕用户可能进一步想了解的内容,比如面向对象的具体细节、JVM内存模型、集合框架、异常处理的最佳实践等。 在整理时要注意使用正确的中文术语,避免翻译错误,同时确保LaTeX格式的正确应用,比如类名使用$...$包裹,例如$String$、$Integer$等。 现在需要将这些思考整理成一个结构清晰、涵盖主要知识点、符合用户引用内容的总结,并生成相关问题。</think>### Java 基础知识点总结 #### 一、Java 简介 Java 是一种面向对象的编程语言,具有**跨平台**特性,通过 JVM(Java 虚拟机)实现“一次编写,到处运行”[^2]。其三大平台包括: - **Java SE**(标准版):基础核心库。 - **Java EE**(企业版):企业级应用开发。 - **Java ME**(微型版):嵌入式设备开发。 #### 二、基础语法 1. **变量与数据类型** - **基本数据类型**:8 种,如$int$、$double$、$boolean$等。 - **引用数据类型**:如$String$、数组、类对象。 - **类型转换**:自动类型转换(小转大)与强制类型转换(大转小)。 - **常量**:用$final$修饰,例如$final\ int\ MAX = 100;$。 2. **运算符** - 算术运算符:$+,-,*,/,\%$。 - 逻辑运算符:$&&, ||, !$。 - 面试题示例: ```java int a = 3; int b = a++ + ++a; // 结果:3 + 5 = 8 [^2] ``` 3. **流程控制** - **分支结构**:$if-else$、$switch-case$。 - **循环结构**:$for$、$while$、$do-while$。 - 示例: ```java if (score >= 90) { System.out.println("优秀"); } else if (score >= 60) { System.out.println("及格"); } ``` #### 三、面向对象编程(OOP) 1. **大特性** - **封装**:通过访问修饰符(如$private$、$public$)隐藏实现细节。 - **继承**:使用$extends$实现类层级关系。 - **多态**:通过方法重写(Override)和接口实现。 - **抽象**:抽象类($abstract\ class$)与接口($interface$)。 2. **常用类** - **$String$**:不可变性,操作效率低时建议用$StringBuilder$[^1]。 - **$Integer$**:自动装箱与拆箱机制。 - **$Object$**:所有类的基类,包含$equals()$、$hashCode()$等方法。 #### 、异常处理 - **异常分类**: - **Checked 异常**:编译时检查(如$IOException$)。 - **Unchecked 异常**:运行时错误(如$NullPointerException$)。 - **处理方式**: ```java try { // 可能抛出异常的代码 } catch (Exception e) { // 异常处理 } finally { // 资源释放 } ``` #### 五、IO 与序列化 1. **IO 流** - **字节流**:$InputStream$、$OutputStream$(处理二进制数据)。 - **字符流**:$Reader$、$Writer$(处理文本数据)。 2. **序列化**:实现$Serializable$接口,将对象转换为字节流。 #### 六、高级特性 1. **泛型**:类型参数化,例如$List<String> list = new ArrayList<>();$。 2. **注解**:通过$@Override$、$@Deprecated$等添加元数据。 3. **反射**:通过$Class$类动态获取类信息。 #### 七、开发环境 - **JDK 目录结构**:包含$bin$(工具)、$lib$(库)、$src.zip$(源码)等[^2]。 - **IDEA 层级结构**:项目(Project)→ 模块(Module)→ 包(Package)→ 类(Class)[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值