亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

Java雜記3—流程控制之條件

jackzou / 1964人閱讀

摘要:流程控制首先來介紹程序的流程控制。后面跟一個(gè)代碼塊邏輯關(guān)系是當(dāng)布爾表達(dá)式為真的時(shí)候執(zhí)行代碼塊,為假的時(shí)候不執(zhí)行。

流程控制

首先來介紹程序的流程控制。

所謂的流程控制,就是在我們前面的課程中我們已經(jīng)學(xué)過了變量,數(shù)據(jù)類型,運(yùn)算符,表達(dá)式,這些都是計(jì)算機(jī)編程的基本元素,但是我們程序的基本執(zhí)行單元應(yīng)該是語(yǔ)句,程序執(zhí)行,執(zhí)行的不是表達(dá)式,而是執(zhí)行語(yǔ)句。就好像我們小時(shí)候先學(xué)認(rèn)字兒,再學(xué)組詞,但最終要學(xué)造句,因?yàn)閷懽魑囊欢ㄊ且痪湓捯痪湓挼膶憽?/p>

那么計(jì)算機(jī)程序一定會(huì)有多個(gè)語(yǔ)句,這個(gè)語(yǔ)句的執(zhí)行順序就叫做流程控制,我代碼中這么多語(yǔ)句先執(zhí)行誰后執(zhí)行誰,每個(gè)語(yǔ)句執(zhí)行幾遍,要不要執(zhí)行要不要不執(zhí)行這都叫流程控制。

順序執(zhí)行流程,我們的所有語(yǔ)句都放在主函數(shù)里,他一定是從主函數(shù)的第一句開始執(zhí)行,然后執(zhí)行第二句,第三句,直到把主函數(shù)中的每一句自上而下都執(zhí)行一遍的時(shí)候,程序執(zhí)行結(jié)束。比如我在主函數(shù)中寫十個(gè)打印語(yǔ)句,他一定是一句一句的執(zhí)行,這顯然是計(jì)算機(jī)軟件最基本的一種執(zhí)行流程,順序執(zhí)行流程。

條件分支流程

而現(xiàn)在我們要介紹的是條件分支流程,條件分支流程也叫做分支結(jié)構(gòu),選擇結(jié)構(gòu),它主要解決的是有些語(yǔ)句我在執(zhí)行以前要先去判斷一個(gè)條件,根據(jù)這個(gè)條件來決定這條語(yǔ)句,或者后面的某個(gè)代碼塊執(zhí)行或者不執(zhí)行。如果說以前的順序流程是每句話執(zhí)行一遍的話,條件分支結(jié)構(gòu)是每句話執(zhí)行0-1遍,也許條件成立會(huì)執(zhí)行,條件不成立這句話就會(huì)不執(zhí)行。

if語(yǔ)句

說到條件分支流程,最基本的語(yǔ)法就是一個(gè)if語(yǔ)句,語(yǔ)法結(jié)構(gòu)如下。

if(布爾表達(dá)式){
  代碼塊
}

關(guān)鍵字if,If后面方一個(gè)圓括號(hào) 圓括號(hào)里寫什么?必須是一個(gè)布爾表達(dá)式 不可以寫整數(shù)。在C語(yǔ)言中布爾表達(dá)式和整數(shù)表達(dá)式是相同的,0表示假,非0值表示真,但是在java中真就是真 1就是1 真不是1 1也不是真 這是java和c的重要區(qū)別,其實(shí)也是java簡(jiǎn)單性的體現(xiàn)。

解釋一下,例如int a = 10   int b =5

本來我要比較a和b是否相等,if(a==b) 但是我寫錯(cuò)了,少寫了一個(gè)等號(hào),寫成了if(a=b)。那么在java中一個(gè)等號(hào)是賦值表達(dá)式最后的結(jié)果是5 是會(huì)報(bào)錯(cuò)的,但是在C中是沒有問題的,不會(huì)報(bào)錯(cuò)。這樣的錯(cuò)誤不能及時(shí)發(fā)現(xiàn)就會(huì)造成一定的問題,而實(shí)際上在C的開發(fā)中這也確實(shí)是一個(gè)問題。所以java在設(shè)計(jì)的時(shí)候就補(bǔ)上了這個(gè)漏洞,其結(jié)果就是在java中if后面的圓括號(hào)中只能夠放布爾表達(dá)式。

后面跟一個(gè)代碼塊 邏輯關(guān)系是當(dāng)布爾表達(dá)式為真的時(shí)候執(zhí)行代碼塊,為假的時(shí)候不執(zhí)行。所謂代碼塊就是一個(gè)花括號(hào),咱們也沒少見,類啊,方法啊都是一個(gè)花括號(hào)。

