「Java流程控制」switch結構

知識點解析

1.switch結構的核心概念
switch語句是一種多分支選擇結構,它根據表達式的值來選擇執行不同的代碼塊。與if-else結構相比,switch更適合處理離散的、有限個值的比較。

2.switch結構的基本語法

switch (表達式) {case1:// 代碼塊1[break;]case2:// 代碼塊2[break;]...[default:// 默認代碼塊]
}

3.switch結構的特點

  • 表達式類型:可以是byteshortcharintString(Java 7+)、枚舉類型。
  • case值:必須是常量表達式,且不能重復。
  • break語句:用于跳出switch結構,防止"程序穿透"。
  • default語句:可選,用于處理所有未匹配的情況。

4. switch結構的執行流程

  1. 計算表達式的值
  2. 將表達式的值與每個case值進行比較
  3. 找到匹配的case后,執行對應的代碼塊
  4. 如果遇到break語句,則跳出整個switch結構
  5. 如果沒有匹配的case,則執行default代碼塊(如果有)

5. switch結構的注意事項

  • case值必須是常量表達式(final變量或字面量)
  • case值不能重復
  • break語句是可選的,但通常需要
  • default語句是可選的,但建議保留

6.switch與if-else的區別

  • switch:適用于離散的、有限個值的比較,代碼更清晰。
  • if-else:適用于范圍判斷或復雜條件判斷。

案例解析

案例:基本switch結構

public class SwitchExample1 {public static void main(String[] args) {int day = 3;String dayName;switch (day) {case 1:dayName = "星期一";break;case 2:dayName = "星期二";break;case 3:dayName = "星期三";break;case 4:dayName = "星期四";break;case 5:dayName = "星期五";break;case 6:dayName = "星期六";break;case 7:dayName = "星期日";break;default:dayName = "無效的日期";}System.out.println("今天是:" + dayName);}
}

運行結果

今天是:星期三

代碼解析

  • Java源文件保存為“SwitchExample1.java”。
  • 定義變量day并賦值為3。
  • 使用switch結構根據day的值輸出對應的星期名稱。
  • day為3時,匹配case 3,輸出"星期三"。

案例:switch穿透

public class SwitchFallThrough {public static void main(String[] args) {int number = 2;String result;switch (number) {case 1:case 2:case 3:result = "小數字";break;case 4:case 5:case 6:result = "中數字";break;default:result = "大數字";}System.out.println("數字分類:" + result);}
}

運行結果

數字分類:小數字

代碼解析

  • Java源文件保存為“SwitchFallThrough.java”。
  • 定義變量number并賦值為2。
  • 使用switch結構實現穿透(fall-through),多個case共享同一段代碼。
  • number為2時,匹配case 2,由于沒有break,繼續執行case 3的代碼,最終輸出"小數字"。

案例:String類型的switch

import java.util.Scanner;public class StringSwitchExample {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);System.out.print("請輸入顏色(red/green/blue):");String color = scanner.nextLine();switch (color) {case "red":System.out.println("紅色代表熱情");break;case "green":System.out.println("綠色代表生機");break;case "blue":System.out.println("藍色代表寧靜");break;default:System.out.println("未知顏色");}}
}

運行結果

請輸入顏色(red/green/blue):red
紅色代表熱情

代碼解析

  • Java源文件保存為“StringSwitchExample.java”。
  • 使用Scanner獲取用戶輸入的顏色字符串。
  • 使用String類型的switch結構根據顏色輸出對應的描述。
  • 當輸入"green"時,輸出"紅色代表熱情"。

案例:枚舉類型的switch

