第2章 Java編程基礎(chǔ)_第1頁
第2章 Java編程基礎(chǔ)_第2頁
第2章 Java編程基礎(chǔ)_第3頁
第2章 Java編程基礎(chǔ)_第4頁
第2章 Java編程基礎(chǔ)_第5頁
已閱讀5頁,還剩220頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第2章Java編程基礎(chǔ)《Java基礎(chǔ)案例教程》(第3版)學(xué)習(xí)目標(biāo)/Target了解Java程序的基本結(jié)構(gòu),能夠簡述Java程序的基本組成結(jié)構(gòu)和各個部分的含義熟悉Java中的注釋,能夠簡述Java中注釋的類型及它們各自的作用熟悉關(guān)鍵字和標(biāo)識符,能夠簡述標(biāo)識符和關(guān)鍵字的含義和使用規(guī)則掌握J(rèn)ava的數(shù)據(jù)類型,能夠簡述Java的所有基本數(shù)據(jù)類型掌握數(shù)據(jù)類型轉(zhuǎn)換,能夠簡述自動類型轉(zhuǎn)換和強(qiáng)制類型轉(zhuǎn)換的區(qū)別學(xué)習(xí)目標(biāo)/Target掌握J(rèn)ava中的運算符,能夠使用算術(shù)運算符、賦值運算符、比較運算符、邏輯運算符和三元運算符對程序中的數(shù)據(jù)和表達(dá)式進(jìn)行運算掌握選擇結(jié)構(gòu)語句的使用方法,能夠使用if語句和switch語句控制程序中語句的執(zhí)行順序掌握循環(huán)結(jié)構(gòu)語句的使用,能夠使用while循環(huán)語句、do…while循環(huán)語句、for循環(huán)語句,循環(huán)嵌套結(jié)構(gòu)和跳轉(zhuǎn)語句處理程序中要重復(fù)執(zhí)行的代碼掌握變量的定義,能夠定義基本數(shù)據(jù)類型的變量掌握數(shù)組的聲明和初始化,能夠使用靜態(tài)初始化和動態(tài)初始化的方式創(chuàng)建數(shù)組學(xué)習(xí)目標(biāo)/Target掌握數(shù)組的常見操作,能夠?qū)?shù)組進(jìn)行遍歷、排序,以及數(shù)組的最值的獲取掌握方法的定義和使用,能夠定義方法和調(diào)用方法掌握方法的重載,能夠定義和使用重載方法掌握數(shù)組元素的訪問和賦值,能夠通過索引對數(shù)組元素進(jìn)行訪問并賦值熟悉二維數(shù)組的使用,能夠使用靜態(tài)初始化和動態(tài)初始化的方式創(chuàng)建二維數(shù)組和遍歷二維數(shù)組章節(jié)概述/

Summary通過學(xué)習(xí)第一章,大家已經(jīng)對Java有了基本認(rèn)識。然而,要能夠熟練使用Java編寫程序,需要充分掌握J(rèn)ava的基礎(chǔ)知識,并不斷進(jìn)行練習(xí)和實踐。本章將對Java的基本語法、變量與常量、運算符、結(jié)構(gòu)語句、數(shù)組和方法等知識進(jìn)行詳細(xì)講解。目錄/Contents0102Java基本語法變量0304數(shù)據(jù)類型轉(zhuǎn)換Java中的運算符目錄/Contents0506選擇結(jié)構(gòu)語句循環(huán)結(jié)構(gòu)語句0708數(shù)組方法Java基本語法2.12.1Java基本語法每一種編程語言都有一套自己的語法規(guī)則,同樣,使用Java編寫程序也必須遵循一定的語法規(guī)范,如程序的基本格式、標(biāo)識符和關(guān)鍵字的定義等。本節(jié)將對Java的基本語法進(jìn)行詳細(xì)講解。了解Java程序的基本結(jié)構(gòu),能夠簡述Java的基本組成結(jié)構(gòu)和各個部分的含義2.1.1Java程序的基本結(jié)構(gòu)

先定一個小目標(biāo)!2.1.1Java程序的基本結(jié)構(gòu)一個典型的Java程序包括包聲明、導(dǎo)入類、定義類、入口方法和主體代碼等多個組成部分。這些部分共同協(xié)作,形成完整的Java程序,示例代碼如下。packagecn.itcast.myapp;//包聲明importjava.util.Scanner;//導(dǎo)入類publicclassMyApp{//定義類publicstaticvoidmain(String[]args){//入口方法//主體代碼Scannerscanner=newScanner(System.in);System.out.print("請輸入您的名字:");Stringname=scanner.nextLine();System.out.println("您好,"+name+"!");}}2.1.1Java程序的基本結(jié)構(gòu)下面對Java程序的基本組成結(jié)構(gòu)進(jìn)行說明。(1)包聲明Java中的包是一種組織和管理類文件的機(jī)制,它將相關(guān)的類組織到一個包,以便更好地管理和維護(hù)代碼。包可以嵌套使用,形成層級結(jié)構(gòu),通常每個包都有一個唯一的名稱,稱為包名。包使用關(guān)鍵字package聲明,具體語法格式如下。package包名;上述語法格式中,包名用于給類和接口提供唯一標(biāo)識符,避免不同包中同名類產(chǎn)生沖突。包的聲明只能位于Java源文件的第一行。且Java中的包是可選的,沒有顯示聲明包時,類被放置在默認(rèn)包中。2.1.1Java程序的基本結(jié)構(gòu)(2)導(dǎo)入類在Java開發(fā)過程中,如果一個類要使用另一個包中的類,則需要使用import關(guān)鍵字來導(dǎo)入這個類。使用import關(guān)鍵字導(dǎo)入類的語法格式如下。import包名.類名;導(dǎo)入類的語句通常出現(xiàn)在聲明包的語句之后。導(dǎo)入類的語句也是可選的,使用import關(guān)鍵字導(dǎo)入指定包下的類后,就不必在每次使用到該類時,都書寫類的全限定名。如果需要用到一個包中的多個類,則可以使用如下語法格式,導(dǎo)入該包下所有的類。import包名.*;2.1.1Java程序的基本結(jié)構(gòu)(3)定義類Java的所有代碼都需要在類中書寫,類可以被看作是Java程序的基本單元。類的定義使用關(guān)鍵字class,具體語法格式如下。修飾符class類名{//類體}在上述語法格式中,修飾符分為訪問修飾符和非訪問修飾符,訪問修飾符用于控制類的訪問權(quán)限,例如public是公共訪問修飾符,非訪問修飾符有final、abstract等等。2.1.1Java程序的基本結(jié)構(gòu)(4)入口方法入口方法也叫主方法。入口方法是程序執(zhí)行的起始位置,具體語法格式如下。publicstaticvoidmain(String[]args){//入口方法主體代碼}上述語法格式中各個元素的含義將會在后續(xù)的章節(jié)中詳細(xì)講解。此處讀者只需要知道Java程序執(zhí)行時從入口方法開始即可。2.1.1Java程序的基本結(jié)構(gòu)(5)主體代碼主體代碼位于入口方法中,用于實現(xiàn)程序的具體邏輯。主體代碼還可以使用變量和調(diào)用方法來完成特定的任務(wù)。2.1.1Java程序的基本結(jié)構(gòu)在編寫Java程序時,需要注意以下幾點。使用public修飾的類名和文件名需要保持一致。Java嚴(yán)格區(qū)分大小寫。變量名、方法名、類名等的大小寫需要保持一致。Java程序中每條語句需要以“;”結(jié)束,否則程序會報錯。在編寫程序時,為了增強(qiáng)代碼的可讀性,通常會使用空格或制表符來構(gòu)建代碼塊的層次結(jié)構(gòu),一般使用四個空格作為一個縮進(jìn)級別。此外,在編寫程序時通常一行只寫一條語句,符號“{”與代碼同行,符號“}”單獨占一行。熟悉Java中的注釋,能夠簡述Java中注釋的類型和各自的作用2.1.2Java中的注釋