舉個(gè)例子,用戶輸入一個(gè)整數(shù),我們通過程序來判斷這個(gè)整數(shù)是偶數(shù)還是奇數(shù),如果是偶數(shù)就輸出偶數(shù)到控制臺(tái),如果是奇數(shù)就什么也不輸出。代碼如下:

Scanner s = new Scanner(System.in);
int n = s.nextInt();

if(n%i==0){
  System.out.println("偶數(shù)");
}

這就是最基本的if語(yǔ)句。

if else語(yǔ)句

那么我們的邏輯繼續(xù)變化,如果那個(gè)數(shù)字兒是偶數(shù)就打印偶數(shù)兩個(gè)字兒,如果是奇數(shù)就打印奇數(shù)兩個(gè)字兒。那么這時(shí)候需要第二個(gè)語(yǔ)法結(jié)構(gòu),if else。

if(布爾表達(dá)式){
  代碼塊1
}else{
  代碼塊2
}

當(dāng)布爾表達(dá)式為真的時(shí)候執(zhí)行代碼塊1,else就是否則的意思,什么叫否則,就是當(dāng)前面的那個(gè)布爾表達(dá)式為假的時(shí)候就執(zhí)行else后面的代碼塊,這就真正是條件分支了,代碼塊1和代碼塊2怎么著都會(huì)執(zhí)行一個(gè),條件為真執(zhí)行代碼塊1,條件為假執(zhí)行代碼塊2。
根據(jù)這個(gè)邏輯我們對(duì)之前的代碼做一定的修改,如果條件為假else后面再加一個(gè)代碼塊打印奇數(shù)。

Scanner s = new Scanner(System.in);
int n = s.nextInt();

if(n%i==0){
  System.out.println("偶數(shù)");
}else{
  System.out.println("奇數(shù)");
}

以上就是if else結(jié)構(gòu)。

if else if

下面我們看一下多重if else結(jié)構(gòu),它會(huì)有多個(gè)條件,語(yǔ)法結(jié)構(gòu)如下

if(條件1){
  代碼塊1
}else if(條件2){
  代碼塊2
}else if(條件3){
  代碼塊3
}else{
  代碼塊4
}

先是if條件1,當(dāng)條件1成立的時(shí)候會(huì)執(zhí)行代碼塊1,else if條件2,else代表當(dāng)條件1不滿足的時(shí)候,進(jìn)入這個(gè)else,判斷條件2,條件2成立執(zhí)行對(duì)應(yīng)代碼塊,然后執(zhí)行結(jié)束。如果進(jìn)入第三個(gè)條件,說明前兩個(gè)條件都不滿足,這時(shí)候再來判斷條件3,如果不滿足條件3,就會(huì)到最后一個(gè)else中,最后一個(gè)可以加if也可以不加,實(shí)際上就是前面所有的條件都不滿足就會(huì)到最后的else代碼塊中。

根據(jù)這個(gè)語(yǔ)法邏輯舉個(gè)例子,加入輸入的整數(shù)是月份,根據(jù)輸入的整數(shù)判斷是那個(gè)季節(jié),1-3是春節(jié),4-6是夏季,依次。

Scanner s = new Scanner(System.in);
int n = s.nextInt();

if(n<=3){
  System.out.println("春天");
}else if(n<=6){
  System.out.println("夏天");
}else if(n<=9){
  System.out.println("秋天");
}else{
  System.out.println("冬天");
}

以上是關(guān)于if語(yǔ)句所有的語(yǔ)法結(jié)構(gòu),額外的再說一點(diǎn),if語(yǔ)句可以根據(jù)實(shí)際的需要進(jìn)行嵌套,至于嵌套的層數(shù)沒有限制。

條件本質(zhì)

所有的java代碼在執(zhí)行的時(shí)候最后都會(huì)被程序最終都是一條條的指令,CPU有一個(gè)指令指示器,指向下一條要執(zhí)行的指令,CPU根據(jù)指示器的指示加載指令并且執(zhí)行。指令大部分是具體的操作和運(yùn)算,在執(zhí)行這些操作時(shí),執(zhí)行完一個(gè)操作后,指令指示器會(huì)自動(dòng)指向挨著的下一個(gè)指令。

而有一種特殊的指令,稱為跳轉(zhuǎn)指令,這些指令會(huì)修改指令指示器的值,讓CPU跳到一個(gè)指定的地方執(zhí)行。跳轉(zhuǎn)有兩種,一種是條件跳轉(zhuǎn),另一種是無條件跳轉(zhuǎn)。條件跳轉(zhuǎn)檢查某個(gè)條件,滿足則進(jìn)行跳轉(zhuǎn),無條件跳轉(zhuǎn)則是直接進(jìn)行跳轉(zhuǎn)。條件分支流程在執(zhí)行的時(shí)候,if, else實(shí)際上都會(huì)轉(zhuǎn)換為這些跳轉(zhuǎn)指令。

