目录

一、运算符与表达式基础

1.1 核心概念

二、算术运算符

2.1 分类与运算规则

2.2 代码案例

2.3 实战练习:数值拆分

三、数据类型转换

3.1 隐式转换(自动类型提升)

概念

核心规则

取值范围顺序(从小到大)

案例解析

3.2 强制转换

概念

格式

案例与注意点

四、字符串与字符的 + 操作

4.1 字符串的 + 操作(连接符)

核心规则

案例

4.2 字符的 + 操作

规则

案例

五、自增自减运算符

5.1 分类与作用

5.2 使用方式

案例

5.3 应用场景

六、赋值运算符

6.1 基础赋值运算符:=

6.2 扩展赋值运算符

分类

规则

案例

七、关系运算符(比较运算符)

7.1 分类与规则

7.2 注意点

案例

八、逻辑运算符

8.1 基础逻辑运算符

案例

8.2 短路逻辑运算符

分类与规则

核心逻辑

案例(短路效果)

8.3 推荐用法

九、三元运算符(三元表达式)

9.1 格式

9.2 运算规则

9.3 注意点

9.4 实战案例

案例 1:判断两只老虎体重是否相同

案例 2:求三个和尚的最高身高

十、运算符优先级

十一、流程控制语句

11.1 流程控制语句分类

11.2 顺序结构

十二、判断语句:if语句

12.1 if语句格式1

练习1:老丈人选女婿

练习2:考试奖励

第一种格式的细节:

12.2 if语句格式2

练习1:吃饭

练习2:影院选座

12.3 if语句格式3

练习1:考试奖励

十三、switch语句

13.1 格式

13.2 执行流程:

练习:运动计划

13.3 switch的扩展知识:

练习:休息日和工作日

十四、循环结构

14.1 for循环结构(掌握)

14.1.1 for循环格式:

for循环练习-输出数据

for循环练习-求和

for循环练习-求偶数和

1​4.2 while循环

14.2.1 格式:

练习1:打印5次HelloWorld

练习2:珠穆朗玛峰

14.3 do...while循环

14.4 三种格式的区别:


一、运算符与表达式基础

1.1 核心概念

  • 运算符:对常量或变量进行操作的符号(如 + - * /)。
  • 表达式:用运算符连接常量 / 变量,符合 Java 语法的式子(如 a + b)。
    • 若运算符为算术运算符,则表达式称为算术表达式

二、算术运算符

算术运算符用于执行基本数学运算,是最常用的运算符之一。

2.1 分类与运算规则

运算符 名称 运算规则 核心注意点
+ 加法 同小学数学加法 -
- 减法 同小学数学减法 -
* 乘法 同小学数学乘法 -
/ 除法 1. 整数相除只保留商(整除);2. 小数参与运算结果可能不精确 需小数结果必须有浮点数参与
% 取模 / 取余 除法运算取余数 常用于判断奇偶、拆分数字

2.2 代码案例

public class ArithmeticDemo {
    public static void main(String[] args) {
        // 除法示例
        System.out.println(10 / 3);    // 整数相除,结果为3(整除)
        System.out.println(10.0 / 3);  // 浮点数参与,结果为3.3333333333333335
        
        // 取模示例
        System.out.println(10 % 2);    // 0(偶数)
        System.out.println(10 % 3);    // 1
        System.out.println(15 % 2);    // 1(奇数,常用判断奇偶)
    }
}

2.3 实战练习:数值拆分

需求:键盘录入一个三位数,拆分其个位、十位、百位并打印。

import java.util.Scanner;

public class NumberSplit {
    public static void main(String[] args) {
        // 1. 键盘录入三位数
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个三位数:");
        int number = sc.nextInt(); // 示例:123
        
        // 2. 拆分各位(通用公式)
        int ones = number % 10;          // 个位:数字%10
        int tens = number / 10 % 10;     // 十位:数字/10%10
        int hundreds = number / 100 % 10;// 百位:数字/100%10
        
        // 3. 打印结果
        System.out.println("个位:" + ones);
        System.out.println("十位:" + tens);
        System.out.println("百位:" + hundreds);
    }
}