先定一個小目標(biāo)!2.1.2Java中的注釋在Java中,注釋是用來為代碼添加解釋、說明和文檔化信息的特殊文本,它只在Java源文件中有效,在編譯程序時編譯器會忽略這些注釋信息,不會將其編譯到字節(jié)碼文件中。2.1.2Java中的注釋Java中的注釋有三種類型,分別是單行注釋、多行注釋和文檔注釋。1.單行注釋:用于對程序中的某一行代碼進(jìn)行解釋。單行注釋以符號“//”開頭,可以添加到代碼的任意位置。intx=5;//定義一個變量并為其賦初始值為5intx=5;//定義一個變量并為其賦初始值為52.多行注釋:注釋的內(nèi)容可以為多行,常用于對整個類或方法的功能進(jìn)行說明。多行注釋以符號“/*”開頭,以符號“*/”結(jié)尾。2.1.2Java中的注釋3.文檔注釋:是為了生成項目文檔或API文檔而設(shè)計的注釋形式,用于對一段代碼進(jìn)行概括性的解釋說明。文檔注釋通常被用于描述類、接口、方法、字段等代碼元素的用途、輸入?yún)?shù)、返回值、異常等信息。文檔注釋以/**開始,以*/結(jié)束,位于代碼元素的前面。在文檔注釋中,可以使用特定的標(biāo)簽,例如@param、@return、@throws等標(biāo)簽提供詳細(xì)的解釋和說明。/**

*入門的HelloWorld程序

*@author黑馬程序員//注釋此文檔代碼的作者

*@since1.0//注釋文檔代碼的起始版本信息

*/熟悉關(guān)鍵字和標(biāo)識符,能夠簡述標(biāo)識符和關(guān)鍵字的含義和使用規(guī)則2.1.3關(guān)鍵字和標(biāo)識符

先定一個小目標(biāo)!2.1.3關(guān)鍵字和標(biāo)識符Java中的關(guān)鍵字和標(biāo)識符用于在程序中標(biāo)識不同的元素,可以使代碼更容易理解和組織。其中,關(guān)鍵字是由Java定義的,具有特殊的含義和功能。標(biāo)識符是由程序員自己定義的,用于標(biāo)識變量、方法、類等自定義元素。2.1.3關(guān)鍵字和標(biāo)識符關(guān)鍵字是編程語言中具有特殊含義和功能的預(yù)定單詞。在Java中,關(guān)鍵字用于聲明變量、定義類、控制程序流程、處理異常、實現(xiàn)面向?qū)ο蟮奶匦缘?。例?.1.1中講解的class關(guān)鍵字用來定義類,package關(guān)鍵字用來定義包等。1.關(guān)鍵字2.1.3關(guān)鍵字和標(biāo)識符1.關(guān)鍵字abstractcontinuefornewswitchassertdefaultgotopackagesynchronizedbooleandoifprivatethisbreakdoubleimplementsprotectedthrowbyteelseimportpublicthrowscaseenuminstanceofreturntransientcatchextendsintshorttrycharfinalinterfacestaticvoidclassfinallylongstrictfpvolatileconstfloatnativesuperwhile2.1.3關(guān)鍵字和標(biāo)識符1.關(guān)鍵字對于Java中的關(guān)鍵字,有以下幾點需要注意。所有關(guān)鍵字都是小寫的。const和goto是保留關(guān)鍵字,雖然在Java的當(dāng)前版本中還沒有任何意義,但在程序中不能用來作為自定義的標(biāo)識符。true、false和null雖然不屬于關(guān)鍵字,但它們具有特殊意義,也不能作為標(biāo)識符使用。自Java10開始,Java中增加了局部變量類型推斷功能,支持使用var定義變量。但是var不屬于Java中的關(guān)鍵字,而是保留類型名,在程序中同樣不能用作自定義的標(biāo)識符。2.1.3關(guān)鍵字和標(biāo)識符2.標(biāo)識符Java中的標(biāo)識符用于唯一的標(biāo)識程序的各種元素,如變量、方法和類等。Java中的標(biāo)識符在定義時,需要遵循如下規(guī)則。標(biāo)識符可以由字母、數(shù)字、下劃線“_”和美元符號“$”組成,但不能以數(shù)字開頭。標(biāo)識符是區(qū)分大小寫的,也就是說“myVariable”和“myvariable”是兩個不同的標(biāo)識符。不能是Java中的關(guān)鍵字。以上規(guī)則是必須遵守的,否則編譯時會報錯。2.1.3關(guān)鍵字和標(biāo)識符2.標(biāo)識符為了增強(qiáng)代碼的可讀性,建議遵守下列命名約定和管理。包名所有字母一律小寫。類名和接口名每個單詞的首字母都要大寫。常量名所有字母都大寫,單詞之間用下劃線連接。變量名和方法名一般使用首字母小寫的駝峰命名法。在程序中,建議使用有意義的名稱來定義標(biāo)識符,以提高程序可讀性。標(biāo)識符的長度沒有限制,但不要過長。2.1.3關(guān)鍵字和標(biāo)識符VS合法標(biāo)識符usernameusername123user_name_username$username不合法標(biāo)識符123username//不能以數(shù)字開頭class//不能是關(guān)鍵字98.3//不能數(shù)字開頭HelloWorld//不能包含空格掌握J(rèn)ava的數(shù)據(jù)類型,能夠簡述Java的所有基本數(shù)據(jù)類型2.1.4Java的數(shù)據(jù)類型

先定一個小目標(biāo)!2.1.4Java的數(shù)據(jù)類型Java提供了一系列的數(shù)據(jù)類型用于表示和處理不同種類的數(shù)據(jù)。Java的數(shù)據(jù)類型可以分為兩大類,分別是基本數(shù)據(jù)類型和引用數(shù)據(jù)類型?;緮?shù)據(jù)類型:由編程語言系統(tǒng)定義、不可再分,每種基本數(shù)據(jù)類型在內(nèi)存中所占空間固定。引用數(shù)據(jù)類型:包括編程人員自己定義的類型和Java標(biāo)準(zhǔn)庫提供的類型。2.1.4Java的數(shù)據(jù)類型Java中的數(shù)據(jù)類型2.1.4Java的數(shù)據(jù)類型(1)整數(shù)類型整數(shù)類型是表示整數(shù)數(shù)據(jù)的類型。在Java中,為了給不同大小范圍內(nèi)的整數(shù)合理地分配存儲空間,整數(shù)類型分為4種不同的類型,分別是字節(jié)型(byte)、短整型(short)、整型(int)和長整型(long),4種類型的數(shù)據(jù)所占存儲空間的大小以及取值范圍如下表所示。類型占用存儲空間/字節(jié)

取值范圍byte1-27~27-1short2-215~215-1int4-231~231-1long8-263~263-12.1.4Java的數(shù)據(jù)類型(1)整數(shù)類型Java中的整數(shù)類型的值有二進(jìn)制、八進(jìn)制、十進(jìn)制和十六進(jìn)制四種表示形式。二進(jìn)制:由數(shù)字0和1組成的數(shù)字序列。從JDK7開始,二進(jìn)制數(shù)要以0b或0B開頭,如0B10110101。八進(jìn)制:以0開頭并且其后由0~7(包括0和7)的整數(shù)組成的數(shù)字序列,如“0342”。十進(jìn)制:由0~9(包括0和9)的整數(shù)組成的數(shù)字序列,如198。十六進(jìn)制:以0x或者0X開頭并且其后由0~9、A~F或a~f(包括0和9、A和F,a和f)組成的數(shù)字序列,如0x25AF。2.1.4Java的數(shù)據(jù)類型(2)浮點數(shù)類型浮點數(shù)類型是表示小數(shù)數(shù)據(jù)的類型,包括單精度浮點型(float)和雙精度浮點型(double)。double類型所表示的浮點數(shù)比float類型更精確,這兩種浮點數(shù)類型的數(shù)據(jù)所占存儲空間的大小以及取值范圍如下表所示。類型占用存儲空間/字節(jié)

取值范圍float4約-3.4E+38~3.4E+38double8

