到头来仍是逃不过Java - 流程控制

没有特殊说明,个人全部这个系列的Java13的笔记都是从廖老师那里摘抄、总结过来的,侵删java

引言

兜兜转转到了大四,学过了C,C++,C#,Java,Python,学一门丢一门,到了最后仍是要把Java捡起来。虽然Python好写舒服,可是毕竟不能彻底面向对象,也没有那么多的应用场景,因此,奉劝看到本文的各位,仍是提早学好C#或者Java,话很少说,这个系列,干就完了!数组

输出

  • println是print line的缩写,表示输出并换行。所以,若是输出后不想换行,能够用print()
  • 格式化输出使用System.out.printf(),经过使用占位符%?printf()能够把后面的参数格式化成指定格式
  • 因为%表示占位符,所以,连续两个%%表示一个%字符自己。
占位符 说明
%d 格式化输出整数
%x 格式化输出十六进制整数
%f 格式化输出浮点数
%e 格式化输出科学计数法表示的浮点数
%s 格式化字符串

输入

  • 导入java.util.Scanner,建立Scanner对象并传入System.inScanner会自动转换数据类型,所以没必要手动转换

if判断

  • if语句块只有一行语句时,能够省略花括号{},可是尽可能不要省略花括号,这样在版本控制系统的时候会出现问题。
  • 串联多个if时正确的方式是按照判断范围从大到小依次判断,或者从小到大判断,不要从中间范围判断。
  • if时,还要特别注意边界条件,>>=是不一样的。
  • 注意判断浮点数相等用==判断不靠谱,正确的方法是利用差值小于某一个临界值来判断。app

  • 判断引用类型相等ui

    • 在Java中,判断值类型的变量是否相等,能够使用==运算符。可是,判断引用类型的变量是否相等,==表示是否指向同一个对象,却不表示对象的值是否相同。
    • 要判断引用类型的变量值的内容是否相等,必须使用equals()方法
      • 若是使用equals()时其中一个变量是null那么会报错NullPointerException
      • 能够把一个必定不是null的变量放到前面"hello".equals(s)

switch多重选择

  • 使用switch时,注意case语句并无花括号{}3d

  • 若是有几个case语句执行的是同一组语句块,能够在执行语句前多放几个case版本控制

  • 使用switch语句时,只要保证有breakcase的顺序不影响程序逻辑code

  • 使用IDE时,能够自动检查是否漏写了break语句和default语句,方法是打开IDE的编译检查。对象

  • switch表达式blog

    • 新语法使用->,若是有多条语句,须要用{}括起来,不要写break语句
  • public class Main {
          public static void main(String[] args) {
              String fruit = "apple";
              switch (fruit) {
              case "apple" -> System.out.println("Selected apple");
              case "pear" -> System.out.println("Selected pear");
              case "mango" -> {
                  System.out.println("Selected mango");
                  System.out.println("Good choice!");
              }
              default -> System.out.println("No fruit selected");
              }
          }
      }
    • 新的switch语法,不但不须要break,还能够直接返回值。
    public class Main {
        public static void main(String[] args) {
            String fruit = "apple";
            int opt = switch (fruit) {
                case "apple" -> 1;
                case "pear", "mango" -> 2;
                default -> 0;
            }; // 注意赋值语句要以;结束
            System.out.println("opt = " + opt);
        }
    }
    • yield
      • 原本新的switch语句返回简单的值没有问题,可是若是须要复杂的语句,咱们也能够写不少语句,放到{...}里,而后,用yield返回一个值做为switch语句的返回值。

while循环

  • while循环是一个死循环,可是,Java的int类型有最大值,达到最大值后,再加1会变成负数,结果,意外退出了while循环。

do while循环

for循环

  • for (初始条件; 循环检测条件; 循环后更新计数器) {
          // 执行语句
      }
  • 使用for循环时,千万不要在循环体内修改计数器!字符串

  • 为了保证变量应该把访问范围缩到最小的原则,对于for循环中使用的i最好在循环体内定义。

  • for循环还能够缺乏初始化语句、循环条件和每次循环更新语句

  • for each循环

  • public class Main {
          public static void main(String[] args) {
              int[] ns = { 1, 4, 9, 16, 25 };
              for (int n : ns) {//注意形式,先定义数组元素n,注意这里再也不是计数器n,它对应着数组的每个元素,在循环的主语句中能够直接调用。
                  System.out.println(n);
              }
          }
      }
    • 除了数组外,for each循环可以遍历全部“可迭代”的数据类型,包括后面会介绍的ListMap

break和continue

  • 不管是while循环仍是for循环,有两个特别的语句能够使用,就是break语句和continue语句。
  • break语句老是跳出最近的一层循环。
相关文章
相关标签/搜索