【Java】巩固基础,温故知新——程序逻辑控制(二)

简介: 前言C语言里已经学过程序逻辑控制,Java里的程序逻辑控制与C里的大致相同,只有一些细微之处不一样,不过学习最主要的是抱有一个空杯心态,在C里学过了,现在学Java再学一遍又有何妨呢?说不定还能获得更深层次的理解~

⭐switch语句⭐

敲重点:

switch括号里的条件只有 整数|枚举|字符|字符串

基本语法

switch(整数|枚举|字符|字符串){
case 内容1 : {
   内容满足时执行语句;
   break;
   }
   case 内容2 : {
   内容满足时执行语句;
   break;
   }
   default:{
    内容都不满足时执行语句;
   break;
   } 
}

代码示例: 根据 day 的值输出星期


int day = 1;
switch(day) {
  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; }

根据 switch 中值的不同, 会执行对应的 case 语句. 遇到 break 就会结束该 case 语句.
如果 switch 中的值没有匹配的 case, 就会执行 default 中的语句.
我们建议一个 switch 语句最好都要带上 default.

注意事项1 break 不要遗漏, 否则会失去 “多分支选择” 的效果

d6d1583b128b4f14ad299b68c8828c74.png

int day = 1;
switch(day) {
   case 1:
       System.out.println("星期一");
       // break;
   case 2:
      System.out.println("星期二");
       break; }
// 运行结果
星期一
星期二

我们发现, 不写 break 的时候, case 语句会依次向下执行, 从而失去了多分支的效果.

注意事项2 switch 中的值只能是 整数|枚举|字符|字符串

double num = 1.0;
switch(num) {
 case 1.0:
   System.out.println("hehe");
     break;
   case 2.0:
  System.out.println("haha");
    break; }