約-1.7E+308~1.7E+308E(或者小寫e)表示以10為底的指數(shù),E后面的+號和-號代表正指數(shù)和負(fù)指數(shù)。例如,3.4E+38表示3.4×1038。2.1.4Java的數(shù)據(jù)類型(2)浮點數(shù)類型2.3f3.6d3.845.022e+23f5.022e+23f表示5.022×1023的單精度浮點數(shù)。2.1.4Java的數(shù)據(jù)類型(3)字符類型在Java中,字符類型用char表示,用于表示單個字符的類型,字符需要用一對英文半角格式的單引號('')引起來,如'a'。Java中字符類型的值有3種形式進(jìn)行表示,分別為使用單個字符表示、使用轉(zhuǎn)義字符表示、使用Unicode表示。'a''.''1''&''\n'//使用轉(zhuǎn)義字符表示字符'\u0000‘//使用Unicode表示字符2.1.4Java的數(shù)據(jù)類型實際開發(fā)中,如果希望表示一段文本,很顯然使用字符類型就不合適了,因為字符類型只能表示單個字符,這種情況下我們通常使用String類型來描述文本。String是Java標(biāo)準(zhǔn)類庫中提供的一個類,其本質(zhì)是由多個char類型的數(shù)據(jù)組成的一個序列,所以也叫字符串。String類將會在后面的內(nèi)容詳細(xì)講解,這里只需要做一個大致了解即可。2.1.4Java的數(shù)據(jù)類型(4)布爾類型在Java中,使用boolean表示布爾類型,布爾類型只有true和false兩個值,分別表示邏輯“真”和邏輯“假”。2.1.4Java的數(shù)據(jù)類型Java10引入了一項稱為var的新功能。var關(guān)鍵字允許開發(fā)人員在聲明變量時省略其類型,并通過編譯器的類型推斷功能自動推斷變量的類型。但是,盡管var允許類型推斷,但一旦變量被賦予初始值,它的類型將被確定,并且在后續(xù)的使用中不能改變。變量2.2掌握變量的定義,能夠定義基本數(shù)據(jù)類型的變量2.2變量

先定一個小目標(biāo)!2.2變量程序運行期間,隨時可能產(chǎn)生一些臨時數(shù)據(jù),應(yīng)用程序會將這些數(shù)據(jù)保存在內(nèi)存單元中,并通過標(biāo)識符來訪問和操作。這些用于標(biāo)識內(nèi)存單元的標(biāo)識符就稱為變量,而內(nèi)存單元中存儲的數(shù)據(jù)即為變量的值。2.2變量1.變量的聲明變量的聲明是指在代碼中明確的指定變量的類型和名稱,以便編譯器識別變量并為其分配合適的存空間。聲明變量的語法格式如下:數(shù)據(jù)類型變量名[,變量名2……];上述語法格式說明:變量名是為變量指定的標(biāo)識符,用于唯一地標(biāo)識變量。變量的命名需要遵守標(biāo)識符的命名規(guī)則。一條語句中可以同時聲明多個變量,變量名之間用逗號分隔。2.2變量2.變量的定義變量的定義是指在聲明的基礎(chǔ)上為變量分配內(nèi)存空間并選擇性地為其賦予初始值,可以在聲明變量時進(jìn)行賦值操作,也可以在后續(xù)代碼中進(jìn)行賦值操作。定義變量的語法格式如下:數(shù)據(jù)類型變量名=初始值;變量的初始值可以是常量、表達(dá)式或者其他變量的值。示例代碼如下。intx=25;inty=x;2.2變量下面通過一個案例演示Java中多種數(shù)據(jù)類型的變量定義,案例要求輸出一個商品的信息,包括編號、名稱、價格等。Example01.java源代碼案例演示2.2變量案例運行結(jié)果如下圖所示。案例演示2.2變量3.變量的作用域變量具有一定的可訪問范圍,這個范圍被稱為變量的作用域。外層大括號為x的作用域內(nèi)層大括號為y的作用域。2.2變量案例演示下面通過一個案例演示變量的作用域,該案例要求在不同代碼塊內(nèi)定義和使用變量來實現(xiàn)。Example02.java源代碼2.2變量案例演示案例的運行結(jié)果如下圖所示。將Example02.java文件中的x=y;移動到第8行后再次運行。數(shù)據(jù)類型轉(zhuǎn)換2.32.3數(shù)據(jù)類型轉(zhuǎn)換在實際開發(fā)中,程序中不同的組件或模塊可能使用不同的數(shù)據(jù)類型來表示相同或相關(guān)的信息。為了使這些組件或模塊能夠相互交互和通信,需要進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換以保證數(shù)據(jù)的有效傳遞和相互兼容。Java中數(shù)據(jù)類型的轉(zhuǎn)換形式分為兩種,分別是自動類型轉(zhuǎn)換和強(qiáng)制類型轉(zhuǎn)換。掌握自動類型轉(zhuǎn)換,能簡述什么是自動類型轉(zhuǎn)換,以及自動類型轉(zhuǎn)換需要滿足的條件2.3.1自動類型轉(zhuǎn)換

先定一個小目標(biāo)!2.3.1自動類型轉(zhuǎn)換自動類型轉(zhuǎn)換是指在不同數(shù)據(jù)類型之間進(jìn)行操作或賦值時,編譯器會自動完成類型轉(zhuǎn)換的過程,無須顯示地編寫類型轉(zhuǎn)換的代碼。自動類型轉(zhuǎn)換需要滿足的條件。兩種數(shù)據(jù)類型彼此兼容,即二者在語義上或邏輯上是相關(guān)聯(lián)的。目標(biāo)類型的取值范圍大于源類型的取值范圍。bytea=10;intb=a;2.3.1自動類型轉(zhuǎn)換不同類型數(shù)據(jù)進(jìn)行運算操作時,自動類型轉(zhuǎn)換也可能發(fā)生。編譯器根據(jù)運算要求和操作數(shù)的類型自動將其中一個操作數(shù)轉(zhuǎn)換為取值范圍更大的數(shù)據(jù)類型。常見的自動類型轉(zhuǎn)換如下。整數(shù)類型之間的轉(zhuǎn)換。取值范圍小的整數(shù)類型數(shù)據(jù),其數(shù)據(jù)類型可以自動轉(zhuǎn)換為取值范圍大的整數(shù)類型。整數(shù)類型轉(zhuǎn)換為float類型。其他類型轉(zhuǎn)換為double類型。2.3.1自動類型轉(zhuǎn)換案例演示下面通過一個案例演示自動類型轉(zhuǎn)換。Example03.java源代碼2.3.1自動類型轉(zhuǎn)換案例演示案例運行結(jié)果如圖所示。2.3.1自動類型轉(zhuǎn)換自動類型轉(zhuǎn)換還會發(fā)生在表達(dá)式中,表達(dá)式是指由操作數(shù)和運算符組成的一個式子,當(dāng)表達(dá)式中操作數(shù)包含多個基本數(shù)據(jù)類型的變量時,低取值范圍較小的操作數(shù)會自動轉(zhuǎn)換成取值范圍較大的數(shù)據(jù)類型操作數(shù),以便與取值范圍較大的操作數(shù)相匹配,這就是表達(dá)式數(shù)據(jù)類型數(shù)據(jù)類型的自動提升。表達(dá)式自動類型提升規(guī)則如下。操作數(shù)中的byte類型、short類型和char類型將自動提升為int類型。表達(dá)式的數(shù)據(jù)類型自動提升到,表達(dá)式中取值范圍最大的操作數(shù)的數(shù)據(jù)類型。掌握強(qiáng)制類型轉(zhuǎn)換,能夠簡述什么是強(qiáng)制類型轉(zhuǎn)換,以及在程序中實現(xiàn)強(qiáng)制類型轉(zhuǎn)換2.3.2強(qiáng)制類型轉(zhuǎn)換

先定一個小目標(biāo)!2.3.2強(qiáng)制類型轉(zhuǎn)換強(qiáng)制類型轉(zhuǎn)換也稱為顯式類型轉(zhuǎn)換,指的是兩種數(shù)據(jù)類型之間的轉(zhuǎn)換需要進(jìn)行顯式的聲明。當(dāng)兩種類型彼此不兼容,或者目標(biāo)類型取值范圍小于源類型時,自動類型轉(zhuǎn)換無法進(jìn)行,這時就需要進(jìn)行強(qiáng)制類型轉(zhuǎn)換。2.3.2強(qiáng)制類型轉(zhuǎn)換案例演示下面通過一個案例演示,轉(zhuǎn)換彼此不兼容兩種類型的情況。在本例中,使用int類型的變量為byte類型的變量賦值。Example04.java源代碼2.3.2強(qiáng)制類型轉(zhuǎn)換案例演示案例的運行結(jié)果如下圖所示。2.3.2強(qiáng)制類型轉(zhuǎn)換強(qiáng)制類型轉(zhuǎn)換的格式。目標(biāo)數(shù)據(jù)類型變量名=(目標(biāo)類型)值;