通用公式扩展

  • 千位:数字 / 1000 % 10
  • 万位:数字 / 10000 % 10(以此类推)

三、数据类型转换

当不同取值范围的数据参与运算时,会发生类型转换,分为隐式转换强制转换

3.1 隐式转换(自动类型提升)

概念

将取值范围的数据 / 变量赋值给取值范围的变量,程序自动完成,无需手动操作(简单记:小给大,直接给)。

核心规则
  1. 小范围类型与大范围类型运算时,小范围先提升为大范围,再运算;
  2. byte、short、char 运算时,直接提升为 int 再计算。
取值范围顺序(从小到大)

byte < short < int < long < float < double

案例解析
public class ImplicitConvert {
    public static void main(String[] args) {
        // 案例1:int → double
        double d = 10;
        System.out.println(d); // 10.0(int自动提升为double)
        
        // 案例2:byte → int
        byte b = 100;
        int i = b; // 直接赋值,自动提升
        
        // 案例3:int + long → long
        int i1 = 10;
        long n1 = 20L;
        long result1 = i1 + n1; // i1自动提升为long
        
        // 案例4:byte + short + long → long
        byte b2 = 10;
        short s2 = 20;
        long n2 = 100L;
        long result2 = b2 + s2 + n2; 
        // 第一步:b2、s2提升为int → int+int+long
        // 第二步:int提升为long → long+long+long
    }
}

3.2 强制转换

概念

将取值范围的数据 / 变量赋值给取值范围的变量,需手动指定转换类型(大给小,强制转)。

格式
目标数据类型 变量名 = (目标数据类型) 被强转的数据;
案例与注意点
public class ForceConvert {
    public static void main(String[] args) {
        double a = 12.3;
        int b = (int) a;
        System.out.println(b); // 12(精度丢失,小数部分被舍弃)
        
        // 注意:强制转换可能导致数据错误(如超出目标类型范围)
        int c = 200;
        byte d = (byte) c;
        System.out.println(d); // -56(byte范围-128~127,超出后溢出)
    }
}

核心注意:强制转换可能导致精度丢失数据溢出,需谨慎使用。

四、字符串与字符的 + 操作

4.1 字符串的 + 操作(连接符)

核心规则
  • +中出现字符串时,变为字符串连接符,拼接前后数据生成新字符串;
  • 连续+从左到右逐个执行。
案例
public class StringPlus {
    public static void main(String[] args) {
        // 案例1:1 + "abc" + 1 → "1abc1"
        System.out.println(1 + "abc" + 1);
        
        // 案例2:1 + 2 + "abc" + 2 + 1 → "3abc21"
        System.out.println(1 + 2 + "abc" + 2 + 1);
        
        // 案例3:字符串 + 变量
        String name = "黑默丁格";
        System.out.println("我的名字是" + name); // 我的名字是黑默丁格
    }
}

4.2 字符的 + 操作

规则

字符参与+运算时,会先查 ASCII 码表转换为对应数字,再计算。

案例
public class CharPlus {
    public static void main(String[] args) {
        char c = 'a';
        int result = c + 0;
        System.out.println(result); // 97('a'的ASCII码值)
        
        char c2 = 'A';
        System.out.println(c2 + 0); // 65('A'的ASCII码值)
    }
}

五、自增自减运算符

5.1 分类与作用

运算符 名称 作用
++ 自增 变量值 + 1
-- 自减 变量值 - 1

5.2 使用方式

  • 先 ++/--++a / --a(先修改变量值,再使用);
  • 后 ++/--a++ / a--(先使用变量值,再修改)。

 注意:单独写在一行时,先 ++ 和后 ++ 结果完全一致。

案例
public class SelfPlusMinus {
    public static void main(String[] args) {
        int a = 10;
        a++; // 变量值+1 → 11
        System.out.println(a); // 11
        
        ++a; // 变量值+1 → 12
        System.out.println(a); // 12
        
        a--; // 变量值-1 → 11
        System.out.println(a); // 11
    }
}

