Java基礎:Java流程控制

塊(即復合語句)是指由一對大括號括起來的若干條簡單的 Java 語句。塊確定了變量的作用域。一個塊可以嵌套在另一個塊中。但是,不能在嵌套的兩個塊中聲明同名的變量。使用塊(有時稱為復合語句)可以在Java程序結構中原本只能放置一條(簡單)語句的地方放置多條語句。

本篇主要記錄內容包括:塊作用域、分支結構、循環語句與、中斷控制流程語句


  • 上一篇內容:Java基礎:Java數字類型
  • 下一篇內容:Java基礎:Java類與對象
  • 更多知識學習:全網最全的 Java 技術棧內容梳理(持續更新中)

文章目錄

    • 一、Java 代碼塊
        • 1、塊作用域
        • 2、代碼塊分類
        • 3、構造方法與代碼塊執行順序
    • 二、Java 分支結構
        • 1、條件語句
        • 2、多重選擇:switch語句
        • 3、三元運算符
    • 三、Java 循環語句
        • 1、while 循環語句與 do-while 語句
        • 2、for 循環語句
        • 3、foreach 循環語句
    • 四、Java 中斷控制流程語句


一、Java 代碼塊

1、塊作用域

塊(即復合語句)是指由一對大括號括起來的若干條簡單的 Java 語句。塊確定了變量的作用域。一個塊可以嵌套在另一個塊中。但是,不能在嵌套的兩個塊中聲明同名的變量。

Ps:在 C++ 中,可以在嵌套的塊中重定義一個變量。在內層定義的變量會覆蓋在外層定義的變量。這樣,有可能會導致程序設計錯誤,因此在 Java 中不允許這樣做。

有名字的代碼塊—— if-else 代碼塊,for 循環代碼塊,main 方法代碼塊。代碼塊也叫體,比如 for 循環體,main 方法體。

2、代碼塊分類

根據代碼塊位置和聲明的不同,可以分為局部代碼塊,構造代碼塊,靜態代碼塊和同步代碼塊:

  • 局部代碼塊:類中方法的方法體,局部代碼塊是定義在方法或語句中,方法和類都是以代碼塊的方式劃定邊界的;
  • 構造代碼塊:定義在類中成員位置,方法之外的代碼塊,構造代碼塊會在創建對象時被調用,每次創建時都會被調用,優先于類構造函數執行。特點:①優先于構造方法執行,構造代碼塊用于執行所有對象均需要的初始化動作;②每創建一個對象均會執行一次構造代碼塊;
  • 靜態代碼塊:用static{}包裹起來的代碼片段,只會執行一次,靜態代碼塊優先于構造塊執行。特點:①靜態代碼塊是定義在成員位置,方法之外,使用static修飾的代碼塊;②它優先于主方法執行、優先于構造代碼塊執行,在類加載時執行;③該類不管創建多少對象,靜態代碼塊只執行一次;④可用于給靜態變量賦值,用來給類進行初始化;
  • 同步代碼塊:當線程開始執行同步代碼塊前,必須先獲得對同步代碼塊的鎖定,并且任何時刻只能有一個線程可以獲得對同步監視器的鎖定,當同步代碼塊執行完成后,該線程會釋放對該同步監視器的鎖定。

特點:①使用synchronized(){}包裹起來的代碼塊;②在多線程環境下,對共享數據的讀寫操作是需要互斥進行的,否則會導致數據的不一致性;③同步代碼塊需要寫在方法中。

3、構造方法與代碼塊執行順序

B構造函數、父類B靜態代碼塊、父類B非靜態代碼塊、子類A構造函數、子類A靜態代碼塊、子類A非靜態代碼塊執行的先后順序是:
父類B靜態代碼塊>子類A靜態代碼塊>父類B非靜態代碼塊>父類B構造函數>子類A非靜態代碼塊>子類A構造函數父類B靜態代碼塊 > 子類A靜態代碼塊 > 父類B非靜態代碼塊 > 父類B構造函數 > 子類A非靜態代碼塊 > 子類A構造函數 >>>>>

二、Java 分支結構

1、條件語句

在 Java 中,條件語句的格式為: if(condition) statement,這里的條件必須用括號括起來。

與絕大多數程序設計語言一樣,Java常常希望在某個條件為真時執行多條語句。在這種情況下,使用塊語句,格式為

{statement1statement2......
}

Ps:使用塊(有時稱為復合語句)可以在Java程序結構中原本只能放置一條(簡單)語句的地方放置多條語句。

其中 else 部分是可選的。else 子句與最鄰近的if構成一組。因此,在語句中 else 與第 2 個 if 配對。當然,用一對括號將會使這段代碼更加清晰:重復地交替出現 if...else if...是一種很常見的情況。

2、多重選擇:switch語句

在處理多個選項時,使用 if/else 結構顯得有些笨拙。Java 有一個與 C/C++ 完全一樣的 switch 語句。