強(qiáng)制類型轉(zhuǎn)換時,如果將取值范圍較大的數(shù)據(jù)類型強(qiáng)制轉(zhuǎn)換為取值范圍較小的數(shù)據(jù),可能會導(dǎo)致數(shù)據(jù)的截斷或精度丟失。2.3.2強(qiáng)制類型轉(zhuǎn)換案例演示將Example04.java文件中的第4行代碼修改為如下代碼。byteb=(byte)a;修改后再次運行文件Example04.java,運行結(jié)果如下圖所示。2.3.2強(qiáng)制類型轉(zhuǎn)換為什么a和b的值不一樣?2.3.2強(qiáng)制類型轉(zhuǎn)換案例演示int類型的變量a占4個字節(jié),byte類型的變量b占1個字節(jié),當(dāng)把變量a強(qiáng)制轉(zhuǎn)換為b時,前面高3位字節(jié)的數(shù)據(jù)丟失,數(shù)值發(fā)生改變。Java中的運算符2.42.4Java中的運算符在程序編寫中,會經(jīng)常需要進(jìn)行各種數(shù)據(jù)處理和邏輯判斷。為此,Java提供了多種運算符來支持這些操作,包括算術(shù)運算符、賦值運算符、比較運算符、邏輯運算符和三元運算符等。這些運算符在使用方式上類似于數(shù)學(xué)中的運算符,可以對數(shù)據(jù)進(jìn)行相應(yīng)的計算和操作。下面對Java中的運算符進(jìn)行詳細(xì)講解。掌握算術(shù)運算符,能夠在程序中使用算術(shù)運算符進(jìn)行加、減、乘、除運算2.4.1算術(shù)運算符

先定一個小目標(biāo)!2.4.1算術(shù)運算符Java中的算術(shù)運算符是用于對數(shù)值類型數(shù)據(jù)進(jìn)行算術(shù)運算的符號,包括加、減、乘、除等。通過這些運算符,可以方便地對變量進(jìn)行加減乘除等運算。運算符運算范例結(jié)果+加2+35正號+33-減6-42負(fù)號b=4;-b-4*乘2*510/除12/52%取模(求余數(shù))9%41++自增(前綴)a=2;b=++a;a=3;b=3自增(后綴)a=2;b=a++a=3;b=2--自減(前綴)a=2;b=--aa=1;b=1;自減(后綴)a=2;b=a--a=1;b=2;2.4.1算術(shù)運算符使用算術(shù)運算符的注意事項。在進(jìn)行除運算時,如果兩個操作數(shù)都是整數(shù)類型,則進(jìn)行整除除法,向下取整,得到整數(shù)結(jié)果。當(dāng)兩個操作數(shù)至少有一個為浮點數(shù)類型,那么結(jié)果為一個浮點數(shù)。例如:10/4的結(jié)果為2,10/4.0的結(jié)果為2.5。在進(jìn)行取模運算時,運算結(jié)果的正負(fù)取決于被模數(shù)(即運算符%左邊的數(shù)),與模數(shù)(即運算符%右邊的數(shù)無關(guān))。例如,-9%4的值為1,而9%-4的值為-1。自增自減運算符單獨使用時,++和--放在變量前后沒有區(qū)別,而與其他運算符混合使用時,++和--放在操作數(shù)前面,先進(jìn)行自增或自減運算,再進(jìn)行其他運算,反之,先進(jìn)行其他運算,再進(jìn)行自增或自減運算。2.4.1算術(shù)運算符案例演示自增自減運算符在使用時極容易混淆,下面通過一個案例進(jìn)一步學(xué)習(xí)它們的使用。Example05.java源代碼2.4.1算術(shù)運算符案例演示案例運行結(jié)果如下圖所示。2.4.2賦值運算符

先定一個小目標(biāo)!掌握賦值運算符,能夠使用賦值運算符對變量進(jìn)行賦值2.4.2賦值運算符賦值運算符主要用于給一個變量賦值。運算時它將運算符右側(cè)的值賦給左側(cè)的變量。運算符運算范例結(jié)果=賦值a=5a=5+=加等于a=5;b=4;a+=ba=9;b=4-=減等于a=5;b=4;a-=ba=1;b=4*=乘等于a=5;b=4;a*=b;a=20;b=4/=除等于a=5;b=4;a/=b;a=1;b=4%=模等于a=5;b=4;a%=b;a=1;b=4在上表中,除了“=”,其他都屬于復(fù)合賦值運算符,即在完成某種運算的同時,進(jìn)行賦值運算。例如a+=2等價于a=a+2。2.4.2賦值運算符使用賦值運算符需要注意的問題。賦值運算符的左邊只能是變量,右邊可以是常量、變量或表達(dá)式。例如:a=5;b=4;a+=b都屬于表達(dá)式賦值運算符“=”與數(shù)學(xué)中的等號不同。后者強(qiáng)調(diào)左右相等之意,而前者無此含義。因此在編程中要注意賦值運算符“=”不能表示符號左右兩邊相等。2.4.3比較運算符

先定一個小目標(biāo)!掌握比較運算符,能夠使用比較運算符對兩個數(shù)值或變量進(jìn)行比較2.4.3比較運算符比較運算符也稱為關(guān)系運算符,用于對兩個數(shù)值或變量進(jìn)行比較。通常將比較運算符連接起來的表達(dá)式也稱為關(guān)系表達(dá)式,關(guān)系表達(dá)式的結(jié)果是一個布爾值,即true或false。運算符運算范例結(jié)果==等于4==3false!=不等于4!=3true<

小于4<3false>

大于4>3true<=小于或等于4<=3false>=大于或等于4>=3true需要注意的是,在比較運算中,不能將比較運算符“==”誤寫成賦值運算符“=”。2.4.4邏輯運算符

先定一個小目標(biāo)!掌握邏輯運算符,能夠使用邏輯運算符對布爾型的數(shù)據(jù)進(jìn)行操作2.4.4邏輯運算符邏輯運算符用于對布爾型的數(shù)據(jù)進(jìn)行操作,其結(jié)果仍是一個布爾值,常用于條件判斷、循環(huán)結(jié)構(gòu),以及布爾表達(dá)式的組合邏輯中。運算符運算范例結(jié)果!邏輯非!truefalse!falsetrue&邏輯與true&truetruetrue&falsefalsefalse&falsefalsefalse&truefalse&&短路與true&&truetruetrue&&falsefalsefalse&&falsefalsefalse&&truefalse2.4.4邏輯運算符接上頁表格。運算符運算范例結(jié)果|邏輯或true|truetruetrue|falsetruefalse|falsefalsefalse|truetrue||短路或true||truetruetrue||falsetruefalse||falsefalsefalse||truetrue^邏輯異或true^truefalsetrue^falsetruefalse^falsefalsefalse^truetrue2.4.4邏輯運算符使用邏輯運算符的注意事項。運算符“&”、“|”在做邏輯運算時,與“&&”和“||”具有相似的功能,但是它們在使用上有一些關(guān)鍵區(qū)別,具體如下。在使用“&”進(jìn)行運算時,不論左邊表達(dá)式的值為true還是false,右邊的表達(dá)式都會被執(zhí)行。而在使用“&&”進(jìn)行運算時,如果左邊表達(dá)式的值為false,右邊的表達(dá)式將不會被執(zhí)行。在使用“|”進(jìn)行運算時,不論左邊的值為true還是false,右邊的表達(dá)式都會被執(zhí)行。而在使用“||”進(jìn)行運算時,如果左邊的值為true,右邊的表達(dá)式將不被執(zhí)行。2.4.4邏輯運算符下面通過一個案例加深對“&”和“&&”的學(xué)習(xí)。案例演示Example06.java源代碼2.4.4邏輯運算符案例的運行結(jié)果如下圖所示。案例演示2.4.4邏輯運算符多學(xué)一招:運算符“&”“|”和“^”的按位運算運算符“&”“|”和“^”在Java中除了可以做邏輯運算還可以做位運算,常用于兩個整數(shù)的二進(jìn)制位按位運算。使用“&”按位與運算:如果兩個操作數(shù)都為1,則運算結(jié)果為1,否則為0。使用“|”按位或運算:對兩個操作數(shù)的每個對應(yīng)位執(zhí)行邏輯或操作,如果其中至少有一位為1,則結(jié)果為1,否則為0。使用“^”按位異或運算:對兩個操作數(shù)的每個對應(yīng)位執(zhí)行邏輯異或操作,如果兩個位相同,結(jié)果為0,否則為1。2.4.4邏輯運算符多學(xué)一招:運算符“&”“|”和“^”的按位運算下面以使用“&”進(jìn)行按位與運算為例進(jìn)行說明。inta=5;intb=3;intresult=a&b;思考result的值為多少2.4.5三元運算符

