網站首頁 編程語言 正文
switch多選擇結構
多選擇結構還有一個實現方式就是switch case語句
switch case語句判斷一個變量與一系列值中某個值是否相等,每個值稱為一個分支。
switch語句中的變量類型可以是:
switch(expression){
? ?case value:
? ? ? ?//語句
? ? ? ?break;//可選
? ?case value:
? ? ? ?//語句
? ? ? ?break;//可選
? ?//你可以有任意數量的case語句
? ?default://可選
? ? ? ?//語句
}
byte、short、int或者char
從Java SE 7開始
switch 支持字符串 String 類型了
同時case標簽必須為字符串常量或字面量
public static void main(String[] args) {
? ? ? ?//case穿透 //switch 匹配一個具體的值
? ? ? ?char grade = 'B';
?
? ? ? ?switch (grade){
? ? ? ? ? ?case 'A':
? ? ? ? ? ? ? ?System.out.println("優秀");
? ? ? ? ? ? ? ?break;//可選
? ? ? ? ? ?case 'B':
? ? ? ? ? ? ? ?System.out.println("良好");
? ? ? ? ? ? ? ?break;//可選
? ? ? ? ? ?case 'C':
? ? ? ? ? ? ? ?System.out.println("及格");
? ? ? ? ? ? ? ?break;//可選
? ? ? ? ? ?case 'D':
? ? ? ? ? ? ? ?System.out.println("再接再厲");
? ? ? ? ? ? ? ?break;//可選
? ? ? ? ? ?case 'E':
? ? ? ? ? ? ? ?System.out.println("掛科");
? ? ? ? ? ? ? ?break;//可選
? ? ? ? ? ?default:
? ? ? ? ? ? ? ?System.out.println("未知等級");
? ? ? }
? }
?
//輸出結果
良好
public static void main(String[] args) {
? ? ? ?String name = "曹炎兵";
? ? ? ?//JDK7的新特性,表達式結果可以是字符串!!!
? ? ? ?//字符的本質還是數字
?
? ? ? ?switch (name){
? ? ? ? ? ?case "曹炎兵":
? ? ? ? ? ? ? ?System.out.println("這條街我說了算!");
? ? ? ? ? ? ? ?break;
? ? ? ? ? ?case "曹玄亮":
? ? ? ? ? ? ? ?System.out.println("下輩子你當哥哥,我當弟弟!");
? ? ? ? ? ? ? ?break;
? ? ? ? ? ?default:
? ? ? ? ? ? ? ?System.out.println("你找錯人了!");
? ? ? }
? }
循環結構
while循環
do...while循環
for循環
在Java5中引入了一種主要用于數組的增強型for循環
while循環
while是最基本的循環,它的結構為:
while(布爾表達式) {
? ?//循環內容
}
只要布爾表達式為true,循環就會一直執行下去。
我們大多數情況是會讓循環停止下來的,我們需要一個讓表達式失效的方式來結束循環。
少部分情況需要循環一直執行,比如服務器的請求響應監聽等。
循環條件一直為true就會造成無限循環【死循環】,我們正常的業務編程中應該盡量避免死循環。會影響程序性能或者造成程序卡死崩潰!
思考:計算1+2+3+...+10=?
public static void main(String[] args) {
? ? ? ?
? ? ? ?//輸出1~100
? ? ? ?int i = 0;
? ? ? ?
? ? ? ?while (i < 100) {
? ? ? ? ? ?i++;
? ? ? ? ? ?System.out.println(i);
? ? ? }
? }
public static void main(String[] args) {
? ? ? ?//死循環
? ? ? ?while (true){
? ? ? ? ? ?//等待客戶端連接
? ? ? ? ? ?//定時檢查
? ? ? ? ? ?//...
? ? ? }
? }
public static void main(String[] args) {
? ? ? ?//計算1+2+3+...+100=?
?
? ? ? ?//高斯的故事
? ? ? ?int i = 0;
? ? ? ?int sum = 0;
?
? ? ? ?while (i <= 100) {
? ? ? ? ? ?sum = sum + i;
? ? ? ? ? ?i++;
? ? ? }
? ? ? ?System.out.println(sum);
? }
?
//輸出結果
5050
do...while循環
對于while語句而言,如果不滿足條件,則不能進入循環。但有時候我們需要即使不滿足條件,也至少執行一次。
do...while 循環和while循環相似,不同的是,do...while循環至少執行一次。
do{
? ?//代碼語句
}while(布爾表達式);
while和do-while的區別:
while先判斷后執行。do-while是先執行后判斷!
do-while總是保證循環體會被至少執行一次!這是他們的主要差別。
public static void main(String[] args) {
? ? ? ?int i = 0;
? ? ? ?int sum = 0;
?
? ? ? ?do {
? ? ? ? ? ?sum = sum + i;
? ? ? ? ? ?i++;
? ? ? }while (i <= 100);
?
? ? ? ?System.out.println(sum);
? }
?
//輸出結果
5050
public static void main(String[] args) {
? ? ? ?int a = 0;
? ? ? ?while (a < 0) {
? ? ? ? ? ?System.out.println(a);
? ? ? ? ? ?a++;
? ? ? }
? ? ? ?System.out.println("====================");
? ? ? ?do {
? ? ? ? ? ?System.out.println(a);
? ? ? ? ? ?a++;
? ? ? }while (a < 0);
? }
?
//輸出結果
====================
0
?
Process finished with exit code 0
每日Java面試題
1.static關鍵字有什么用?
static代表"靜態"的意思,可以用來修飾:
靜態內部類(靜態內部類可以不依賴外部類實例對象而被實例化,而內部類需要在外部類實例化后才能被實例化)
靜態方法(靜態方法屬于類方法,不需要實例化對象就可以調用)
靜態變量(靜態變量屬于類,不需要實例化對象就能調用)
靜態代碼塊(靜態代碼塊只會在類被加載時執行且執行一次)
使用示例代碼如下:
public class Test1 {
?
? ?static {
? ? ? ?System.out.println("靜態代碼塊");
? }
? ?
? ?static class Test2 {
? ? ? ?
? }
? ?
? ?private static int id = 0;
? ?
? ?public static void staticMethod() {
? ? ? ?
? }
}
2.static變量和普通變量的區別?
所屬目標不同
靜態變量屬于類的變量,普通變量屬于對象的變量。
存儲區域不同
靜態變量存儲在方法區的靜態區,普通變量存儲在堆區。
另外:JDK7及以上,靜態變量存儲在其對應的Class對象中,而Class對象和其他普通對象一樣,都存儲在堆中的。
加載時間不同
靜態變量是隨著類的加載而加載,隨著類的消失而消失。
普通變量隨著對象的加載而加載,隨著對象的消失而消失
調用方式不同
靜態變量只能通過類名、對象調用,普通變量只能通過對象調用。
3.Java中final、finally、finalize的區別與用法
final
final是一個修飾符也是一個關鍵字
被final修飾的類無法被繼承
-
對于一個final變量,如果是基本數據類型的變量,則其數值一旦在初始化之后便不能更改;
如果是引用類型的變量,則在對其初始化之后便不能再讓其指向另一個對象。但是它指向的對象的內容是可變的。
-
被final修飾的方法將無法被重寫,但允許重載
注意:類的private方法會隱式地被指定為final方法。
-
finally
finally是一個關鍵字
finally在異常處理時提供finally塊來執行任何清除操作。不管有沒有異常被拋出或者捕獲,finally塊都會執行,通常用于釋放資源。
-
finally塊正常情況下一定會被執行。但是有至少兩個極端情況:
如果對應的try塊沒有執行,則這個try塊的finally快并不會被執行
如果在try塊中jvm關機,例如system.exit(n),則finally塊也不會執行(都拔電源了,怎么執行)
finally塊中如果有return語句,則會覆蓋try或者catch中的return語句,導致二者無法return,所以強烈建議finally塊中不要存在return關鍵字。
finalize
finalize()是Object類的protected方法,子類可以覆蓋該方法以實現資源清理工作。
GC在回收對象之前都會調用該方法
finalize()方法是存在很多問題的:
Java語言規范并保證finalize方法會被及時地執行,更根本不會保證它們一定會執行
finalize()方法可能帶來性能問題,因為JVM通常在單獨的低優先級線程中完成finalize的執行
finalize()方法中,可將待回收對象賦值給GC Roots可達的對象引用,從而達到對象再生的目的
finalize方法最多由GC執行一次(但可以手動調用對象的finalize方法)
原文鏈接:https://www.cnblogs.com/cuijiuba/p/17000551.html
相關推薦
- 2022-10-19 R語言安裝以及手動安裝devtools的詳細圖文教程_R語言
- 2022-06-14 ASP.NET?Core?MVC中的布局(Layout)_基礎應用
- 2022-11-12 C語言數據結構之單鏈表的查找和建立_C 語言
- 2022-06-19 C#中的checksum計算公式_C#教程
- 2022-08-17 python+pytest接口自動化之session會話保持的實現_python
- 2022-12-15 詳解Golang如何比較兩個slice是否相等_Golang
- 2022-11-13 linux?shell腳本學習指南_linux shell
- 2022-09-26 android Recycleview的側滑點擊刪除功能實現
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支