switch 語句將從與選項值相匹配的 case 標簽處開始執行直到遇到 break 語句,或者執行到 switch 語句的結束處為止。如果沒有相匹配的 case 標簽,而有 default 子句,就執行這個子句。

Ps:有可能觸發多個 case 分支。如果在 case 分支語句的末尾沒有 break 語句,那么就會接著執行下一個 case 分支語句。這種情況相當危險,常常會引發錯誤。

case 標簽可以是:① 類型為char、byte、short 或 int 的常量表達式。②枚舉常量。③從 Java SE 7 開始,case 標簽還可以是字符串字面量。

3、三元運算符

元運算符也叫三目運算符 ,即由三部分組成,格式:關系表達式 ? 表達式1:表達式2;

先執行關系表達式,看其結果是 true 還是 false:如果是 true,則執行表達式 1;如果是false,則執行表達式 2。

三、Java 循環語句

1、while 循環語句與 do-while 語句

當條件為 true 時,while 循環執行一條語句(也可以是一個語句塊)。一般格式為:while( condition ) statetion,如果開始循環條件的值就為 flase,則 while 循環體一次也不執行。while循環語句首先檢測循環條件,因此,循環體中的代碼有可能不被執行。如果希望將語句至少執行一遍,則應該把檢測條件放在最后面,這就是 do-while 語句,它的格式大致為:do statement while (condition );

2、for 循環語句

for 循環語句是支持迭代的一種通用結構,利用每次迭代之后更新的計數器或類似的變量來控制迭代次數。

for 語句的第 1 部分通常用于對計數器初始化;第 2 部分給出每次新一輪循環執行前要檢測的循環條件;第 3 部分指示如何更新計數器。與 C++ 一樣,盡管 Java 允許在 for 循環的各個部分放置任何表達式,但有一條不成文的規則:for 語句的 3 個部分應該對同一個計數器變量進行初始化、檢測和更新。若不遵守這一規則,編寫的循環常常晦澀難懂。

3、foreach 循環語句

Java 有一種功能很強的循環結構,可以用來依次處理數組中的每個元素(其他類型的元素集合亦可)而不必為指定下標值而分心,語句格式為:for(variable:collection) statement

for each 循環語句相較于傳統的 for 循環更加簡介、更不易出錯(不必為下標的起始值和終止值而操心)

Ps:要想獲得數組中的元素個數,可以使用 array.length。

Ps:for each 循環語句的循環變量將會遍歷數組中的每個元素,而不需要使用下標值。

四、Java 中斷控制流程語句

break 關鍵字:break 主要用在循環語句或者 switch 語句中,用來跳出整個語句塊。 break 跳出最里層的循環,并且繼續執行該循環下面的語句。

continue 關鍵字: continue 適用于任何循環控制結構中。作用是讓程序立刻跳轉到下一次循環的迭代。①在 for 循環中, continue 語句使程序立即跳轉到更新語句。②在 while 或者 do…while 循環中,程序立即跳轉到布爾表達式的判斷語句。

跳出控制語句的區別:

  1. break :結束當前整個循環,執行當前循環下邊的語句;
  2. continue :結束本次循環,繼續進行下次循環;
  3. return : 用于結束一個方法,返回給上層調用者,如果位于main方法內,相當于結束了程序,return 也可以用于結束循環,因為 return 用于結束一個方法,如果方法中有循環的話,不管 return 嵌套于多少層循環之內,循環都結束不會再執行循環后面的語句。

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

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

相關文章

Java基礎:Java類與對象

面向對象程序設計(簡稱OOP)是當今主流的程序設計范型,它已經取代了20世紀70年代的“結構化”過程化程序設計開發技術。Java是完全面向對象的,必須熟悉OOP才能夠編寫Java程序。面向對象的程序是由對象組成的,每個對象包…

SVN備份腳本

#!/bin/bash #svn全量備份腳本 wwytcode_path/home/wwytcode/project backup_path/home/bak Datedate %Y%m%d cd $backup_path echo date >> $back_path/svn_backup.log svnversionsvnlook youngest $wwytcode_path svnadmin dump --revision 0:$svnversion $wwytcode_pa…

Java基礎:Java面向對象

面向過程的優點是性能比面向對象高,不需要面向對象的實例化;缺點是不容易維護、復用和擴展。面向對象的優點是具有封裝、繼承、多態的特性,因而容易維護、復用和擴展,可以設計出低耦合的系統;缺點是由于需要實例化對象…

薪資生成

import openpyxl from openpyxl.styles import Font,Alignment,Side,Border#設置字體樣式 fontFont(name宋體,size20,boldTrue) font2Font(name宋體,size12,boldTrue) alignmentAlignment(horizontalcenter,verticalcenter,wrap_textTrue) sideSide(stylethin ,color000000) …

Java基礎:Java抽象接口

在Java中,一個沒有方法體的方法應該定義為抽象方法,而如果一個類中含有抽象方法,則該類必須定義為一個抽象類。接口是功能的集合,同樣可看做是一種特殊的數據類型,是比抽象類更為抽象的類,接口只描述所應該…