先定一個小目標(biāo)!掌握三元運算符,能夠使用三元運算符進(jìn)行運算2.4.5三元運算符三元運算符又稱為條件運算符,用于根據(jù)條件的真假來選擇返回不同的值。三元運算符的語法格式如下。條件表達(dá)式?表達(dá)式1:表達(dá)式2在上述語法格式中,當(dāng)條件表達(dá)式的結(jié)果為true時,返回表達(dá)式1的值作為整個表達(dá)式的結(jié)果,否則返回表達(dá)式2的值作為整個表達(dá)式的結(jié)果。2.4.5三元運算符使用三元運算符的注意事項。三元運算符的最終結(jié)果一定要被使用,或者賦給一個變量,或者直接輸出。三元運算符“?”和“:”是一對運算符,不能分開單獨使用。三元表達(dá)式可以進(jìn)行嵌套,結(jié)合方向自右向左。例如:a>b?a:c>d?c:d可以理解為a>b?a:(c>d?c:d),這也是三元表達(dá)式的嵌套情形,即三元表達(dá)式中的表達(dá)式2又是一個三元表達(dá)式。2.4.5三元運算符案例演示Example07.java源代碼下面通過一個案例來學(xué)習(xí)三元運算符的使用,要求分別輸出兩個數(shù)中的較大值和較小值。2.4.5三元運算符案例演示案例的運行結(jié)果如下圖所示?!景咐?-1】學(xué)生成績單案例描述現(xiàn)有三名學(xué)生的考試成績需要錄入系統(tǒng)并打印出成績單。本案例要求編寫一個模擬錄入學(xué)生考試成績的程序,在控制臺輸入三名學(xué)生的三門考試成績,并計算每個學(xué)生的平均分,最后輸出三名學(xué)生的考試成績單和平均成績,以及此次考試學(xué)生平均成績的最高分。在Java程序中,如果想讀取用戶輸入到命令行中的內(nèi)容,可以使用Scanner類,用于讀取用戶輸入和文件等數(shù)據(jù)源。使用

Scanner類讀取命令行輸入數(shù)據(jù)的示例代碼如下。Scannersc=newScanner(Syatem.in);intcount=sc.nextInt();【案例2-1】學(xué)生成績單案例效果選擇結(jié)構(gòu)語句2.52.5選擇結(jié)構(gòu)語句在Java程序中,選擇結(jié)構(gòu)語句是一種流程控制語句,它可以根據(jù)特定的條件來選擇性地執(zhí)行不同的語句塊。Java中常見的選擇結(jié)構(gòu)語句有if語句和switch語句。2.5.1if語句

先定一個小目標(biāo)!掌握if語句,能夠使用if語句、if…else語句、if…elseif…else語句進(jìn)行條件判斷2.5.1if語句if語句用于根據(jù)某個條件的結(jié)果決定是否執(zhí)行特定的代碼塊,if語句有三種應(yīng)用格式,分別為if語句、if…else語句和if…elseif…else語句。2.5.1if語句1.if語句if語句是指如果滿足條件,就進(jìn)行某種處理。if語句的語法格式如下。if(判斷條件){

執(zhí)行語句}判斷條件可以為一個布爾值或者一個條件表達(dá)式。如果判斷條件的結(jié)果為true,執(zhí)行if語句中的“執(zhí)行語句”。如果判斷條件的結(jié)果為false,則跳過f語句中的“執(zhí)行語句”,繼續(xù)執(zhí)行下面的代碼。2.5.1if語句1.if語句使用if語句的注意事項。關(guān)鍵字if與判斷條件組成的行并不是語句,它們連同其后的執(zhí)行語句(或代碼塊)一起才構(gòu)成了完整的語句。不要在判斷條件的圓括號后加分號。若加了,雖然不會出現(xiàn)語法錯誤,但此時的代碼邏輯完全改變,if語句中的執(zhí)行語句變?yōu)榭照Z句,而原本要執(zhí)行的語句不再受if語句控制。2.5.1if語句1.if語句if語句的執(zhí)行流程,如下圖所示。2.5.1if語句案例演示下面通過一個測量體溫的案例學(xué)習(xí)if語句的具體用法。Example08.java源代碼2.5.1if語句案例演示案例的運行效果如下圖所示。2.5.1if語句2.if…else語句if…else語句是指如果滿足某種條件,就進(jìn)行某種處理,否則就進(jìn)行另一種處理。if…else語句的語法格式如下。if(判斷條件){

執(zhí)行語句1}else{

執(zhí)行語句2}判斷條件為true,則執(zhí)行if后面{}中的執(zhí)行語句1。判斷條件為false,則執(zhí)行else后面{}中的執(zhí)行語句2。2.5.1if語句2.if…else語句使用if…else語句的注意事項。執(zhí)行語句1和執(zhí)行語句2必須是互斥的,必須有且僅有一個被執(zhí)行。else之前必須有其匹配的if,否則程序會報錯。2.5.1if語句2.if…else語句if…else語句的執(zhí)行過程,如下圖所示。2.5.1if語句案例演示下面通過一個根據(jù)年齡判斷是否成年的案例進(jìn)一步學(xué)習(xí)if…else語句的使用。Example09.java源代碼2.5.1if語句案例演示案例的運行效果如下圖所示。2.5.1if語句2.if…elseif…else語句if…elseif…else語句可以用于根據(jù)多個條件判斷選擇不同的執(zhí)行路徑,語法格式如下。if(判斷條件1){

執(zhí)行語句1}elseif(判斷條件2){

執(zhí)行語句2}...elseif(判斷條件n){

執(zhí)行語句n}else{

執(zhí)行語句n+1}2.5.1if語句2.if…elseif…else語句if…elseif…else語句的執(zhí)行流程,如下圖所示。2.5.1if語句案例演示下面通過一個根據(jù)月份判斷季節(jié)的案例演示if…elseif…else語句的用法。Example10.java源代碼2.5.1if語句案例演示案例的運行結(jié)果如下圖所示?!景咐?-2】商場購物打折案例描述商場今日搞促銷活動,在購物結(jié)算時,不同的購物金額可以享受不同的優(yōu)惠力度。不同購物金額對應(yīng)的折扣規(guī)則如下。當(dāng)購物金額不超過100元時,不享受任何優(yōu)惠,仍需原價支付。當(dāng)購物金額超過100元,但不超過200元時,打九折。當(dāng)購物金額超過200元,但不超過300元時,打八折。當(dāng)購物金額超過300元時,打七折。本案例需要實現(xiàn)一個購物結(jié)算的程序,根據(jù)輸入的購物金額,結(jié)合購物打折規(guī)則計算應(yīng)支付金額,并輸出購物金額、支付金額和優(yōu)惠信息。【案例2-2】商場購物打折案例效果

