Java的基础运算语法与流程控制详解

提示:Java中的基本语法和流程控制结构,包括运算符、流程控制语句等,旨在帮助初学者快速掌握Java编程的基础知识。文章中会结合代码案例进行详细解释,确保读者能够理解并应用这些知识

目录

前言

基本语法

运算符

算术运算符:+、-、*、/、%(取余/模运算)

关系运算符:==、!=、>、<、>=、<=

逻辑运算符:&&(与)、||(或)、!(非)

赋值运算符:=、+=、-=、*=、/=、%=

位运算符:&、|、^、~、<<、>>、>>>

其他运算符:&、|、^、~、<<、>>、>>>、?:(三元运算符)

流程控制

输入输出

使用Scanner类进行输入:

顺序结构

选择结构

单选择结构:if语句。

双选择结构:if...else语句。

多选择结构:if...else if...else语句。

嵌套语句:可以在if语句中嵌套另一个if语句。

switch...case语句:

循环结构

while循环:是最基础的循环结构,格式为while (布尔表达式) {循环内容}。

do...while循环:即使条件不满足,也会至少执行一次循环体。

for 循环

break 与 continue

总结


前言

        在学习Java编程的过程中,掌握基本语法和流程控制是至关重要的一步。无论是简单的变量操作,还是复杂的程序逻辑实现,都离不开这些基础知识。本文将从运算符讲起,逐步深入到流程控制结构,包括条件语句和循环语句,并通过具体的代码案例进行详细解释,帮助初学者快速理解和掌握这些内容。


基本语法