enum Season {SPRING, SUMMER, AUTUMN, WINTER
}public class EnumSwitchExample {public static void main(String[] args) {Season currentSeason = Season.SUMMER;String description;switch (currentSeason) {case SPRING:description = "萬物復蘇";break;case SUMMER:description = "烈日炎炎";break;case AUTUMN:description = "碩果累累";break;case WINTER:description = "白雪皚皚";break;default:description = "未知季節";}System.out.println(&#

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

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

相關文章

從0開始學習R語言--Day27--空間自相關

有的時候,我們在數據進行分組時,會發現用正常的聚類分析的方法和思維,分組的情況不是很理想。其實這是因為我們常常會忽略一個問題:假設我們正在分析的數據是真實的,那么它也肯定在一定程度上符合客觀規律。而如果我們…

Excel將表格文件由寬數據轉為長數據的方法

本文介紹基于Excel軟件的Power Query模塊,實現表格數據由寬數據轉為長數據的具體方法。 長數據和寬數據是數據分析中的2種基本數據組織形式,二者在結構、用途、適用場景等方面各有特點。其中,寬數據 (Wide Format)以“…

SpringAI + DeepSeek大模型應用開發 - 入門篇

三、SpringAI Spring AILangChain4jChat支持支持Function支持支持RAG支持支持對話模型1515向量模型1015向量數據庫1520多模態模型51JDK178 1. 對話機器人 1.1 快速入門 步驟①:引入依賴(先去掉openai的starter依賴,因為要配置API_KEY&#…

ROS docker使用顯卡驅動rviz gazebo,以及接入外設和雷達

ROS docker使用顯卡驅動rviz gazebo,以及接入外設和雷達 由于我的電腦裝ubuntu22.04系統,想使用ros noetic開發,使用魚香ros一鍵安裝docker安裝。但是啟動dockek中rviz無法使用顯卡驅動,usb相機端口不顯示,網口雷達無…

ruoyi后端框架的mapper層復雜字段數據獲取問題

背景。如下是復雜字段。需要在mapper.java類注解中聲明autoResultMap true才會進行處理。前提是,創建后端程序代碼沒有添加mapp.xml文件。故用注解簡化代替。

產品推薦|一款具有單光子級探測能力的科學相機千眼狼Gloria 1605

在生命科學超分辨率成像、量子物理單光子探測、交叉領域單分子追蹤等應用場景中,具有單光子級探測能力的科學相機是科學實驗的關鍵設備。 千眼狼Gloria 1605采用16μm16μm大像元尺寸設計,基于Gpixel科學級背照式CMOS芯片,集成千眼狼底層圖像…

JS.Day2-堆選(Py)/三路快排-快速選擇-215,11,560,21,128,20,121

目錄 215.找第k大元素 三路的快速排序 快速選擇 法2.堆選 (堆排序) 11.盛更多水的容器 代碼1 代碼2 560.和為K的子數組(題意!) 慣性思維 正解 21.合并生序鏈表 遞歸寫法 128.最長連續序列 20.有效的括號…

第8章 處理幾何圖形 面向 ArcGIS的Python腳本編程

一、折點坐標(.txt 或 .xlsx 或 .xls) > 點線面圖層(.shp) (一).xlsx 或 .xls > .shp 新建一個文件夾,連接到該文件夾,并將其設置為工作空間 在該文件夾下,新建一個pts.xlsx的文件,并輸入下圖內容 …

使用(h3.js)繪制六角網格碼

今天來記錄一篇關于h3.js插件庫的使用,他可以很高效的計算出地球上某個經緯度坐標六邊形頂點。 前段時間領導突然給我個售前功能,要求是使用h3.js插件在地球上繪制出六邊形網格碼,本來以為挺棘手的,結果看完文檔后發現也挺簡單的…

GO 1.25

Go 1.25 發布說明(草案) Go 1.25 尚未發布。 本文檔是正在編寫中的發布說明。Go 1.25 預計于 2025 年 8 月發布。 語言變更 Go 1.25 中沒有影響 Go 程序的語法變更。然而,在語言規范中,“核心類型”(core types&…

解析Android SETUP_DATA_CALL 鏈路信息字段

Android 對象返回的log信息經常都不是標準的JSON字符串,排查字段不直觀,比如下面的日志: 06-13 15:56:36.204 8076 8407 D RILJ : [1655]> SETUP_DATA_CALL,reason=NORMAL,accessNetworkType=EUTRAN,dataProfile=[DataProfile=[ApnSetting] IMS, 2318, 310260, ims,…

跨語言RPC:使用Java客戶端調用Go服務端的HTTP-RPC服務

在構建分布式系統時,實現不同編程語言之間的無縫通信是一個常見的需求。本文將詳細介紹如何使用Go語言創建一個HTTP-RPC服務,并通過Java客戶端進行遠程調用。我們將探索整個過程,包括服務端的實現、客戶端的編寫以及測試驗證。 一、背景介紹…

CVPR2024遷移學習《Unified Language-driven Zero-shot Domain Adaptation》

摘要 本文提出了一個名為 Unified Language-driven Zero-shot Domain Adaptation(ULDA)的新任務設置,旨在使單一模型能夠適應多種目標領域,而無需明確的領域標識(domain-ID)知識。現有語言驅動的零樣本領域…

AI安全風險監測平臺:全周期防護體系構建

AI安全風險監測平臺通過構建全生命周期防護體系,實現對人工智能系統研發、部署、運行、迭代各階段的安全風險動態監測。該平臺融合算法審計、行為分析、合規驗證等核心能力,建立覆蓋模型安全、數據安全、應用安全的立體防御網絡,為智能系統提…

數據集-目標檢測系列- 杯子 數據集 bottle >> DataBall

數據集-目標檢測系列- 杯子 數據集 bottle >> DataBall 貴在堅持! * 相關項目 1)數據集可視化項目:gitcode: https://gitcode.com/DataBall/DataBall-detections-100s/overview 2)數據集訓練、推理相關…

視頻點播web端AI智能大綱(自動生成視頻內容大綱)的代碼與演示

通過AI技術將視頻課程自動生成結構化大綱和摘要,支持PPT教學視頻、企業內訓等場景應用。核心功能包括:自動匹配視頻知識點生成文本大綱、快速內容定位、降低課程制作成本。系統采用模塊化架構,包含Vue2.7前端組件、JS邏輯庫和演示項目&#x…

Linux: errno: EINPROGRESS-115

在connect接口的使用說明里,有這個錯誤:EINPROGRESS。 The socket is nonblocking and the connection cannot be completed immediately. It is possible to select(2) or poll(2) for completion by selecting the socket for writing. After select(2…

Node.js特訓專欄-基礎篇:3. Node.js內置模塊的使用

🔥 歡迎來到 Node.js 實戰專欄!在這里,每一行代碼都是解鎖高性能應用的鑰匙,讓我們一起開啟 Node.js 的奇妙開發之旅! Node.js 特訓專欄主頁 Node.js內置模塊:強大功能的基石 在Node.js的世界里&#xff…

基于MATLAB實現的Capon、MUSIC、ESPRIT和PM算法進行DOA

使用Capon、MUSIC、ESPRIT和PM多種算法進行doa估計,通過譜峰搜索函數估計到達角,并使用蒙特卡洛方法估計各算法的RMSE。(可能計算時間較長,如需節省時間可以減小蒙特卡洛次數) PM.m , 574 RMSE.m , 274 TLS_ESPRIT.m …

某網站極驗4滑塊驗證碼逆向分析

文章目錄 1. 寫在前面2. 接口分析3. w逆向分析4. JSON參數分析5. 距離識別6. RSA純算還原7. AES純算還原【??作者主頁】:吳秋霖 【??作者介紹】:擅長爬蟲與JS加密逆向分析!Python領域優質創作者、CSDN博客專家、阿里云博客專家、華為云享專家。一路走來長期堅守并致力于…