下節(jié)預(yù)告:switch選擇結(jié)構(gòu),為什么switch后面的括號(hào)中只能夠填如byte,int等類型?

我不能保證每一個(gè)地方都是對(duì)的,但是可以保證每一句話,每一行代碼都是經(jīng)過推敲和斟酌的。希望每一篇文章背后都是自己追求純粹技術(shù)人生的態(tài)度。

永遠(yuǎn)相信美好的事情即將發(fā)生。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/69298.html

相關(guān)文章

  • webpack系列-插件機(jī)制雜記

    摘要:系列文章系列第一篇基礎(chǔ)雜記系列第二篇插件機(jī)制雜記系列第三篇流程雜記前言本身并不難,他所完成的各種復(fù)雜炫酷的功能都依賴于他的插件機(jī)制。的插件機(jī)制依賴于一個(gè)核心的庫(kù),。是什么是一個(gè)類似于的的庫(kù)主要是控制鉤子函數(shù)的發(fā)布與訂閱。 系列文章 Webpack系列-第一篇基礎(chǔ)雜記 Webpack系列-第二篇插件機(jī)制雜記 Webpack系列-第三篇流程雜記 前言 webpack本身并不難,他所完成...

    Neilyo 評(píng)論0 收藏0
  • JavaScript 雜記(一)

    摘要:基礎(chǔ)簡(jiǎn)單基礎(chǔ)數(shù)據(jù)類型值得注意的是的值是,表示一個(gè)空對(duì)象指針,沒有指向任何對(duì)象。的值是,表示申明變量或?qū)ο蟮膶傩詤s未初始化。值是派生自的,所以對(duì)他們執(zhí)行相等測(cè)試會(huì)返回。字符串單引號(hào)和雙引號(hào)都可以用來表示字符串,只要前后一致即可。 目的 記憶總是會(huì)隨著時(shí)間而淡化,學(xué)習(xí)了點(diǎn)什么,就記錄下點(diǎn)什么。 做點(diǎn)什么,總比不做要好。 基礎(chǔ) 簡(jiǎn)單(基礎(chǔ))數(shù)據(jù)類型 Number ...

    raise_yang 評(píng)論0 收藏0
  • Java雜記17—String全面解析

    摘要:所以也就是說在沒有的基礎(chǔ)上,執(zhí)行代碼會(huì)在串池中創(chuàng)建一個(gè),也會(huì)在堆內(nèi)存中再出來一個(gè)。不可變性的優(yōu)點(diǎn)安全性字符串不可變安全性的考慮處于兩個(gè)方面,數(shù)據(jù)安全和線程安全。 摘要: String基本特性,String源碼,為什么String不可變? 前言 基于字符串String在java中的地位,關(guān)于String的常識(shí)性知識(shí)就不多做介紹了,我們先來看一段代碼 public class Test {...

    jeffrey_up 評(píng)論0 收藏0
  • 篤行雜記Zookeeper SessionTimeOut分析

    摘要:前言本文為篤行日常工作記錄,爛筆頭系列。最終通過分析源碼了解到最終的確定是一個(gè)協(xié)商的過程,而不是簡(jiǎn)單的配置生效。根據(jù)客戶端上報(bào)的和服務(wù)端自身的。如果上報(bào)的小于則設(shè)置為如果上報(bào)的大于則設(shè)置為如果介于兩則之間,則以上報(bào)的時(shí)間為準(zhǔn)。 0.前言 本文為篤行日常工作記錄,爛筆頭系列。 源碼前面,了無秘密 — by 侯杰 近期的一個(gè)C++項(xiàng)目里使用了Zookeeper做服務(wù)發(fā)現(xiàn),期間遇到了Sess...

    mcterry 評(píng)論0 收藏0
  • React-事件機(jī)制雜記

    摘要:前提最近通過閱讀官方文檔的事件模塊,有了一些思考和收獲,在這里記錄一下調(diào)用方法時(shí)需要手動(dòng)綁定先從一段官方代碼看起代碼中的注釋提到了一句話的綁定是必須的,其實(shí)這一塊是比較容易理解的,因?yàn)檫@并不是的一個(gè)特殊點(diǎn),而是這門語(yǔ)言的特性。 前提 最近通過閱讀React官方文檔的事件模塊,有了一些思考和收獲,在這里記錄一下~ 調(diào)用方法時(shí)需要手動(dòng)綁定this 先從一段官方代碼看起: showImg(...

    zhangyucha0 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

jackzou

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<