// 编译出错
Test.java:4: 错误: 不兼容的类型: 从double转换到int可能会有损失
switch(num) {
                   ^ 1 个错误

注意事项3 switch 不能表达复杂的条件

// 例如: 如果 num 的值在 10 到 20 之间, 就打印 hehe
// 这样的代码使用 if 很容易表达, 但是使用 switch 就无法表示. 
if (num > 10 && num < 20) {
System.out.println("hehe");
}

注意事项4 switch 虽然支持嵌套, 但是很丑~

int x = 1; 
int y = 1; 
switch(x) { 
case 1: 
switch(y) { 
case 1: 
System.out.println("hehe"); 
break; 
} 
break; 
case 2: 
System.out.println("haha"); 
break; 
} 

代码的美观程度也是一个重要的标准. 毕竟这是看脸的世界.
综上, 我们发现, switch 的使用局限性是比较大的

🗽循环结构🗽

⭐while循环⭐

基本语法格式:

while(循环条件){ 
循环语句; 
}

和if类似循环条件是一个布尔类型(非true即false),若为 true, 则执行循环语句; 否则结束循环.

代码示例1: 打印 1 - 10 的数字

int num = 1; 
while (num <= 10) { 
System.out.println(num); 
num++; 
}

代码示例2: 计算 1 - 100 的和

int n = 1; 
int result = 0; 
while (n <= 100) { 
result += n; 
n++; 
} 
System.out.println(num); 
// 执行结果
5050 

代码示例3: 计算 5 的阶乘

int n = 1; 
int result = 1; 
while (n <= 5) { 
result *= n; 
n++; 
} 
System.out.println(num); 
// 执行结果
120 

代码示例4: 计算 1! + 2! + 3! + 4! + 5!

int num = 1; 
int sum = 0; 
// 外层循环负责求阶乘的和
while (num <= 5) { 
int factorResult = 1; 
int tmp = 1; 
// 里层循环负责完成求阶乘的细节. 
while (tmp <= num) { 
factorResult *= tmp; 
tmp++; 
} 
sum += factorResult; 
num++; 
} 
System.out.println("sum = " + sum); 

这里我们发现, 当一个代码中带有多重循环的时候
代码的复杂程度就大大提高了
而比较复杂的代码就更容易出错.
不建议无限套娃

注意事项

1. 和 if 类似, while 下面的语句可以不写 { } , 但是不写的时候只能支持一条语句. 建议还是加上 { }

2. 和 if 类似, while 后面的 { 建议和 while 写在同一行.

3. 和 if 类似, while 后面不要多写 分号, 否则可能导致循环不能正确执行.

错误案例

int num = 1; 
while (num <= 10); { 
System.out.println(num); 
num++; 
} 
// 执行结果
[无任何输出, 程序死循环] 

此时 ; 为 while 的语句体(这是一个空语句), 实际的 { } 部分和循环无关. 此时循环条件 num <= 10 恒成立, 导致代码死循环了.


相关文章
|
3月前
|
Java 流计算
利用java8 的 CompletableFuture 优化 Flink 程序
本文探讨了Flink使用avatorscript脚本语言时遇到的性能瓶颈,并通过CompletableFuture优化代码,显著提升了Flink的QPS。文中详细介绍了avatorscript的使用方法,包括自定义函数、从Map中取值、使用Java工具类及AviatorScript函数等,帮助读者更好地理解和应用avatorscript。
利用java8 的 CompletableFuture 优化 Flink 程序
|
4月前
|
XML 存储 JSON
Java程序部署
Java程序部署
|
2月前
|
IDE Java 编译器
开发 Java 程序一定要安装 JDK 吗
开发Java程序通常需要安装JDK(Java Development Kit),因为它包含了编译、运行和调试Java程序所需的各种工具和环境。不过,某些集成开发环境(IDE)可能内置了JDK,或可使用在线Java编辑器,无需单独安装。
85 1
|
3月前
|
存储 缓存 Java
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
这篇文章详细介绍了Java中的IO流,包括字符与字节的概念、编码格式、File类的使用、IO流的分类和原理,以及通过代码示例展示了各种流的应用,如节点流、处理流、缓存流、转换流、对象流和随机访问文件流。同时,还探讨了IDEA中设置项目编码格式的方法,以及如何处理序列化和反序列化问题。
95 1
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
|
2月前
|
SQL 安全 Java
Java 异常处理:筑牢程序稳定性的 “安全网”
本文深入探讨Java异常处理,涵盖异常的基础分类、处理机制及最佳实践。从`Error`与`Exception`的区分,到`try-catch-finally`和`throws`的运用,再到自定义异常的设计,全面解析如何有效管理程序中的异常情况,提升代码的健壮性和可维护性。通过实例代码,帮助开发者掌握异常处理技巧,确保程序稳定运行。
47 0
|
3月前
|
Java Maven 数据安全/隐私保护
如何实现Java打包程序的加密代码混淆,避免被反编译?
【10月更文挑战第15天】如何实现Java打包程序的加密代码混淆,避免被反编译?
349 2
|
3月前
|
安全 Java Linux
java程序设置开机自启
java程序设置开机自启
173 1
|
3月前
|
运维 Java Linux
【运维基础知识】Linux服务器下手写启停Java程序脚本start.sh stop.sh及详细说明
### 启动Java程序脚本 `start.sh` 此脚本用于启动一个Java程序,设置JVM字符集为GBK,最大堆内存为3000M,并将程序的日志输出到`output.log`文件中,同时在后台运行。 ### 停止Java程序脚本 `stop.sh` 此脚本用于停止指定名称的服务(如`QuoteServer`),通过查找并终止该服务的Java进程,输出操作结果以确认是否成功。
88 1
|
3月前
|
Java C语言
【一步一步了解Java系列】:探索Java逻辑控制
【一步一步了解Java系列】:探索Java逻辑控制
31 1
|
4月前
|
安全 Java API
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
String常量池、String、StringBuffer、Stringbuilder有什么区别、List与Set的区别、ArrayList和LinkedList的区别、HashMap底层原理、ConcurrentHashMap、HashMap和Hashtable的区别、泛型擦除、ABA问题、IO多路复用、BIO、NIO、O、异常处理机制、反射