先定一個小目標(biāo)!掌握switch語句,能夠使用switch條件語句根據(jù)不同的值執(zhí)行不同的語句2.5.2switch語句2.5.2switch語句switch語句通過某個表達(dá)式的結(jié)果或某個變量的值做出判斷,從而決定程序執(zhí)行哪一段代碼。。2.5.2switch語句switch語句的語法格式。switch(表達(dá)式或變量){ case目標(biāo)值1:

語句或代碼塊1 break; case目標(biāo)值2:

語句或代碼塊2 break; ... case目標(biāo)值n:

語句或代碼塊n break; default:

語句或代碼塊n+1 break;}將表達(dá)式或變量的值與每個case后的目標(biāo)值進(jìn)行匹配。找到匹配的值,則執(zhí)行對應(yīng)case的后的語句若沒找到,則執(zhí)行default后的語句2.5.2switch語句使用switch語句的注意事項。switch語句中的表達(dá)式支持的數(shù)據(jù)類型只有整數(shù)類型、枚舉類型、字符類型、字符串類型,不支持浮點數(shù)類型和布爾類型。case條件后面的目標(biāo)值不允許重復(fù)。正常使用switch時,case后面的語句中最后一行需要使用break語句,否則會發(fā)生“穿透”現(xiàn)象。在使用switch語句時,如果多個case條件后面的執(zhí)行語句是一樣的,則執(zhí)行語句只需書寫一次即可。2.5.2switch語句下面通過一個根據(jù)學(xué)生成績評定等級的案例來學(xué)習(xí)switch語句的使用。案例演示Example11.java源代碼2.5.2switch語句案例的運行效果如下圖所示。案例演示2.5.2switch語句將第3行代碼修改為intscore=100,再次運行程序,效果如下圖所示。案例演示【案例2-3】積分兌換小程序某個學(xué)校為了激勵學(xué)生踴躍參加一些社會實踐活動,會對參與者給予一些校園積分,學(xué)生們獲得校園積分后可以使用校園積分在指定的老師那兌換一些學(xué)習(xí)用具,當(dāng)前可兌換的物品和對應(yīng)的積分?jǐn)?shù)量如下表所示。案例描述物品名稱所需校園積分鉛筆1橡皮2作業(yè)本3文具盒5為了方便學(xué)生進(jìn)行兌換,現(xiàn)在需要實現(xiàn)一個積分兌換小程序,輸入所兌換的用具編號進(jìn)行兌換,并且兌換后可以選擇繼續(xù)兌換,控制臺輸出可以繼續(xù)兌換的用具個數(shù)和剩余積分。【案例2-3】積分兌換小程序假設(shè)小明現(xiàn)有20積分,他現(xiàn)在使用該程序進(jìn)行兌換的效果如圖1所示。案例效果循環(huán)結(jié)構(gòu)語句2.62.6循環(huán)結(jié)構(gòu)語句循環(huán)結(jié)構(gòu)語句也是Java程序中的一種流程控制語句,它用于在程序中重復(fù)地執(zhí)行某一段代碼,直到滿足退出條件為止。例如,在跳繩時,會重復(fù)進(jìn)行跳躍和擺動繩子的動作;打乒乓球時,會重復(fù)揮拍的動作等。Java中的循環(huán)結(jié)構(gòu)語句分為while循環(huán)語句、do…while循環(huán)語句和for循環(huán)語句。2.6.1while循環(huán)語句

先定一個小目標(biāo)!掌握while循環(huán)語句,能夠使用while循環(huán)語句執(zhí)行循環(huán)2.6.1while循環(huán)語句循環(huán)語句可以在滿足循環(huán)條件的情況下,反復(fù)執(zhí)行某一段代碼,這段被重復(fù)執(zhí)行的代碼被稱為循環(huán)體。while循環(huán)語句是Java中常用的循環(huán)語句,它需要先判斷循環(huán)條件,如果該條件為真,則執(zhí)行循環(huán)體,否則跳出循環(huán)。2.6.1while循環(huán)語句while循環(huán)語句的語法結(jié)構(gòu)如下。while(循環(huán)條件){

循環(huán)體}{}中循環(huán)體是否執(zhí)行取決于循環(huán)條件。當(dāng)循環(huán)條件為true時,循環(huán)體就會執(zhí)行。循環(huán)體執(zhí)行完畢,程序繼續(xù)判斷循環(huán)條件。如果條件仍為true,則繼續(xù)執(zhí)行循環(huán)體,直到循環(huán)條件為false時,整個循環(huán)過程才會結(jié)束。2.6.1while循環(huán)語句while循環(huán)的執(zhí)行過程。2.6.1while循環(huán)語句下面通過一個求1~100所有整數(shù)之和的案例演示while循環(huán)語句的用法。案例演示Example12.java源代碼2.6.1while循環(huán)語句案例運行結(jié)果。案例演示2.6.2do…while循環(huán)語句

先定一個小目標(biāo)!掌握do...while循環(huán)語句,能夠使用do...while循環(huán)語句執(zhí)行循環(huán)2.6.2do…while循環(huán)語句do…while循環(huán)語句的語法結(jié)構(gòu)如下。do{

循環(huán)體}while(循環(huán)條件);do…while循環(huán)中,循環(huán)條件放在了循環(huán)體的后面,這也就意味著循環(huán)體會無條件執(zhí)行一次,然后再根據(jù)循環(huán)條件決定是否繼續(xù)執(zhí)行。2.6.2do…while循環(huán)語句do…while循環(huán)的執(zhí)行過程。2.6.2do…while循環(huán)語句下面通過一個案例學(xué)習(xí)do…while循環(huán)的使用。本案例模擬銀行取款的操作,當(dāng)用戶使用銀行ATM機(jī)取款時,需要在取款之前讓用戶輸入一次密碼,然后再去判斷密碼是否正確,如果密碼不正確,ATM機(jī)會允許再次輸入密碼。案例演示Example13.java源代碼2.6.2do…while循環(huán)語句案例的運行效果如下圖所示。案例演示輸入錯誤的密碼后,程序又一次輸出“請輸入您的取款密碼”,在上圖輸入正確的密碼,效果如下圖所示。2.6.3for循環(huán)語句

先定一個小目標(biāo)!掌握for循環(huán)語句,能夠使用for循環(huán)語句執(zhí)行循環(huán)2.6.3for循環(huán)語句for循環(huán)語句是非常常用的循環(huán)語句,一般用在循環(huán)次數(shù)已知的情況下。for循環(huán)語句的語法格式如下。for(初始化表達(dá)式;循環(huán)條件;操作表達(dá)式){

語句或代碼塊}初始化表達(dá)式:用于循環(huán)條件的初始化。循環(huán)條件:用于決定循環(huán)是否執(zhí)行,為布爾類型的值或表達(dá)式。操作表達(dá)式:用于在循環(huán)體執(zhí)行后對循環(huán)條件進(jìn)行修改。2.6.3for循環(huán)語句for(①;②;③){

④}第一步,執(zhí)行①。第二步,執(zhí)行②,如果判斷結(jié)果為true,執(zhí)行第三步,如果判斷結(jié)果為false,執(zhí)行第五步。第三步,執(zhí)行④。第四步,執(zhí)行③,然后重復(fù)執(zhí)行第二步。第五步,退出循環(huán)。for循環(huán)語句的執(zhí)行過程。2.6.3for循環(huán)語句下面使用for循環(huán)實現(xiàn)1~100整數(shù)的累加計算。案例演示Example14.java源代碼2.6.3for循環(huán)語句案例的運行效果如下圖所示。案例演示2.6.4循環(huán)嵌套

先定一個小目標(biāo)!掌握循環(huán)嵌套,能夠使用for語句進(jìn)行循環(huán)嵌套2.6.4循環(huán)嵌套循環(huán)嵌套是指在一個循環(huán)語句的循環(huán)體中再定義一個循環(huán)語句的語法結(jié)構(gòu),前者稱為外層循環(huán),后者稱為內(nèi)層循環(huán)。while、do…while、for循環(huán)語句都可以進(jìn)行嵌套,并且它們之間也可以相互嵌套。2.6.4循環(huán)嵌套for(初始化表達(dá)式;循環(huán)條件;操作表達(dá)式){

... for(初始化表達(dá)式;循環(huán)條件;操作表達(dá)式){

語句或代碼塊 ... } ...}for循環(huán)中嵌套for循環(huán)的語法格式如下。2.6.4循環(huán)嵌套下面通過使用“*”打印直角三角形來演示for循環(huán)嵌套的使用。案例演示Example15.java源代碼2.6.4循環(huán)嵌套案例的運行結(jié)果如下圖所示。案例演示2.6.5跳轉(zhuǎn)語句