5.3 应用场景

  • 统计满足条件的数据数量;
  • 商品数量增减、年龄自增等场景。

六、赋值运算符

6.1 基础赋值运算符:=

规则:将等号右侧结果赋值给左侧变量(先算右边,再赋值)。

public class AssignDemo {
    public static void main(String[] args) {
        int a = 10; // 直接赋值
        int b = 20;
        int c = a + b; // 先算a+b=30,再赋值给c
        a = a + 10; // 先算a+10=20,再赋值给a
        System.out.println(a); // 20
    }
}

6.2 扩展赋值运算符

分类

+=、-=、*=、/=、%=

规则

左侧与右侧运算后,结果赋值给左侧(对右侧无影响),隐含强制转换

案例
public class ExtendAssign {
    public static void main(String[] args) {
        // 基础扩展赋值
        int a = 10;
        int b = 20;
        a += b; // 等价于 a = a + b → 30
        System.out.println(a); // 30
        
        // 隐含强制转换(byte类型)
        byte a2 = 10;
        byte b2 = 20;
        a2 += b2; // 等价于 a2 = (byte)(a2 + b2)
        System.out.println(a2); // 30
    }
}

七、关系运算符(比较运算符)

7.1 分类与规则

运算符 名称 规则
== 等于 左右相等→true,否则→false
!= 不等于 左右不等→true,否则→false
> 大于 左 > 右→true,否则→false
>= 大于等于 左≥右→true,否则→false
< 小于 左 < 右→true,否则→false
<= 小于等于 左≤右→true,否则→false

7.2 注意点

  1. 结果必为布尔类型(true/false);
  2. 切勿将==写成=(赋值运算符)。
案例
public class RelationDemo {
    public static void main(String[] args) {
        System.out.println(10 == 20); // false
        System.out.println(10 != 20); // true
        System.out.println(10 > 20);  // false
        System.out.println(10 <= 20); // true
    }
}

八、逻辑运算符

用于连接多个布尔表达式,判断复合条件。

8.1 基础逻辑运算符

运算符 名称 规则 场景
& 逻辑与 两边都为 true→true,否则→false 需同时满足多个条件(如登录:用户名正确 & 密码正确)
` ` 逻辑或 两边都为 false→false,否则→true 只需满足一个条件(如选女婿:有房 有车)
^ 异或 两边不同→true,相同→false 极少使用,了解即可
! 取反 true→false,false→true 取反单个条件(最多用 1 个)
案例
public class LogicDemo {
    public static void main(String[] args) {
        // 逻辑与
        System.out.println(true & true);  // true
        System.out.println(true & false); // false
        
        // 逻辑或
        System.out.println(true | false); // true
        System.out.println(false | false);// false
        
        // 异或
        System.out.println(true ^ false); // true
        System.out.println(true ^ true);  // false
        
        // 取反
        System.out.println(!true); // false
        System.out.println(!false);// true
    }
}

8.2 短路逻辑运算符

分类与规则

&&:运算结果跟&是一模一样的,只不过具有短路效果。

||:运算结果跟|是一模一样的。只不过具有短路效果。

核心逻辑
  • 左边能确定结果 → 右边不执行(短路);
  • 左边不能确定结果 → 执行右边。
案例(短路效果)
public class ShortCircuitDemo {
    public static void main(String[] args) {
        int a = 10;
        // 短路与:左边false,右边a++不执行
        System.out.println(false && (a++) > 0); // false
        System.out.println(a); // 10(a未自增)
        
        // 短路或:左边true,右边a++不执行
        System.out.println(true || (a++) > 0);  // true
        System.out.println(a); // 10(a未自增)
    }
}

8.3 推荐用法

日常开发优先使用 &&、||、!(兼顾结果与效率)。

九、三元运算符(三元表达式)

9.1 格式

关系表达式 ? 表达式1 : 表达式2;

9.2 运算规则

  1. 计算关系表达式的值;
  2. 结果为true → 执行表达式 1;
  3. 结果为false → 执行表达式 2。

9.3 注意点

三元运算符的结果必须被使用(赋值给变量或直接打印)。