13 張圖帶你學懂 Kubernetes Service(轉載)

在 Kubernetes 中 Service 主要有4種不同的類型,其中的 ClusterIP 是最基礎的,如下圖所示: 當我們創建一個 NodePort 的 Service 時,它也會創建一個 ClusterIP,而如果你創建一個 LoadBalancer,它就會創建一…

Java基礎:Java異常機制

異常是程序運行過程中出現的錯誤。Java 把異常當作對象來處理,把異常信息封裝成了一個類,并定義一個基類java.lang.Throwable作為所有異常的超類。Throwable : 它是所有錯誤與異常的超類(祖宗類),有兩個子類 Error 和 Exception。…

JavaWeb:Servlet的應用及接口介紹

廣義的 Servlet 泛指在服務器上運行的 Java 程序,但是這個 Java 程序,并不能獨立運行(因為 Servlet 沒有 main 方法),需要部署在相應的 Servlet 容器中,比如 Tomcat 和 Jetty。Servlet 主要功能在于交互式地…

DOCKERFILE參數注解

Dockerfile由一行行命令語句組成,并且支持以#開頭的注釋行。 一般的,Dockerfile 分為四部分:基礎鏡像信息、維護者信息、鏡像操作指令和容器啟動時執行指令。 Dockerfile的指令是忽略大小寫的,建議使用大寫,使用 # 作為…

Zookeeper:分布式過程協同技術

Zookeeper 是一個高性能的分布式一致系統,在分布式系統中有著廣泛的應用。基于它,可以實現諸如“分布式同步”、“配置管理”、“命名空間管理”等眾多功能,是分布式系統中常見的基礎系統。Zookeeper 主要用來解決分布式集群中應用系統的一致…

面試題2021-2-24

給某CentOs6慮擬機添加了新的數據盤,設備名為/de/sdd.寫命令格式化滿加的效的并掛載到指定目錄/opt fdisk -l mkfs.ext4 /de/sdd mount /de/sdd /opt 如何查看與RabbtMQ服務器之間的establish狀態連接數?netstat -an |grep ESTABLISHED |grep tcp |wc -l…

Zookeeper:在三種模式下的部署

zookeeper 安裝模式有三種:單機模式:單機單 server;集群模式:多機多 server,形成集群;偽集群模式:單機多 server,形成偽集群。 ~ 本篇內容包括:Zookeeper 官網下載、Zook…

Linux namespace概述

操作系統通過虛擬內存技術,使得每個用戶進程都認為自己擁有所有的物理內存,這是操作系統對內存的虛擬化。操作系統通過分時調度系統,每個進程都能被【公平地】調度執行,即每個進程都能獲取到CPU,使得每個進程都認為自己…

Zookeeper:Zookeeper的主從選舉機制

ZAB 協議,全稱 Zookeeper Atomic Broadcast(Zookeeper 原子廣播協議),是為分布式協調服務 ZooKeeper 專門設計的一種支持崩潰恢復的一致性協議。基于該協議,ZooKeeper 實現了一種主從模式的系統架構來保持集群中各個副…

Linux namespace之:uts namespace

理解uts namespace uts(UNIX Time-Sharing System) namespace可隔離hostname和NIS Domain name資源,使得一個宿主機可擁有多個主機名或Domain Name。換句話說,可讓不同namespace中的進程看到不同的主機名。 例如,使用unshare命令(較新版本L…

Zookeeper:事件監聽和通知機制

Zookeeper 允許客戶端向服務端的某個 Znode 注冊一個 Watcher 監聽,當服務端的一些指定事件觸發了這個 Watcher,服務端會向指定客戶端發送一個事件通知來實現分布式的通知功能,然后客戶端根據 Watcher 通知狀態和事件類型做出業務上的改變。 …

Linux namespace之:mount namespace

理解mount namespace 用戶通常使用mount命令來掛載普通文件系統,但實際上mount能掛載的東西非常多,甚至連現在功能完善的Linux系統,其內核的正常運行也都依賴于掛載功能,比如掛載根文件系統/。其實所有的掛載功能和掛載信息都由內…

Linux namespace之:network namespace

理解network namespace network namespace用來隔離網絡環境,「在network namespace中,網絡設備、端口、套接字、網絡協議棧、路由表、防火墻規則等都是獨立的」。 因network namespace中具有獨立的網絡協議棧,因此每個network namespace中都…

Kubernetes 的原理

kubernetes 已經成為容器編排領域的王者,它是基于容器的集群編排引擎,具備擴展集群、滾動升級回滾、彈性伸縮、自動治愈、服務發現等多種特性能力。 本文將帶著大家快速了解 kubernetes ,了解我們談論 kubernetes 都是在談論什么。 kuberne…

Zookeeper:實現“分布式鎖”的 Demo

Zookeeper 能保證數據的強一致性,用戶任何時候都可以相信集群中每個節點的數據都是相同的。一個用戶創建一個節點作為鎖,另一個用戶檢測該節點,如果存在,代表別的用戶已經鎖住,如果不存在,則可以創建一個節…