先定一個小目標(biāo)!掌握跳轉(zhuǎn)語句,能夠簡述break語句和continue語句的作用,并在程序中使用這兩個語句進(jìn)行跳轉(zhuǎn)2.6.5跳轉(zhuǎn)語句跳轉(zhuǎn)語句用于實現(xiàn)循環(huán)執(zhí)行過程中程序流程的跳轉(zhuǎn),Java中常用的跳轉(zhuǎn)語句有break語句和continue語句。2.6.5跳轉(zhuǎn)語句break語句可以用在switch語句中和循環(huán)語句中。在switch語句中:終止某個case,并跳出switch結(jié)構(gòu)。在循環(huán)語句中:跳出循環(huán),執(zhí)行循環(huán)語句之后的代碼示例代碼如下:1.break語句for(初始化表達(dá)式;循環(huán)條件;操作表達(dá)式){if(判斷條件){

break;

}

執(zhí)行語句;}執(zhí)行break語句后,for循環(huán)內(nèi)的執(zhí)行語句不再執(zhí)行2.6.5跳轉(zhuǎn)語句通過一個查找12和18的最小公倍數(shù)的案例來演示break語句在循環(huán)中的使用。案例演示Example16.java源代碼2.6.5跳轉(zhuǎn)語句案例的運行結(jié)果如下圖所示。案例演示2.6.5跳轉(zhuǎn)語句continue語句用在循環(huán)語句中。作用:用于終止本次循環(huán),執(zhí)行下一次循環(huán)。示例代碼如下:2.continue語句for(初始化表達(dá)式;循環(huán)條件;操作表達(dá)式){if(判斷條件){

continue;

}

執(zhí)行語句;}執(zhí)行continue語句后,for循環(huán)內(nèi)的執(zhí)行語句在下一次循環(huán)時還有機(jī)會執(zhí)行2.6.5跳轉(zhuǎn)語句下面通過一個案例演示continue語句在循環(huán)中的作用,本案例對1~100的奇數(shù)進(jìn)行求和。案例演示Example17.java源代碼2.6.5跳轉(zhuǎn)語句案例的運行效果如下圖所示。案例演示【案例2-4】猜數(shù)字游戲編寫一個程序,生成一個1到100之間的隨機(jī)數(shù),并讓用戶猜測該數(shù)是多少。根據(jù)用戶的輸入,給出相應(yīng)的提示,例如,“猜大了”、“猜小了”或“猜對了”。若未猜對,則繼續(xù)猜,直到用戶猜對數(shù)字,程序結(jié)束。案例描述Java中可以使用Random類來生成隨機(jī)數(shù),它提供了nextInt()和nextDouble()等方法來生成隨機(jī)整數(shù)和隨機(jī)浮點數(shù),示例代碼如下。Randomrandom=newRandom();//創(chuàng)建一個Random對象intrandomNumber=random.nextInt(100)+1;//生成一個1~100之間隨機(jī)整數(shù)【案例2-4】猜數(shù)字游戲案例效果【案例2-5】斐波那契數(shù)列斐波那契數(shù)列是指以0和1開始,后面的每一項都是前面兩項的和。本案例要求編寫一個程序?qū)崿F(xiàn)輸出斐波那契數(shù)列的前20項。案例描述【案例2-5】斐波那契數(shù)列案例效果數(shù)組2.72.7數(shù)組變量可以用來存儲和操作程序運行過程中的數(shù)據(jù)。然而,基本類型的變量只能存儲單個數(shù)據(jù),假設(shè)現(xiàn)在需要存儲班級內(nèi)50名學(xué)生的成績,如果使用基本類型的變量,就需要定義50個變量,這顯然是非常煩瑣的。在這種情況下,就可以使用一個表示成績的數(shù)組來同時存儲50名學(xué)生的成績。數(shù)組是一個容器,可以用來存儲同種數(shù)據(jù)類型的多個值,每個值稱為數(shù)組的元素。掌握數(shù)組的聲明和初始化,能夠使用靜態(tài)初始化和動態(tài)初始化的方式創(chuàng)建數(shù)組2.7.1數(shù)組的聲明和初始化

先定一個小目標(biāo)!2.7.1數(shù)組的聲明和初始化數(shù)組聲明的格式:方式一:方式二:type:數(shù)組元素的數(shù)據(jù)類型arrayName:數(shù)組名稱1.數(shù)組的聲明type[]arrayName;typearrayName[];示例代碼:int[]salary;double[]price;String[]name;2.7.1數(shù)組的聲明和初始化數(shù)組的初始化:概念:為數(shù)組元素分配內(nèi)存空間,并為每個數(shù)組元素賦初始值。分類:(1)靜態(tài)初始化(2)動態(tài)初始化2.數(shù)組的初始化2.7.1數(shù)組的聲明和初始化(1)靜態(tài)初始化靜態(tài)初始化是指數(shù)組初始化時,顯示指定每個數(shù)組元素的初始值。靜態(tài)初始化的語法格式:格式一:格式二:2.數(shù)組的初始化type[]arrayName=newtype[]{元素1,元素2,元素3,……,元素n};示例:int[]arr1=newint[]{1,3,5,7,9};type[]arrayName={元素1,元素2,元素3,……,元素n};示例:int[]arr2={2,4,6,8,10};2.7.1數(shù)組的聲明和初始化2.數(shù)組的初始化需要注意的是,如果使用格式二進(jìn)行靜態(tài)初始化,數(shù)組的聲明和初始化操作要同步,即初始化的代碼中,不能省略數(shù)組中元素的數(shù)據(jù)類型,否則會報錯。例如:int[]arr2;arr2={2,4,6,8,10};這樣寫會報錯2.7.1數(shù)組的聲明和初始化2.數(shù)組的初始化(2)動態(tài)初始化動態(tài)初始化是指數(shù)組初始化時只指定數(shù)組長度,即指定數(shù)組中存放數(shù)組元素的個數(shù),由系統(tǒng)為數(shù)組元素分配初始值,語法格式如下:length:數(shù)組長度(指定后不能再修改)type[]arrayName=newtype[length];示例:int[]arr=newint[5];2.7.1數(shù)組的聲明和初始化2.數(shù)組的初始化(2)動態(tài)初始化動態(tài)初始化時,系統(tǒng)為數(shù)組元素分配初始默認(rèn)值,根據(jù)元素類型的不同,默認(rèn)初始值也不同。數(shù)據(jù)類型默認(rèn)初始值byte、short、int、long0float、double0.0char一個空字符,即'\u0000'booleanfalse引用數(shù)據(jù)類型null,表示變量不引用任何對象2.7.1數(shù)組的聲明和初始化2.數(shù)組的初始化獲取數(shù)組長度:length:固定寫法,數(shù)組的屬性名。示例:arrayName.length;int[]arr1=newint[5];

//arr1.length的值為5int[]arr2={0,2,4,6,8,10};//arr2.length的值為62.7.1數(shù)組的聲明和初始化2.數(shù)組的初始化需要注意的是,對一個數(shù)組進(jìn)行初始化時,不要同時使用靜態(tài)初始化和動態(tài)初始化,即不要初始化數(shù)組時既顯示指定元素的初始值,又指定數(shù)組的長度,這樣代碼會報錯。2.7.1數(shù)組的聲明和初始化2.數(shù)組的初始化數(shù)組初始化后,系統(tǒng)會為數(shù)組分配內(nèi)存空間,每塊內(nèi)存空間都有對應(yīng)的地址進(jìn)行標(biāo)記。數(shù)組是引用數(shù)據(jù)類型,數(shù)組名中存儲的是數(shù)組在內(nèi)存中的地址。示例:int[]arr; //聲明一個int[]類型的變量arr=newint[3];

//為arr分配3個數(shù)組元素的空間掌握數(shù)組元素的訪問和賦值,能夠通過索引對數(shù)組元素訪問并賦值2.7.2數(shù)組元素的訪問和賦值