9.4 实战案例

案例 1:判断两只老虎体重是否相同
import java.util.Scanner;

public class TigerWeight {
    public static void main(String[] args) {
        // 1. 录入两只老虎体重
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入第一只老虎的体重:");
        int weight1 = sc.nextInt();
        System.out.println("请输入第二只老虎的体重:");
        int weight2 = sc.nextInt();
        
        // 2. 三元运算符判断
        String result = weight1 == weight2 ? "相同" : "不相同";
        System.out.println("两只老虎体重:" + result);
    }
}
案例 2:求三个和尚的最高身高
public class MaxHeight {
    public static void main(String[] args) {
        // 1. 定义身高变量
        int h1 = 150, h2 = 210, h3 = 165;
        
        // 2. 分步求最大值
        int temp = h1 > h2 ? h1 : h2; // 先求前两个的最大值
        int max = temp > h3 ? temp : h3; // 再与第三个比较
        
        // 3. 打印结果
        System.out.println("最高身高:" + max + "cm"); // 210cm
    }
}

十、运算符优先级

Java 运算符有明确的优先级,但无需记忆,核心规则:

小括号 () 优先于所有运算符!

若需调整运算顺序,直接用小括号包裹即可(如 (a + b) * c)。

十一、流程控制语句

在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。所以,我们必须清楚每条语句的执行流程。而且,很多时候要通过控制语句的执行顺序来实现我们想要的功能。

11.1 流程控制语句分类

顺序结构

判断和选择结构(if, switch)

循环结构(for, while, do…while)

11.2 顺序结构

顺序结构是程序中最简单最基本的流程控制,没有特定的语法结构,按照代码的先后顺序,依次执行,程序中大多数的代码都是这样执行的。

顺序结构执行流程图:

十二、判断语句:if语句

12.1 if语句格式1

格式:
if (关系表达式) {
    语句体;    
}

执行流程:

①首先计算关系表达式的值

②如果关系表达式的值为true就执行语句体

③如果关系表达式的值为false就不执行语句体

④继续执行后面的语句内容

示例:

public class IfDemo {
    public static void main(String[] args) {
        System.out.println("开始");   
        //定义两个变量
        int a = 10;
        int b = 20; 
        //需求:判断a和b的值是否相等,如果相等,就在控制台输出:a等于b
        if(a == b) {
            System.out.println("a等于b");
        }       
        //需求:判断a和c的值是否相等,如果相等,就在控制台输出:a等于c
        int c = 10;
        if(a == c) {
            System.out.println("a等于c");
        }       
        System.out.println("结束");
    }
}
练习1:老丈人选女婿

需求:

键盘录入女婿的酒量,如果大于2斤,老丈人给出回应,否则没有任何回应

代码示例:

//分析:
//1.键盘录入女婿的酒量
Scanner sc = new Scanner(System.in);
System.out.println("请输入女婿的酒量");
int wine = sc.nextInt();//5
//2.对酒量进行一个判断即可
if(wine > 2) {
    System.out.println("不错哟,小伙子!");
}
练习2:考试奖励

需求:

键盘录入一个整数,表示小明的考试名次,如果名次为1,小红可以当小明的女朋有了。

代码示例:

//分析:
//1.键盘录入一个整数,表示小明的考试名次
Scanner sc = new Scanner(System.in);
System.out.println("请输入小明的名次");
int rank = sc.nextInt();
//2.对小明的考试成绩进行判断即可
if(rank == 1){
    System.out.println("小红成为了小明的女朋友");
}
第一种格式的细节:
  1. 如果我们要对一个布尔类型的变量进行判断,不要写==,直接把变量写在小括号中即可。

  2. 如果大括号中的语句体只有一条,那么大括号可以省略不写

    如果大括号省略了,那么if只能控制距离他最近的那一条语句。

    建议:自己不要去写,如果别人这么写了,你要能看懂即可。

12.2 if语句格式2

格式:
if (关系表达式) {
    语句体1;   
} else {
    语句体2;   
}

执行流程:

①首先计算关系表达式的值

