Java 的分支

分支控制有三種:單分支,雙分支,多分支。

單分支

基本語法:

if (條件表達式){執行代碼塊;
}

程序示例:

import java.util.Scanner;public class If01 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.print("輸入你的年齡:");int age = sc.nextInt();if (age > 18) {System.out.println("你的年齡大于18。");}}
}

雙分支

基本語法:

if (條件表達式) {執行代碼塊1;
} else {執行代碼塊2;
}

程序示例:

import java.util.Scanner;public class If02 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.print("輸入你的年齡:");int age = sc.nextInt();if (age > 18) {System.out.println("你已經超過18歲了。");} else {System.out.println("你還未成年。");}}
}

多分支

基本語法:

if (條件表達式1) {執行代碼塊1;
} 
else if (條件表達式2) {執行代碼塊2;
}
......
else{執行代碼塊n;
}

多分支最后可以沒有 else。

如果沒有 else,當前面的所有 if 都不成立時,將什么都不執行。

switch

switch(表達式) 中的表達式數據類型要么和 case 常量中常量的類型一致,要么是可以自動類型轉換為可以進行比較的類型。

switch(表達式) 中的表達式的值的類型必須是以下類型中的一種:byte,short,int,char,enum(JKD 5 之后支持),String(JDK 7 之后支持)。

case 常量中的常量可以是常量表達式,即值為常量的表達式,如 ‘b’ + 1。case 標簽還可以是字符串或枚舉類型常量。

default 可以省略。

default 的位置隨意。

多個 case 中的值不允許重復。

case 后面如果沒有 break 將會穿透。如果多個 case 的語句體相同,則可以利用穿透來簡化代碼。

程序示例:

public static void main(String[] args) {char c = 'a';switch (c) {case 10:System.out.println("ok1");break;case 97: // 和此處匹配上System.out.println("ok2");      // 輸出 ok2break;default:System.out.println("ok3");break;}
}

程序示例:

import java.util.Scanner;public class test {public static void main(String[] args) {// 從鍵盤輸入學生成績,如果學生成績大于 60 則輸出合格,否則輸出不合格// 要求用 switch 完成System.out.println("輸入學生成績:");Scanner sc = new Scanner(System.in);int score = sc.nextInt();switch (score / 60) {case 0:System.out.println("不合格");break;case 1:System.out.println("合格");break;}}
}

程序示例:

// 這是從 JDK12 開始引入的新特性,用花括號括起來的語句可以省略 break,因為不會發生穿透現象。
public class test {public static void main(String[] args) {int number = 1;switch (number) {case 1 -> {System.out.println("一");break;}case 2 -> {System.out.println("二");break;}case 3 -> {System.out.println("三");break;}default -> {System.out.println("沒有這種選項");break;}}}
}

省略 break:

public class test {public static void main(String[] args) {int number = 1;switch (number) {case 1 -> {System.out.println("一");}case 2 -> {System.out.println("二");}case 3 -> {System.out.println("三");}default -> {System.out.println("沒有這種選項");}}}
}

用花括號括起來的語句塊只有一條語句時,可以省略花括號:

// 用花括號括起來的語句塊只有一條語句時,可以省略花括號
public class test {public static void main(String[] args) {int number = 1;switch (number) {case 1 -> System.out.println("一");case 2 -> System.out.println("二");case 3 -> System.out.println("三");default -> System.out.println("沒有這種選項");}}
}

如果多個 case 的語句體相同,則可以利用穿透來簡化代碼。未簡化的代碼:

import java.util.Scanner;public class test {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.print("請輸入星期數:");int number = sc.nextInt();switch (number) {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;}}
}

利用 case 穿透進行簡化:

import java.util.Scanner;public class test {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.print("請輸入星期數:");int number = sc.nextInt();switch (number) {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;}}
}

進一步簡化:

import java.util.Scanner;public class test {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.print("請輸入星期數:");int number = sc.nextInt();switch (number) {case 1, 2, 3, 4, 5:System.out.println("工作日");break;case 6, 7:System.out.println("休息日");break;default:System.out.println("輸入錯誤");break;}}
}

更進一步簡化:

import java.util.Scanner;public class test {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.print("請輸入星期數:");int number = sc.nextInt();switch (number) {case 1, 2, 3, 4, 5 -> System.out.println("工作日");case 6, 7 -> System.out.println("休息日");default -> System.out.println("輸入錯誤");}}
}

與所有表達式類似,switch 表達式也有一個值,可以將 switch 的結果賦值給一個變量。

程序示例:

import java.util.Scanner;public class SwitchDemo {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.print("請輸入一個季節:");String season = sc.next();int numLetters = switch (season) {case "spring", "summer", "winter" -> 6;case "fall" -> 4;default -> -1;};System.out.println(numLetters);}
}

執行結果:

請輸入一個季節:fall
4

switch 表達式中使用枚舉常量時,不需要為各個標簽提供枚舉名,這可以從 switch 值推導得出。

程序示例:

public class SwitchDemo2 {public static void main(String[] args) {enum Size {SMALL, MEDIUM, LARGE, EXTRA_LARGE};Size itemSize = Size.SMALL;String label = switch (itemSize) {case SMALL -> "S"; // no need to use Size.SMALLcase MEDIUM -> "M";case LARGE -> "L";case EXTRA_LARGE -> "XL";}; // 在這個例子中,完全可以省略 default, 因為每一個可能的值都有相應的一個 caseSystem.out.println(label);  // S}
}

使用整數或 String 操作數的 switch 表達式必須有一個 default,因為不論操作數值是什么,這個表達式都必須生成一個值。

如果操作數為 null,會拋出一個 NullPointerException。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/24508.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/24508.shtml
英文地址,請注明出處:http://en.pswp.cn/web/24508.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【JAVA WEB實用技巧與優化方案】如何通過javacore、heapdump來排查JVM線程和內存問題

文章目錄 介紹什么是javacore ? javacore可以用來做哪些分析?什么是HeapDump?一、輸出JAVACORE 和 DUMP文件1.輸出JAVACORE通過`kill -3 [pid]` 來輸出javacore通過jstack 輸出Javacore文件2.輸出 dump 文件二、javacore文件和heapdump文件的分析工具使用詳情javacore 工具i…

Cesium開發環境搭建(一)

1.下載安裝Node.js 進入官網地址下載安裝包 Node.js — Download Node.js https://cdn.npmmirror.com/binaries/node/ 選擇對應你系統的Node.js版本,這里我選擇的是Windows系統、64位 安裝完成后,WINR,輸入node --version,顯示…

React + SpringBoot實現圖片預覽和視頻在線播放,其中視頻實現切片保存和分段播放

圖片預覽和視頻在線播放 需求描述 實現播放視頻的需求時,往往是前端直接加載一個mp4文件,這樣做法在遇到視頻文件較大時,容易造成卡頓,不能及時加載出來。我們可以將視頻進行切片,然后分段加載。播放一點加載一點&am…

tcp aimd 窗口的推導

舊事重提,今天用微分方程的數值解觀測 tcp aimd 窗口值。 設系統 AI,MD 參數分別為 a 1,b 0.5,丟包率由 buffer 大小,red 配置以及線路誤碼率共同決定,設為 p,窗口為 W,則有&…

云原生技術助力某國際化商業集團打造數字化轉型新引擎

某國際化商業集團(以下簡稱:集團),成立于1988年,現已發展成為擁有總資產800多億元,員工13000多人,涵蓋港口碼頭、石油化工、國際貿易等產業于一體的國際化現代化企業集團,連續多年進…

HAL STM32F1 通過查表方式實現SVPWM驅動無刷電機測試

HAL STM32F1 通過查表方式實現SVPWM驅動無刷電機測試 📍相關篇《基于開源項目HAL STM32F4 DSP庫跑SVPWM開環速度測試》 ?針對STM32F1系列,沒有專門的可依賴的DSP庫,為了實現特定函數的浮點運算快速計算,通過查表方式來實現&#…

番外篇 | 利用華為2023最新Gold-YOLO中的Gatherand-Distribute對特征融合模塊進行改進

前言:Hello大家好,我是小哥談。論文提出一種改進的信息融合機制Gather-and-Distribute (GD) ,通過全局融合多層特征并將全局信息注入高層,以提高YOLO系列模型的信息融合能力和檢測性能。通過引入MAE-style預訓練方法,進一步提高模型的準確性。?? 目錄 ??1.論文解…

如何解鎖植物大戰僵尸雜交版v2.0.88所有植物

如何解鎖植物大戰僵尸雜交版v2.0.88所有植物 前言安裝相關軟件快速解鎖方法 前言 經過探索植物大戰僵尸雜交版植物解鎖和關卡有關,所以通過所有關卡就可以解鎖所有植物。 安裝相關軟件 1.安裝植物大戰僵尸 2.安裝Hex Editor Neo 快速解鎖方法 本文參考如何修改…

<vs2022><問題記錄>visual studio 2022使用console打印輸出時,輸出窗口不顯示內容

前言 本文為問題記錄。 問題概述 在使用visual studio 2022編寫代碼時,如C#,在代碼中使用console.writeline來打印某些內容,以便于觀察,但發現輸出窗口不顯示,而代碼是完全沒有問題的。 解決辦法 根據網上提供的辦法…

深入解析力扣183題:從不訂購的客戶(LEFT JOIN與子查詢方法詳解)

在本篇文章中,我們將詳細解讀力扣第183題“從不訂購的客戶”。通過學習本篇文章,讀者將掌握如何使用SQL語句來解決這一問題,并了解相關的復雜度分析和模擬面試問答。每種方法都將配以詳細的解釋,以便于理解。 問題描述 力扣第18…

Java Web學習筆記23——Vue項目簡介

Vue項目簡介: Vue項目-創建: 命令行:vue create vue-project01 圖形化界面:vue ui 在命令行中切換到項目文件夾中,然后執行vue ui命令。 只需要路由功能。這個路由功能,開始不是很理解。 創建項目部保存…

html+css示例

HTML HTML(超文本標記語言)和CSS(層疊樣式表)是構建和設計網頁的兩種主要技術。HTML用于創建網頁的結構和內容,而CSS用于控制其外觀和布局。 HTML基礎 HTML使用標簽來標記網頁中的不同部分。每個標簽通常有一個開始…

【原創】海為PLC與RS-WS-ETH-6傳感器的MUDBUS_TCP通訊

點擊“藍字”關注我們吧 一、關于RS-WS-ETH-6傳感器的準備工作 要完成MODBUS_TCP通訊,我們必須要知道設備的IP地址如何分配,只有PLC和設備的IP在同一網段上,才能建立通訊。然后還要選擇TCP的工作模式,來建立設備端和PC端的端口號。接下來了解設備的報文格式,方便之后發送…

前端:快捷 復制chrome 控制臺打印出來的 數組對象

程序中console.log出來的對象。按照以下步驟操作 1.右鍵點擊需要處理的對象,會出現Store as global variable,點擊 2.點擊 Store as global variable 控制臺會出現 3.在控制臺 輸入 copy(temp1) 這樣對象就復制到了你的黏貼面板里面 在代碼中直接 c…

基于STM32開發的智能語音控制系統

目錄 引言環境準備智能語音控制系統基礎代碼實現:實現智能語音控制系統 4.1 語音識別模塊數據讀取4.2 設備控制4.3 實時數據監控與處理4.4 用戶界面與反饋顯示應用場景:語音控制的家居設備管理問題解決方案與優化收尾與總結 1. 引言 隨著人工智能技術…

Vuepress 2從0-1保姆級進階教程——標準化流程

Vuepress 2 專欄目錄 1. 入門階段 Vuepress 2從0-1保姆級入門教程——環境配置篇Vuepress 2從0-1保姆級入門教程——安裝流程篇Vuepress 2從0-1保姆級入門教程——文檔配置篇Vuepress 2從0-1保姆級入門教程——范例與部署 2.進階階段 Vuepress 2從0-1保姆級進階教程——全文搜索…

Inpaint9.1軟件下載附加詳細安裝教程

軟件簡介: Inpaint 是個人開發者Max開發的圖片處理軟件,可以高效去除水印,修復照片等。使用方法和操作都很簡單,非常適合不會PS等軟件的小白用戶。 安 裝 包 獲 取 地 址: Iinpaint win版:??https://souurl.cn/b…

了解JVM中的Server和Client參數

了解JVM中的Server和Client參數 Java虛擬機(Java Virtual Machine,JVM)作為Java程序運行的核心,提供了多種參數來優化和調整程序的性能和行為。其中,-server和-client是兩個重要的參數,分別用于配置JVM在服…

【Android面試八股文】synochnized修飾普通方法和靜態方法的區別?什么是原子性、可見性、有序性?

文章目錄 synochnized修飾普通方法和靜態方法的區別?什么是原子性、可見性、有序性?這道題想考察什么 ?考察的知識點考生應該如何回答synchronized 的基本原理synchronized 修飾普通方法和靜態方法的區別synchronized定義同步代碼塊synochnized修飾普通方法和靜態方法的區別…

微生物共生與致病性:動態變化與識別挑戰

谷禾健康 細菌耐藥性 抗生素耐藥性細菌感染的發生率正在上升,而新抗生素的開發由于種種原因在制藥行業受重視程度下降。 最新在《柳葉刀-微生物》(The Lancet Microbe)上,科學家提出了基于細菌適應性、競爭和傳播的生態原則的跨學…