先定一個小目標(biāo)!2.7.2數(shù)組元素的訪問和賦值1.數(shù)組元素的訪問數(shù)組中的每個元素都有對應(yīng)的索引,可以通過數(shù)組的索引來訪問數(shù)組元素。格式如下:數(shù)組名[索引]數(shù)組的索引值從0開始,到數(shù)組長度-1,也就是說,數(shù)組中第2個元素的索引值為1。2.7.2數(shù)組元素的訪問和賦值案例演示Example18.java源代碼下面通過一個案例演示如何訪問數(shù)組中的元素。2.7.2數(shù)組元素的訪問和賦值案例演示案例運行結(jié)果如下圖所示。2.7.2數(shù)組元素的訪問和賦值2.數(shù)組元素的賦值數(shù)組初始化后,數(shù)組中的元素就具有了初始值,可以顯式指定,也可以由系統(tǒng)自動分配。如果需要修改數(shù)組元素的值,可以重新為數(shù)組元素賦值。2.7.2數(shù)組元素的訪問和賦值案例演示Example19.java源代碼下面通過一個案例演示如何為數(shù)組元素賦值。2.7.2數(shù)組元素的訪問和賦值案例演示案例運行結(jié)果如下圖所示。2.7.2數(shù)組元素的訪問和賦值腳下留心:數(shù)組索引越界和空指針異常數(shù)組在使用之前需要對數(shù)組進(jìn)行有效賦值,訪問數(shù)組元素時,指定的索引需要大于或等于0,并且小于數(shù)組的長度,否則雖然程序在編譯時不會出現(xiàn)任何錯誤,但在運行時可能出現(xiàn)異常。這兩種情況造成的異常分別為數(shù)組索引越界和空指針異常。2.7.2數(shù)組元素的訪問和賦值腳下留心:數(shù)組索引越界和空指針異常(1)數(shù)組索引越界數(shù)組元素的索引最小值為0,最大值為數(shù)組長度-1,在訪問數(shù)組的元素時,索引不能超出這個范圍,否則程序會報錯。下面通過案例演示索引超出數(shù)組范圍的情況。Example20.java源代碼2.7.2數(shù)組元素的訪問和賦值腳下留心:數(shù)組索引越界和空指針異常(1)數(shù)組索引越界案例的運行效果如下圖所示。2.7.2數(shù)組元素的訪問和賦值腳下留心:數(shù)組索引越界和空指針異常(2)空指針異常在使用變量引用一個數(shù)組時,變量必須指向一個有效地數(shù)組對象,如果該變量的值為null,則意味著沒有指向任何數(shù)組,此時通過該變量訪問數(shù)組的元素會出現(xiàn)空指針異常。下面通過案例演示這種現(xiàn)象。Example21.java源代碼2.7.2數(shù)組元素的訪問和賦值腳下留心:數(shù)組索引越界和空指針異常(2)空指針異常案例運行結(jié)果如下圖所示。掌握數(shù)組的常見操作,能夠?qū)?shù)組進(jìn)行遍歷、排序、最值的獲取2.7.3數(shù)組的常見應(yīng)用

先定一個小目標(biāo)!2.7.3數(shù)組的常見應(yīng)用1.數(shù)組的遍歷數(shù)組的遍歷指的是對數(shù)組中的每個元素進(jìn)行逐個訪問和處理的過程。通過對數(shù)組的遍歷,可以逐個讀取數(shù)組中的元素,從而進(jìn)行一系列的操作或者獲取每個元素的值。2.7.3數(shù)組的常見應(yīng)用1.數(shù)組的遍歷在Java中,有多種方式可以遍歷數(shù)組,其中,for循環(huán)是常見的遍歷數(shù)組的方式。通過設(shè)置一個變量為索引,從0開始循環(huán)到數(shù)組的長度-1,可以逐個訪問數(shù)組中的元素,并對其進(jìn)行操作。2.7.3數(shù)組的常見應(yīng)用案例演示Example22.java源代碼下面通過一個案例演示使用for循環(huán)遍歷數(shù)組,根據(jù)部門內(nèi)10個員工每個人的銷售額計算部門銷售總額。2.7.3數(shù)組的常見應(yīng)用案例演示案例的運行結(jié)果如下圖所示。2.7.3數(shù)組的常見應(yīng)用2.數(shù)組的排序在實際開發(fā)中,數(shù)組最常用的操作就是排序,數(shù)組的排序方法有很多,下面講解一種比較常見的數(shù)組排序算法——冒泡排序。2.7.3數(shù)組的常見應(yīng)用2.數(shù)組的排序冒泡排序,就是不斷地比較數(shù)組中相鄰的兩個元素,較小者向上浮,較大者往下沉,整個過程和水中氣泡上升的原理相似。(1)第1輪排序,從第一個數(shù)組元素開始,依次將相鄰的兩個數(shù)組元素進(jìn)行比較,如果前一個數(shù)組元素的值比后一個數(shù)組元素的值大,則交換它們的位置。整個過程完成后,數(shù)組中最后一個數(shù)組元素就是最大值,第一輪比較完成。(2)第2輪排序,除了最后一個數(shù)組元素,將剩余的數(shù)組元素繼續(xù)進(jìn)行兩兩比較,過程與第一步相似,這樣就可以將數(shù)組中第二大的元素放在倒數(shù)第二個位置。后續(xù)依次類推。2.7.3數(shù)組的常見應(yīng)用案例演示Example23.java源代碼下面通過一個案例演示使用冒泡排序?qū)?shù)組進(jìn)行排序。2.7.3數(shù)組的常見應(yīng)用案例演示案例的運行結(jié)果如下圖所示。2.7.3數(shù)組的常見應(yīng)用2.數(shù)組的排序分析案例中冒泡排序的過程2.7.3數(shù)組的常見應(yīng)用2.數(shù)組的排序分析案例中元素交換的過程。2.7.3數(shù)組的常見應(yīng)用3.最值的獲取在操作數(shù)組時,經(jīng)常需要獲取數(shù)組中元素的最值。例如在一組數(shù)組中,找到最大的數(shù)或者最小的數(shù),下面通過一個案例演示如何獲取數(shù)組中元素的最大值。Example24.java源代碼2.7.3數(shù)組的常見應(yīng)用3.最值的獲取案例的運行結(jié)果如下圖所示。熟悉二維數(shù)組的使用,能夠使用靜態(tài)初始化和動態(tài)初始化的方式創(chuàng)建二維數(shù)組和遍歷二維數(shù)組2.7.4二維數(shù)組

先定一個小目標(biāo)!2.7.4二維數(shù)組前面講解的數(shù)組,存儲數(shù)據(jù)的結(jié)構(gòu)可以看作表格中的一行多列,索引為列號,通過列號可以訪問對應(yīng)單元格中的數(shù)據(jù),通常將這種只使用一個索引訪問數(shù)組元素的數(shù)組稱為一維數(shù)組。如果需要存儲多行多列的數(shù)據(jù)時,例如存儲五子棋的棋盤上的棋子信息時,需要同時存儲棋子在棋盤中行和列的信息,這時就可以使用多維數(shù)組。2.7.4二維數(shù)組多維數(shù)組可以簡單地理解為在數(shù)組中嵌套數(shù)組,即數(shù)組的元素是一個數(shù)組。在程序中比較常見的多維數(shù)組就是二維數(shù)組,二維數(shù)組就是指維數(shù)為2的數(shù)組,即數(shù)組有兩個索引,其邏輯結(jié)構(gòu)按行列排列,兩個索引分別表示行和列,通過行和列可以準(zhǔn)確標(biāo)識一個元素。2.7.4二維數(shù)組1.二維數(shù)組的定義二維數(shù)組有三種定義方式。(1)方式一:確定行數(shù)和列數(shù)數(shù)組arr中元素的存儲情況:數(shù)據(jù)類型[][]數(shù)組名=new數(shù)據(jù)類型[行數(shù)][列數(shù)];示例:int[][]arr=newint[3][4];2.7.4二維數(shù)組1.二維數(shù)組的定義(2)方式二:確定行數(shù)不確定列數(shù)數(shù)組arr中元素的存儲情況:數(shù)據(jù)類型[][]數(shù)組名=newint[行數(shù)][];示例:int[][]arr=newint[3][];2.7.4二維數(shù)組1.二維數(shù)組的定義(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論