②如果关系表达式的值为true就执行语句体1

③如果关系表达式的值为false就执行语句体2

④继续执行后面的语句内容

示例:

public class IfDemo02 {
    public static void main(String[] args) {
        System.out.println("开始");       
        //定义两个变量
        int a = 10;
        int b = 20;
        //需求:判断a是否大于b,如果是,在控制台输出:a的值大于b,否则,在控制台输出:a的值不大于b
        if(a > b) {
            System.out.println("a的值大于b");
        } else {
            System.out.println("a的值不大于b");
        }       
        System.out.println("结束");
    }
}
练习1:吃饭

需求:

键盘录入一个整数,表示身上的钱。

如果大于等于100块,就是网红餐厅。

否则,就吃经济实惠的沙县小吃。

代码示例:

//分析:
//1.键盘录入一个整数。表示身上的钱。
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个整数表示身上的钱");
int money = sc.nextInt();
//2.对钱进行判断
if(money >= 100){
    System.out.println("吃网红餐厅");
}else{
    System.out.println("福建大酒店");
}
练习2:影院选座

需求:

在实际开发中,电影院选座也会使用到if判断。

假设某影院售卖了100张票,票的序号为1~100。

其中奇数票号坐左侧,偶数票号坐右侧。

键盘录入一个整数表示电影票的票号。

根据不同情况,给出不同的提示:

如果票号为奇数,那么打印坐左边。

如果票号为偶数,那么打印坐右边。

代码示例:

//分析:
//1.键盘录入票号
Scanner sc = new Scanner(System.in);
System.out.println("请输入票号");
int ticket = sc.nextInt();
if(ticket >= 1 && ticket <= 100){
    //合法
    //2.对票号进行判断
    if (ticket % 2 == 0) {
        //偶数
        System.out.println("坐右边");
    } else {
        //奇数
        System.out.println("坐左边");
    }
}else{
    //票号不合法
    System.out.println("票号不合法");
}

12.3 if语句格式3

格式:
if (关系表达式1) {
    语句体1;   
} else if (关系表达式2) {
    语句体2;   
} 
…
else {
    语句体n+1;
}

执行流程:

①首先计算关系表达式1的值

②如果值为true就执行语句体1;如果值为false就计算关系表达式2的值

③如果值为true就执行语句体2;如果值为false就计算关系表达式3的值

④…

⑤如果没有任何关系表达式为true,就执行语句体n+1。

练习1:考试奖励

需求:

小明快要期末考试了,小明爸爸对他说,会根据他不同的考试成绩,送他不同的礼物,

假如你可以控制小明的得分,请用程序实现小明到底该获得什么样的礼物,并在控制台输出。

分析:

①小明的考试成绩未知,可以使用键盘录入的方式获取值

②由于奖励种类较多,属于多种判断,采用if...else...if格式实现

③为每种判断设置对应的条件

④为每种判断设置对应的奖励

代码示例:

//95~100 自行车一辆
//90~94   游乐场玩一天
//80 ~ 89 变形金刚一个
//80 以下  胖揍一顿
​
//1.键盘录入一个值表示小明的分数
Scanner sc = new Scanner(System.in);
System.out.println("请输入小明的成绩");
int score = sc.nextInt();
//2.对分数的有效性进行判断
if(score >= 0 && score <= 100){
    //有效的分数
    //3.对小明的分数进行判断,不同情况执行不同的代码
    if(score >= 95 && score <= 100){
        System.out.println("送自行车一辆");
    }else if(score >= 90 && score <= 94){
        System.out.println("游乐场玩一天");
    }else if(score >= 80 && score <= 89){
        System.out.println("变形金刚一个");
    }else{
        System.out.println("胖揍一顿");
    }
}else{
    //无效的分数
    System.out.println("分数不合法");
}

十三、switch语句

13.1 格式

switch (表达式) {
    case 1:
        语句体1;
        break;
    case 2:
        语句体2;
        break;
    ...
    default:
        语句体n+1;
        break;
}