运算符

  1. 算术运算符+-*/%(取余/模运算)

    • 注意作用范围:如果运算中有long类型数据,那么结果就是long型;如果没有long,则为int型。

      示例代码:
      int a = 10;
      long b = 20L;
      long result = a + b; // 结果为long型
      System.out.println(result);
      • a++++a 的区别:a++ 是后缀递增,先使用a的值,再将a加1;++a 是前缀递增,先将a加1,再使用a的值。

        int a = 5;
        int b = a++; // b 获得的是 a 原来的值,即 5;然后 a 自增变为 6
        
        System.out.println("a: " + a); // 输出 a: 6
        System.out.println("b: " + b); // 输出 b: 5
        int a = 5;
        int b = ++a; // 先将 a 增加至 6,然后 b 被赋予增加了的 a 的值,即 6
        
        System.out.println("a: " + a); // 输出 a: 6
        System.out.println("b: " + b); // 输出 b: 6
      • 幂运算需要用Math.pow()方法,例如计算2的3次方

        double powerResult = Math.pow(2, 3);
        System.out.println(powerResult); // 输出8.0
    • 关系运算符==!=><>=<=

      • 返回的是布尔值(truefalse)。

        示例代码:
        int x = 10;
        int y = 20;
        boolean isEqual = (x == y); // false
        boolean isNotEqual = (x != y); // true
        System.out.println("isEqual: " + isEqual);
        System.out.println("isNotEqual: " + isNotEqual);
    • 逻辑运算符&&(与)、||(或)、!(非)

      • 与运算:只有当两个条件都为真时,结果才为真。

      • 或运算:只要有一个条件为真,结果就为真。

      • 非运算:对条件取反。

      • 短路运算:在前一个条件已经能够确定整个表达式的结果时,后面的条件就不会再被计算。

      • 示例代码:

        boolean condition1 = true;
        boolean condition2 = false;
        boolean andResult = condition1 && condition2; // false
        boolean orResult = condition1 || condition2; // true
        boolean notResult = !condition1; // false
        System.out.println("andResult: " + andResult);
        System.out.println("orResult: " + orResult);
        System.out.println("notResult: " + notResult);
    • 赋值运算符=+=-=*=/=%=

      • 字符串连接符+,当与String类型一起使用时,会将其他类型的数据转换为字符串进行拼接。

        示例代码:
        int num1 = 10;
        int num2 = 20;
        System.out.println(num1 + num2 + ""); // 先计算数字,再拼接字符串,输出"30"
        System.out.println("" + num1 + num2); // 直接拼接字符串,输出"1020"
      • 位运算符&|^~<<>>>>>

        • 这些运算符主要用于对整数的二进制位进行操作,例如按位与、按位或、按位异或、取反、左移、右移等。

          示例代码:
          int bit1 = 5; // 二进制为0101
          int bit2 = 3; // 二进制为0011
          int andBitResult = bit1 & bit2; // 0001,结果为1
          int orBitResult = bit1 | bit2; // 0111,结果为7
          System.out.println("andBitResult: " + andBitResult);
          System.out.println("orBitResult: " + orBitResult);
        • 其他运算符&|^~<<>>>>>?:(三元运算符)

          • 三元运算符格式为x ? y : z,如果xtrue,则结果为y,否则为z

            示例代码:
            int max = (num1 > num2) ? num1 : num2;
            System.out.println("max: " + max); // 输出20

          流程控制

          输入输出

          • 使用Scanner类进行输入:

            • next():读取下一个单词(遇到空格停止)。

            • nextLine():读取整行输入,包括空格。

            • 示例代码:

              import java.util.Scanner;
              
              public class ScannerExample {
              
                  public static void main(String[] args) {
                      Scanner scanner = new Scanner(System.in);
              
                      System.out.println("请输入一个单词(使用next()方法读取):");
                      String word = scanner.next(); // 读取输入直到遇到空格
                      System.out.println("你输入的单词是: " + word);
              
                      System.out.println("请输入一行文本(使用nextLine()方法读取):");
                      String line = scanner.nextLine(); // 读取整行输入,包括空格
                      System.out.println("你输入的文本行是: " + line);
              
                      // 注意:如果在调用next()之后直接调用nextLine(),可能需要额外的nextLine()来消耗剩余的新行字符
                      // 下面是一个更详细的例子说明这个问题
                      System.out.println("\n演示next()后跟随nextLine()时的行为:");
              
                      System.out.println("再次请输入一个单词(使用next()方法读取):");
                      word = scanner.next();
                      System.out.println("你输入的单词是: " + word);
              
                      // 这里可能需要额外的nextLine()来处理换行符
                      scanner.nextLine();
              
                      System.out.println("请再输入一行文本(使用nextLine()方法读取):");
                      line = scanner.nextLine();
                      System.out.println("你输入的文本行是: " + line);
              
                      scanner.close();
                  }
              }

          顺序结构

          • 基本结构:按照代码的顺序依次执行。

          选择结构

          • 单选择结构if语句。

            • 示例代码:

              int score = 85;
              if (score >= 60) {
                  System.out.println("及格了!");
              }
          • 双选择结构if...else语句。

            • 示例代码:

              if (score >= 60) {
                  System.out.println("及格了!");
              } else {
                  System.out.println("不及格!");
              }
          • 多选择结构if...else if...else语句。

            • 示例代码:

              if (score >= 90) {
                  System.out.println("优秀");
              } else if (score >= 80) {
                  System.out.println("良好");
              } else if (score >= 60) {
                  System.out.println("及格");
              } else {
                  System.out.println("不及格");
              }
          • 嵌套语句:可以在if语句中嵌套另一个if语句。

            • 示例代码:

              if (score >= 60) {
                  if (score >= 80) {
                      System.out.println("成绩很好");
                  } else {
                      System.out.println("成绩一般");
                  }
              } else {
                  System.out.println("成绩较差");
              }
          • switch...case语句:

            • JDK新特性支持字符串作为表达式结果。

            • 示例代码:

              char grade = 'B';
              switch (grade) {
                  case 'A':
                      System.out.println("优秀");
                      break;
                  case 'B':
                      System.out.println("良好");
                      break;
                  case 'C':
                      System.out.println("及格");
                      break;
                  default:
                      System.out.println("不及格");
              }
            • 注意:case穿透问题,如果某个case分支中没有break语句,程序会继续执行下一个case分支。

          循环结构

          • while循环:是最基础的循环结构,格式为while (布尔表达式) {循环内容}

            • 示例代码:

              int count = 1;
              while (count <= 5) {
                  System.out.println("Count: " + count);
                  count++;
              }
            • 注意:避免死循环,尽量让程序能够停下来。例如,while (true)可以用于需要一直运行的场景,如服务器等待客户端连接。

          • do...while循环:即使条件不满足,也会至少执行一次循环体。

            • 示例代码:

              int j = 0;
              do {
                  System.out.println("j: " + j);
                  j++;
              } while (j < 5);

              无论初始条件如何,循环体至少会被执行一次。即使j初始化为一个不满足条件的值(比如5),循环体也会先执行一次,然后才检查条件。

          • for 循环

            • for(初始化 ;条件判断;迭代){循环体}
            • 示例代码:
              for (int k = 0; k < 3; k++) {
                  System.out.println("k: " + k);
              }
              //此循环首先初始化变量k为0,然后在每次迭代前检查k是否小于3,最后在循环体结束后递增k。
          • 增强for循环
            • for(声明语句 :表达式){代码语句}
            • 示例代码:
              String[] fruits = {"Apple", "Banana", "Cherry"};
              for (String fruit : fruits) {
                  System.out.println(fruit);
              }

              增强for循环用于遍历数组或集合中的元素。对于每个元素,都会执行一次循环体,这里它会依次打印出"Apple"、"Banana"和"Cherry"。

          • break 与 continue

            • 使用 break跳出循环
              • for (int m = 0; m < 10; m++) {
                    if (m == 3) {
                        break; // 当m等于3时,跳出循环
                    }
                    System.out.println("m: " + m);
                }
                //一旦m的值达到3,就会执行break语句,立即退出循环,因此只会打印出m从0到2的值
            • continue 终止某次循环过程
              • for (int n = 0; n < 5; n++) {
                    if (n == 2) {
                        continue; // 跳过本次循环剩余部分,继续下一次循环
                    }
                    System.out.println("n: " + n);
                }
                //当n等于2时,continue语句会导致此次循环的剩余部分被跳过,直接进入下一次循环迭代,所以输出中不会有n: 2。


          总结

          1. 运算符优先级:算术 > 关系 > 逻辑 > 赋值

          2. ==比较值,对于对象比较的是引用

          3. switch支持byte、short、char、int、String和枚举类型

          4. 增强for循环适用于数组和实现了Iterable接口的集合

          5. break可以配合标签使用跳出多层循环

          评论
          添加红包

          请填写红包祝福语或标题

          红包个数最小为10个

          红包金额最低5元

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

          抵扣说明:

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

          余额充值