13.2 执行流程:

  • 首先计算出表达式的值

  • 其次,和case依次比较,一旦有对应的值,就会执行相应的语句,在执行的过程中,遇到break就会结 束。

  • 最后,如果所有的case都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。

练习:运动计划
  • 需求:键盘录入星期数,显示今天的减肥活动。

    周一:跑步

    周二:游泳

    周三:慢走

    周四:动感单车

    周五:拳击

    周六:爬山

    周日:好好吃一顿

  • 代码示例:

public class SwitchDemo2 {
    public static void main(String[] args) {
        //1.键盘录入一个整数表示星期
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个整数表示星期");
        int week = sc.nextInt();
​
        //2.书写一个switch语句去跟week进行匹配
        switch (week){
            case 1:
                System.out.println("跑步");
                break;
            case 2:
                System.out.println("游泳");
                break;
            case 3:
                System.out.println("慢走");
                break;
            case 4:
                System.out.println("动感单车");
                break;
            case 5:
                System.out.println("拳击");
                break;
            case 6:
                System.out.println("爬山");
                break;
            case 7:
                System.out.println("好好吃一顿");
                break;
            default:
                System.out.println("输入错误,没有这个星期");
                break;
        }
    }
}

13.3 switch的扩展知识:

  • default的位置和省略情况

    default可以放在任意位置,也可以省略

  • case穿透

    不写break会引发case穿透现象

  • switch在JDK12的新特性

int number = 10;
switch (number) {
    case 1 -> System.out.println("一");
    case 2 -> System.out.println("二");
    case 3 -> System.out.println("三");
    default -> System.out.println("其他");
}
  • switch和if第三种格式各自的使用场景

当我们需要对一个范围进行判断的时候,用if的第三种格式

当我们把有限个数据列举出来,选择其中一个执行的时候,用switch语句

比如:

小明的考试成绩,如果用switch,那么需要写100个case,太麻烦了,所以用if简单。

如果是星期,月份,客服电话中0~9的功能选择就可以用switch

练习:休息日和工作日

需求:键盘录入星期数,输出工作日、休息日。

(1-5) 工作日,(6-7)休息日。

代码示例:

//分析:
//1.键盘录入星期数
Scanner sc = new Scanner(System.in);
System.out.println("请输入星期");
int week = sc.nextInt();//3
//2.利用switch进行匹配
----------------------------------------------------
利用case穿透简化代码
switch (week){
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
        System.out.println("工作日");
        break;
    case 6:
    case 7:
        System.out.println("休息日");
        break;
    default:
        System.out.println("没有这个星期");
        break;
}
----------------------------------------------------
利用JDK12简化代码书写
switch (week) {
    case 1, 2, 3, 4, 5 -> System.out.println("工作日");
    case 6, 7 -> System.out.println("休息日");
    default -> System.out.println("没有这个星期");
}

十四、循环结构

14.1 for循环结构(掌握)

循环语句可以在满足循环条件的情况下,反复执行某一段代码,这段被重复执行的代码被称为循环体语句,当反复 执行这个循环体时,需要在合适的时候把循环判断条件修改为false,从而结束循环,否则循环将一直执行下去,形 成死循环。

14.1.1 for循环格式:
for (初始化语句;条件判断语句;条件控制语句) {
    循环体语句;
}

格式解释:

  • 初始化语句: 用于表示循环开启时的起始状态,简单说就是循环开始的时候什么样

  • 条件判断语句:用于表示循环反复执行的条件,简单说就是判断循环是否能一直执行下去

  • 循环体语句: 用于表示循环反复执行的内容,简单说就是循环反复执行的事情

  • 条件控制语句:用于表示循环执行中每次变化的内容,简单说就是控制循环是否能执行下去

执行流程:

①执行初始化语句

②执行条件判断语句,看其结果是true还是false

如果是false,循环结束

如果是true,继续执行

③执行循环体语句

④执行条件控制语句

⑤回到②继续

for循环书写技巧:

  • 确定循环的开始条件

  • 确定循环的结束条件

  • 确定循环要重复执行的代码

代码示例:

//1.确定循环的开始条件
//2.确定循环的结束条件
//3.确定要重复执行的代码
​
//需求:打印5次HelloWorld
//开始条件:1
//结束条件:5
//重复代码:打印语句
​
for (int i = 1; i <= 5; i++) {
    System.out.println("HelloWorld");
}
for循环练习-输出数据
  • 需求:在控制台输出1-5和5-1的数据

  • 示例代码:

public class ForTest01 {
    public static void main(String[] args) {
        //需求:输出数据1-5
        for(int i=1; i<=5; i++) {
            System.out.println(i);
        }
        System.out.println("--------");
        //需求:输出数据5-1
        for(int i=5; i>=1; i--) {
            System.out.println(i);
        }
    }
}

for循环练习-求和
  • 需求:求1-5之间的数据和,并把求和结果在控制台输出

  • 示例代码:

public class ForTest02 {
    public static void main(String[] args) {
        //求和的最终结果必须保存起来,需要定义一个变量,用于保存求和的结果,初始值为0
        int sum = 0;
        //从1开始到5结束的数据,使用循环结构完成
        for(int i=1; i<=5; i++) {
            //将反复进行的事情写入循环结构内部
             // 此处反复进行的事情是将数据 i 加到用于保存最终求和的变量 sum 中
            sum = sum + i;
            /*
                sum += i;   sum = sum + i;
                第一次:sum = sum + i = 0 + 1 = 1;
                第二次:sum = sum + i = 1 + 2 = 3;
                第三次:sum = sum + i = 3 + 3 = 6;
                第四次:sum = sum + i = 6 + 4 = 10;
                第五次:sum = sum + i = 10 + 5 = 15;
            */
        }
        //当循环执行完毕时,将最终数据打印出来
        System.out.println("1-5之间的数据和是:" + sum);
    }
}
  • 本题要点:

    • 今后遇到的需求中,如果带有求和二字,请立即联想到求和变量

    • 求和变量的定义位置,必须在循环外部,如果在循环内部则计算出的数据将是错误的

for循环练习-求偶数和
  • 需求:求1-100之间的偶数和,并把求和结果在控制台输出 }

  • 示例代码:

public class ForTest03 {
    public static void main(String[] args) {
        //求和的最终结果必须保存起来,需要定义一个变量,用于保存求和的结果,初始值为0
        int sum = 0;
        //对1-100的数据求和与1-5的数据求和几乎完全一样,仅仅是结束条件不同
        for(int i=1; i<=100; i++) {
            //对1-100的偶数求和,需要对求和操作添加限制条件,判断是否是偶数
            if(i%2 == 0) {
                //sum += i;
                sum = sum + i;
            }
        }
        //当循环执行完毕时,将最终数据打印出来
        System.out.println("1-100之间的偶数和是:" + sum);
    }
}

1​4.2 while循环

14.2.1 格式:
初始化语句;
while(条件判断语句){
    循环体;
    条件控制语句;
}
练习1:打印5次HelloWorld
int i = 1;
while(i <= 5){
    System.out.println("HelloWorld");
    i++;
}
System.out.println(i);
练习2:珠穆朗玛峰
//1.定义一个变量表示珠穆朗玛峰的高度
int height = 8844430;
//2.定义一个变量表示纸张的厚度
double paper = 0.1;
​
//定义一个计数器(变量),用来统计折叠的次数
int count = 0;
​
//3.循环折叠纸张
//只有纸张的厚度 < 穆朗玛峰的高度 循环才继续,否则循环就停止
//坑:只有判断为真,循环才会继续
while(paper < height){
    //折叠纸张
    paper = paper * 2;
    count++;
}
​
//4.打印一下纸张的厚度
System.out.println(count);//27

14.3 do...while循环

格式:

初始化语句;
do{
    循环体;
    条件控制语句;
}while(条件判断语句);

特点:先执行,再判断。

14.4 三种格式的区别:

for和while循环,是先判断,再执行。

do...while是先执行,再判断。

当知道循环次数或者循环范围的时候,用for循环。

当不知道循环次数,也不知道循环范围,但是知道循环的结束条件时,用while循环。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