版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
AI賦能Java語言編程:從入門到高階第1章Java簡介第2章Java標識符與數(shù)據(jù)類型第3章
表達式和流程控制語句第4章
數(shù)組和向量第5章
字符串第6章
對象與類第7章Java異常處理第8章Java語言的高級特性第9章Java的圖形用戶界面設(shè)計第10章Swing組件第11章Java數(shù)據(jù)流輸入與輸出第12章
線程第13章Java的網(wǎng)絡(luò)功能第14章
算法競賽中的Java編程第15章AI鏈無代碼生成平臺Sapper全套可編輯PPT課件
Java簡介JavaIntroduction第一章全套可編輯PPT課件
目標/OBJECTIVE0102030405了解Java語言的特點了解Java的跨平臺特性熟悉Java開發(fā)工具和環(huán)境的配置學會運行簡單的Java程序?qū)W會使用Java核心API文檔01什么是Java語言1.1什么是Java語言Java語言的特點Java是一種面向?qū)ο蟮木幊陶Z言,以其跨平臺特性、簡潔的語法和強大的生態(tài)系統(tǒng)而著稱。Java語言自誕生之日起,就廣受世界關(guān)注,它標志著Java計算時代的到來。Java的眾多特點使其廣受大眾歡迎,尤其是它突出的網(wǎng)絡(luò)編程能力,使其與Web及Internet緊密相連。語言特點:1.語法簡單,功能強大;2.具有跨平臺特性;3.分布式計算且具有安全性;4.具有混合模式的運行方式;5.具有多線程程序;6.動態(tài)執(zhí)行特性;7.具有豐富的API文檔和類庫。1.1什么是Java語言Java的三層結(jié)構(gòu)Java的三層結(jié)構(gòu)體現(xiàn)了分層設(shè)計的智慧,這一設(shè)計思想在軟件開發(fā)領(lǐng)域得到了廣泛的應用。這種結(jié)構(gòu)的理念起源于對分布式系統(tǒng)和大型企業(yè)應用的開發(fā)需求的深刻洞察。通過將系統(tǒng)巧妙地劃分為表示、業(yè)務邏輯和數(shù)據(jù)訪問這三個獨立層次,成功提高了系統(tǒng)的可維護性和可擴展性,就如同建造一座高樓大廈時,每一層都承擔著獨特的責任,共同構(gòu)成了穩(wěn)固的建筑結(jié)構(gòu)。Java作為一門廣泛應用于企業(yè)級應用的編程語言,通過三層結(jié)構(gòu)為開發(fā)者提供了一種精妙的架構(gòu)范式。這種設(shè)計思想猶如一位智者的指引,為當時的軟件開發(fā)注入了新的活力。而如今,這一思想仍然是軟件工程中的重要指導原則,就像是一顆恒久不變的北極星,引領(lǐng)著開發(fā)者構(gòu)建出更為可靠、可維護的應用系統(tǒng)。1.1什么是Java語言Java虛擬機1.Java虛擬機不同于其他匯編語言,Java程序并不直接在系統(tǒng)CPU上執(zhí)行,而是依賴于Java虛擬機(JavaVirtualMachine,JVM)。JVM的作用類似于一個翻譯器,將Java源代碼翻譯成可以在不同平臺上執(zhí)行的中間代碼,也就是字節(jié)碼。JVM的工作原理包括類加載、字節(jié)碼解釋與編譯、運行時數(shù)據(jù)區(qū)、垃圾回收以及安全性和運行時檢查。在類加載階段,JVM使用類加載器將字節(jié)碼加載到內(nèi)存中,而字節(jié)碼可以通過解釋器逐行解釋執(zhí)行,或者通過即時編譯器編譯成本地機器碼以提高執(zhí)行效率。運行時數(shù)據(jù)區(qū)的合理劃分包括堆、棧、方法區(qū)等,而垃圾回收器負責回收不再使用的內(nèi)存。安全性由安全管理器管理,同時運行時進行各種檢查以增強程序的健壯性。1.1什么是Java語言Java虛擬機
2.Java虛擬機性能早期JVM采用解釋執(zhí)行方式,每次運行程序都需要實時將字節(jié)碼翻譯成機器碼,這就好比是每次演講都需要現(xiàn)場翻譯,效率自然有所犧牲。然而,隨著技術(shù)的發(fā)展,Java的性能逐漸迎來了顯著提升。其中Hotspot技術(shù)的引入可視為一個重要的里程碑。Hotspot是由Oracle-Sun開發(fā)的一種JVM實現(xiàn),它引入了即時編譯器(Just-In-Timecompiler,JIT)技術(shù)。這就像是一位翻譯官聰明地提前翻譯了一部分文章,使得下次需要的時候,不必重新進行翻譯,大大提高了執(zhí)行效率。通過JIT編譯,Hotspot在運行時將熱點代碼(頻繁執(zhí)行的代碼段)直接編譯成本地機器碼,而不是像傳統(tǒng)的解釋執(zhí)行方式那樣逐行解釋。這種技術(shù)使得Java應用在運行時能夠更接近本地應用的執(zhí)行速度。1.1什么是Java語言垃圾收集
Java的垃圾收集(GarbageCollection)就好比是一位高效的清理工,負責檢查和回收那些不再被程序使用的內(nèi)存空間,以確保系統(tǒng)的資源得以有效利用。在Java中,垃圾收集器會定期檢查程序運行時生成的對象,識別并清理掉那些不再被引用的對象。相比于像C或C++等語言,Java的垃圾收集機制省去了程序員手動管理內(nèi)存的麻煩,就如同在生活中,有了垃圾分類和回收,人們不再需要親自去垃圾場傾倒垃圾一樣。這種自動化的垃圾收集方式帶來了更大的便利性,減輕了程序員的負擔,避免了因為內(nèi)存泄漏而導致的許多潛在問題。然而,與C或C++等語言相比,Java垃圾收集也存在一些性能上的開銷。在實時性要求極高的場景,像C語言一樣手動管理內(nèi)存可能更為靈活。1.1什么是Java語言代碼安全Java的代碼安全機制好比一座城堡,通過沙箱模型、三級安全檢查和Applet審查,構(gòu)筑了堅實的安全防線。
Java的“沙箱”模型像城堡外城門一樣,主要限制程序?qū)ο到y(tǒng)資源的訪問,確保程序在受限環(huán)境中運行,避免越界或?qū)ο到y(tǒng)造成不良影響。Java得到三級安全檢查機制類似城堡內(nèi)城墻,進一步強化安全屏障,包括類加載時的驗證、字節(jié)碼驗證和運行時的訪問控制。這三道防線確保只有受信任的程序進入城內(nèi),沒有攜帶潛在威脅。Applet作為Java程序環(huán)境的組成部分,類似城堡內(nèi)的貴賓,經(jīng)過嚴格審查和權(quán)限控制,以確保其不越權(quán)操作。綜合來看,Java的安全設(shè)計使得程序能夠在相對安全的環(huán)境中運行,有效地防范潛在的安全威脅。02一個基本的Java程序1.2一個基本的Java程序Java環(huán)境的配置在創(chuàng)建第一個Java程序之前,我們要先安裝一些必要的開發(fā)工具。首先進入OraCle-Sun公司官網(wǎng)下載Java的JDK軟件包,其中包含了Java開發(fā)所需的所有工具。在安裝好JDK后要正確配置Java_HOME、ClassPATH、Path環(huán)境變量,以便系統(tǒng)能夠找到JavaC和Java所在目錄。首先登錄到OraCle-Sun的官網(wǎng):https://www.oraCle.Com/Cn/Java/teChnologies/downloads/
這個頁面提供了所有主流操作系統(tǒng)下當前最新版本的JDK軟件包。讀者可以根據(jù)自己電腦的詳細配置情況自行選擇。這里以Windows系統(tǒng)為例,當前下載的文件是JDK.21.0.1的版本。1.2一個基本的Java程序Java環(huán)境的配置這里選擇下載x64MSIinstaller,點擊對應鏈接下載完成之后,打開文件即可直接進入安裝過程。如圖所示。JDK軟件包默認安裝位置在C盤,讀者也可以自行選擇安裝位置。如圖所示?!?.2一個基本的Java程序Java環(huán)境的配置當出現(xiàn)此步驟時,代表Java的JDK安裝成功。1.2一個基本的Java程序Java環(huán)境的配置完成以上操作以后,切記要配置三個重要的環(huán)境變量。首先我們打開系統(tǒng)設(shè)置,找到系統(tǒng)欄目下的系統(tǒng)信息,點擊高級系統(tǒng)設(shè)置,然后就會看到如圖所示的環(huán)境變量選項。點開以后,在用戶變量欄目下新建JAVA_HOME環(huán)境變量,變量值為剛才安裝的JDK的絕對文件路徑,然后點擊確定。環(huán)境變量的配置如圖。創(chuàng)建完成之后,新建環(huán)境變量CLASSPATH,其變量值為:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
(注意不要漏了前面的“.”)最后再新建環(huán)境變量Path(注意區(qū)分大小寫),其變量值為:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
配置系統(tǒng)環(huán)境變量
配置環(huán)境變量JAVA_HOME配置環(huán)境變量CLASSPATH配置環(huán)境變量Path1.2一個基本的Java程序Java環(huán)境的配置至此,Java的JDK軟件包就配置完成了。為了驗證自己的安裝正確性,可以使用Win+R組合鍵打開計算機運行窗口,再輸入cmd指令打開命令提示符環(huán)境。輸入Javac指令,如果看到如圖所示的幫助信息,則已正確安裝。1.2一個基本的Java程序Java應用程序Java程序一般分為兩種,一種是Java應用程序(JavaApplication),另一種則是Java小應用程序(Applet)。這兩者雖然只有一字之差,但卻存在很大的差別。從開發(fā)難度和復雜度來說,Java應用程序無疑更加具有挑戰(zhàn)性,一般是由大型團隊或公司開發(fā),且聲明周期長,需要長時間維護更新。而Java小程序則比較小巧靈活,開發(fā)難度不高,且不會消耗太多資源。和其他編程語言一致,Java語言也可以創(chuàng)建一個簡單的,通常意義下的應用程序。略有不同的是,Java的主類可以直觀的體現(xiàn)代碼的作用,如圖,代碼會在屏幕上顯示字符串“helloworld”。1.2一個基本的Java程序Java應用程序以上代碼包含了一個簡單小程序的基本組成。第一行:由一行注釋內(nèi)容的聲明標志,兩個正斜杠開頭。注釋不會對程序運行產(chǎn)生影響。第二行:public
classHelloWorld,這里定義了一個類,就像是一份菜單上寫著某個菜的名字,這個類的名字是"HelloWorld",其中public表示這個類是公開的,其他的地方也可以使用。第三行:publicstaticvoidmain(String[]args),這是定義了一個特殊的方法,就像是一家餐廳的招牌菜,叫做"main",這是Java程序的入口,當你運行這個程序時,計算機會從這里開始執(zhí)行。第四行:“{”,這是一個大括號,表示一個代碼塊的開始,就像是一頓飯的開始,里面放著我們要執(zhí)行的代碼。第五行:System.out.println("helloworld");,這是具體的代碼,就像是一道菜,這里的意思是告訴計算機把"helloworld"這句話打?。@示)到屏幕上。第六行:“}”,這是代碼塊的結(jié)束,就像是一頓飯的結(jié)束,表示在這里沒有更多的代碼了。03程序的編譯與運行1.3程序的編譯與運行編譯Java程序支持編譯運行和解釋運行兩種模式。用系統(tǒng)自帶文本編輯器(如Windows的記事本),輸入HelloWorld程序并保存為文件HelloWorld.Java。注意Java對大小寫敏感,確保文件名和Java程序主類名一致。在cmd中打開命令行窗口,進入文件所在磁盤,然后使用cd命令進入包含HelloWorld.Java文件的文件夾。使用dir命令查看文件夾內(nèi)容,可以看到只有HelloWorld.Java一個文件。使用Javac命令編譯程序:Javac-encodingUTF-8HelloWorld.Java再次用dir命令查看,發(fā)現(xiàn)文件夾下出現(xiàn)了一個.class的文件,則編譯成功。1.3程序的編譯與運行編譯源文件就是純文本格式的文件,而Java的執(zhí)行系統(tǒng)是無法直接識別的。因此必須對源代碼進行編譯,生成Java字節(jié)碼的類文件之后才能運行。如果編譯器沒有反饋錯誤信息,則證明編譯成功。
創(chuàng)建HelloWorld.java程序
編譯HelloWorld.java程序1.3程序的編譯與運行運行順利完成以上步驟以后,類文件就可以執(zhí)行了。Java的解釋器是’java’,JVM通過解釋器執(zhí)行類文件。執(zhí)行以下命令,即可運行程序HelloWorld:JavaHelloWorld//這里的HelloWorld是類名輸入命令并回車,結(jié)果如圖所示。會看到屏幕上顯示helloworld,這就是程序輸出的結(jié)果。04常見錯誤1.4常見錯誤編譯時錯誤1.錯誤提示內(nèi)容一Javac:Commandnotfound錯誤原因:包含Javac編譯器的路徑變量設(shè)置錯誤。請檢查環(huán)境變量的設(shè)置是否正確,大多數(shù)情況下Javac編譯器都放在JDK下的bin目錄中。2.錯誤提示內(nèi)容二HelloWorld.java:5:cannotfindsymbolsymbol:variablexSystem.out.println(x);^錯誤原因:在第5行中,使用了未聲明的變量x。要解決此錯誤,應該先聲明并初始化變量x,然后再使用它。1.4常見錯誤編譯時錯誤對于系統(tǒng)無法識別的標識符(由符號“^”指示的),可能出現(xiàn)以下幾種原因:●程序員可能犯了拼寫錯誤,包括大小寫不正確?!穹椒ㄋ诘念惪赡芪匆氲疆斍暗拿臻g?!駥嵗鶎念愔锌赡芪炊x要調(diào)用的方法?!衿渌?。在這里,只展示了一小部分可能的錯誤,其他錯誤需要在練習中逐漸熟悉,培養(yǎng)迅速定位和修復錯誤的能力。1.4常見錯誤運行時錯誤1.錯誤提示內(nèi)容一Can'tfindclassHelloWorld錯誤原因:系統(tǒng)無法找到名為HelloWorld的類文件。通常來說,此錯誤表明類名與源文件名不一致。編譯器在生成filename.class文件時,系統(tǒng)使用的是類定義的名稱。2.錯誤提示內(nèi)容二InclassHelloWorld:mainmustbepublicandstatic錯誤原因:在HelloWorld類中,main方法必須聲明為public和static。錯誤發(fā)生的原因是main方法的修飾符缺少這兩個關(guān)鍵字。修飾符public表示該方法是公有的,而static表示該方法是靜態(tài)的,因為它是程序的入口點,無需創(chuàng)建類的實例就可以調(diào)用。3.文件中類的個數(shù)錯誤錯誤原因:根據(jù)Java規(guī)范,每個源文件只能包含一個公有類,否則會導致運行時錯誤。如果有多個公有類,必須將它們分別放在不同的文件中。然而,一個文件可以包含任意數(shù)量的非公有類,沒有限制。這確保了Java編程的結(jié)構(gòu)清晰性,每個文件對應一個主要的公有類,其他非公有類可以作為輔助或內(nèi)部實現(xiàn)存在。1.4常見錯誤運行時錯誤4.層次錯誤一個.Java源文件可以包含三個“頂層”元素:●包說明(package語句):可選,指定類所屬的包?!褚胝Z句(import語句):可選,引入其他包中的類?!耦惡徒涌谡f明:源文件的主體,包括定義的類和接口。這些元素必須按照特定的次序出現(xiàn):引入語句必須在所有類說明之前。如果使用了包說明,包說明必須在所有類說明和引入語句前出現(xiàn)??傮w來說,Java程序結(jié)構(gòu)包括:●包說明(package語句):零個或一個,必須在文件開頭?!褚胝Z句(import語句):零個或多個,必須在所有類定義之前?!窆械模╬ublic)類定義:零個或一個?!耦惗x:零個或多個?!窠涌诙x:零個或多個。每個Java源文件至少包含一個類,但最多只能包含一個public類。如果源文件包含public類,文件名必須與該類名完全相同,且大小寫一致。05使用Java核心API文檔1.5使用Java核心API文檔Java核心API文檔是什么
API(ApplicationProgrammingInterface):應用程序編程接口簡單的來說,API就好比是一個軟件的服務窗口。當你需要在自己的程序中使用某個軟件的功能時,你可以通過API與這個軟件進行交流,就像通過窗口向服務員下單一樣。API定義了你可以怎樣與軟件進行通信,包括發(fā)送什么樣的請求以及獲取什么樣的響應。這樣,你的程序就可以與其他軟件互相合作,實現(xiàn)更豐富的功能,而無需了解對方的具體實現(xiàn)方式。1.5使用Java核心API文檔Java核心API文檔是什么
Java的核心API文檔被組織成了一種層次結(jié)構(gòu),就像一本書的目錄一樣。這本“書”的首頁是一個主頁,上面有鏈接,點擊鏈接可以進入每個“章節(jié)”或“包”的內(nèi)容。如果你選擇了特定的包,就會看到該包里面的所有類和接口的列表。每個類都有一個鏈接,點擊鏈接可以查看該類的詳細信息。這些類的文檔都按照相同的格式展示,雖然具體內(nèi)容可能有所不同??偟膩碚f,Java的核心API有43個“章節(jié)”(包),每個“章節(jié)”包含一些類和接口,它們又包含一些屬性。整個API文檔按照一定的順序列出了各個類的相關(guān)內(nèi)容。由于Java提供的內(nèi)容非常豐富,讀者不太可能在閱讀一兩本Java教科書后就能完全掌握。在實際編程中,API是不可或缺的工具。實際上,正是由于其豐富的API,Java才取得了如此巨大的成功。1.5使用Java核心API文檔Java核心API文檔的使用
要查看文檔,需要先從公司的網(wǎng)站下載文檔文件。假設(shè)文件存放在JDK目錄下,可以通過在瀏覽器地址欄中輸入jdk\docs\index.html來查看JDK文檔。Java核心API文檔的初始頁面如圖所示:1.5使用Java核心API文檔Java核心API文檔的使用
單擊JavaSEAPI進入類文檔窗口,如圖所示:1.5使用Java核心API文檔Java核心API文檔的使用
單擊JavaSEAPI進入類文檔窗口,如圖所示:這個窗口分為三部分:左上部分顯示JavaJDK8中提供的所有包的信息,在選中某個包之后,將在左下部分顯示這個包中所有接口及類的信息。1.5使用Java核心API文檔Java核心API文檔的使用例如,選擇查看Java.lang包,窗口顯示的內(nèi)容如圖所示:1.5使用Java核心API文檔Java核心API文檔的使用如果想進一步查看包中Integer類的信息,可選中Integer,右側(cè)窗口部分將顯示Java.lang中Integer類的所有接口及類的內(nèi)容(如圖1-20),向下拉動滾卷條,定位到所需的位置就可以了。1.5使用Java核心API文檔Java核心API文檔的使用通常情況下,一個類的信息可以分為以下幾個部分:●字段摘要:列舉了類中的成員變量信息,包括名稱、類型和含義?!駱?gòu)造方法摘要提供了關(guān)于類的構(gòu)造方法的信息,包括參數(shù)列表和實例創(chuàng)建的解釋?!穹椒ㄕ喊艘褂玫姆椒Q?!褡侄卧敿毿畔ⅲ簩Τ蓡T變量進行詳細介紹。●構(gòu)造方法詳細信息:展示構(gòu)造方法的詳細信息,包括參數(shù)列表和實例創(chuàng)建的過程?!穹椒ㄔ敿毿畔ⅲ簩Ψ椒ǖ氖褂眠M行詳細介紹,包括調(diào)用參數(shù)和返回值的情況。這六個部分成對呈現(xiàn),摘要部分提供簡要介紹,詳細信息部分詳細列示具體內(nèi)容。06本章小結(jié)本章小結(jié)本章介紹了Java語言的基本特點,包括其面向?qū)ο?、跨平臺、健壯性等特性。通過對Java的三層結(jié)構(gòu)、虛擬機、垃圾收集等核心概念的介紹,使讀者建立了對Java基礎(chǔ)架構(gòu)的整體認識。隨后,學習了如何配置Java環(huán)境、編寫基本的Java程序,以及程序的編譯與運行過程。最后,探討了常見的編譯時和運行時錯誤,以及如何利用Java核心API文檔進行更深入的學習。在深入學習Java編程的過程中,這些基礎(chǔ)知識將為讀者打下堅實的基礎(chǔ)。標識符與數(shù)據(jù)類型IdentifierandDataType第二章目標/OBJECTIVE010203基本語法單位基本數(shù)據(jù)類型復合數(shù)據(jù)類型01基本語法單位2.1基本語法單位Java是一種靜態(tài)類型的面向?qū)ο缶幊陶Z言,以類、變量、方法和運算符為基本語法單位。類定義對象的屬性和行為;變量用于存儲數(shù)據(jù);方法包含特定任務的代碼塊;運算符執(zhí)行運算。理解這些基本元素是掌握Java和編寫高效程序的關(guān)鍵??瞻鬃⑨尲罢Z句空白空白是指在代碼中沒有實際意義的空格、制表符、換行符和注釋。在Java中空白主要有兩個作用:(1)分隔符:空白可以用于分隔代碼中的標識符、關(guān)鍵字、運算符和常量等,以提高代碼的可讀性。例如,在變量賦值語句中,等號前后的空白可以使代碼更清晰易懂:intx=10;2.1基本語法單位(2)提高可讀性:適當?shù)目瞻卓梢允勾a更易讀,使代碼塊、表達式和語句的結(jié)構(gòu)更清晰明了。例如,在方法的參數(shù)列表中,使用空格將參數(shù)分隔開可以提高可讀性:`publicvoidprintNumbers(inta,intb,intc)`。另外,空白還可以用于縮進代碼塊,以在視覺上表示代碼的層次結(jié)構(gòu)??s進可以使代碼塊的邏輯結(jié)構(gòu)更加清晰,便于理解和維護。需要注意的是,Java編譯器會忽略空白,因此在語法上不會對程序的執(zhí)行產(chǎn)生影響。然而,良好的空白使用習慣可以提高代碼的可讀性和可維護性,使代碼更易于理解和修改??瞻椎膽萌缦滤荆簆ublicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,World!");}}2.1基本語法單位publicclassHelloWorld{publicstaticvoidmain(String[]args){System.out.println("Hello,World!");}}在上面的代碼中,空白被用于分隔關(guān)鍵字、類名、方法名、參數(shù)列表和語句,使代碼更易讀。注釋注釋是一種特殊的文本標記,用于對代碼進行解釋、說明和文檔化。這些注釋在編譯過程中會被編譯器忽略,不會被翻譯成可執(zhí)行的代碼。它們的主要作用是幫助其他開發(fā)人員更好地理解代碼的意圖和功能,提高代碼的可讀性和可維護性。通過合理使用注釋,可以使代碼更加易于理解和修改,提高團隊協(xié)作的效率。2.1基本語法單位(1)單行注釋:以雙斜線
//
開始,直到行末為止。用于在一行中對代碼進行短暫的解釋或說明。(2)多行注釋:以斜線星號
/*
開始,以星號斜線
*/
結(jié)束。用于注釋一段代碼或多行代碼。//這是一個單行注釋intage=25;//定義一個年齡變量/*這是一個多行注釋的示例。它可以跨越多行,用于對代碼塊進行詳細解釋。*/intsum=a+b;//計算兩個數(shù)的和。2.1基本語法單位(3)文檔注釋:以斜線星號
/**
開始,以星號斜線
*/
結(jié)束。用于生成文檔,可以通過工具生成API文檔。/***這是一個文檔注釋的示例。*它可以包含對類、方法、字段等的詳細描述。*/PublicclassMyClass{/***這是一個方法的文檔注釋。*它描述了方法的功能、參數(shù)和返回值。*@parama第一個參數(shù)*@paramb第二個參數(shù)*@return兩個參數(shù)的和*/publicintadd(inta,intb){returna+b;}}此外,文檔注釋還可以使用標簽(以@開頭)來提供更多的信息,例如@param用于描述方法參數(shù),@return用于描述返回值等。2.1基本語法單位語句、分號和塊語句是用來執(zhí)行特定操作的代碼單元。每個語句通常以分號(;)結(jié)尾,表示語句的結(jié)束。常見的語句類型包括表達式語句、聲明語句、控制流語句和塊。表達式語句:用于執(zhí)行計算或操作,例如賦值語句和方法調(diào)用語句。聲明語句:用于聲明變量或常量??刂屏髡Z句:用于控制程序的執(zhí)行流程,包括條件語句(if-else)、循環(huán)語句(for、while、do-while)和跳轉(zhuǎn)語句(break、continue、return)。塊:由一對花括號括起來的一組語句,用于形成邏輯上的代碼塊,常用于控制流語句和創(chuàng)建局部作用域。2.1基本語法單位關(guān)鍵字關(guān)鍵字是一類具有特定含義的保留字,它們用于構(gòu)建語言結(jié)構(gòu)、實現(xiàn)功能或設(shè)定限制。這些關(guān)鍵字具有預先定義的用途,不可用作標識符(如變量名、方法名等)。關(guān)鍵字涵蓋了定義類、變量、方法、控制流程等各個方面,通過運用這些關(guān)鍵字,可編寫符合語法規(guī)范的程序。關(guān)鍵字作用if條件語句關(guān)鍵字,用于根據(jù)表達式的值決定是否執(zhí)行代碼塊。else否則關(guān)鍵字,與if配合使用,定義條件不滿足時執(zhí)行的代碼塊。while循環(huán)關(guān)鍵字,用于創(chuàng)建一個循環(huán),只要條件為真,循環(huán)體就會執(zhí)行。for循環(huán)關(guān)鍵字,用于創(chuàng)建一個循環(huán),初始化表達式,條件表達式和迭代表達式分別定義了循環(huán)的起始、條件和增量。break中斷關(guān)鍵字,用于立即退出當前所在的循環(huán)結(jié)構(gòu)。continue繼續(xù)執(zhí)行關(guān)鍵字,用于跳過當前循環(huán)的剩余代碼,直接進入下一次循環(huán)。2.1基本語法單位return返回關(guān)鍵字,用于從方法中返回一個值。void無返回值關(guān)鍵字,用于聲明沒有返回值的方法。this當前對象關(guān)鍵字,用于引用當前對象的成員。super超類關(guān)鍵字,用于引用當前對象的超類的成員。class類定義關(guān)鍵字,用來聲明一個類,定義類的屬性和方法。interface接口關(guān)鍵字,用來聲明一個接口,接口中只包含方法的聲明,沒有具體的實現(xiàn)。extends繼承關(guān)鍵字,用于子類中,指定父類的類型,實現(xiàn)繼承機制。implements接口實現(xiàn)關(guān)鍵字,用于類中,指定類實現(xiàn)的接口。public公共訪問關(guān)鍵字,用來定義類的公共成員,它們可以在任何地方被訪問。private私有訪問關(guān)鍵字,用來定義類的私有成員,它們只能在類內(nèi)部被訪問。2.1基本語法單位總的來說,關(guān)鍵字就像社會主義法治社會的法律法規(guī),為我們的編程行為設(shè)定了明確的界限。它們在多個方面發(fā)揮作用,就如同我們在建設(shè)社會主義現(xiàn)代化國家時需要全面考慮的方面。這些關(guān)鍵字引導我們遵循正確的編程規(guī)范,引導我們樹立正確的價值觀。讓我們在編程的世界里,也能體驗到遵循規(guī)則的力量和秩序之美。
標識符標識符是用于指代變量、方法、類、接口及其他程序?qū)嶓w的名稱。標識符的構(gòu)成要素包括字母、數(shù)字、下劃線以及美元符號,但在使用過程中,必須遵循一定的命名規(guī)范和約定。以下列舉了標識符的關(guān)鍵規(guī)則與慣例:1.由字母、數(shù)字、下劃線(_)和美元符號($)組成。2.第一個字符必須是字母、下劃線或美元符號,不能是數(shù)字。3.區(qū)分大小寫,例如,myVariable和myvariable是不同的標識符。4.不能是關(guān)鍵字和保留字,如class、public、if等。5.具有描述性,以提高代碼的可讀性。例如,firstName、calculateTotal等。2.1基本語法單位以下是一些符合標識符命名約定的示例:intage;//變量名為ageStringfirstName;//變量名為firstNamevoidcalculateTotal(){//方法名為calculateTotal//方法體}classMyClass{//類名為MyClass//類定義}interfaceMyInterface{//接口名為MyInterface//接口定義}請注意,盡管在Java中允許美元符號($)作為標識符的一部分,但在常規(guī)編碼實踐中,美元符號通常僅用于自動生成代碼或特定用途。因此,不建議在手動編寫的代碼中使用美元符號作為標識符。為提高代碼的可讀性和可維護性,應選擇具有實際意義且符合命名約定的標識符。由此可見,妥善選擇標識符命名至關(guān)重要。02基本數(shù)據(jù)類型2.2基本數(shù)據(jù)類型
基本數(shù)據(jù)類型基本數(shù)據(jù)類型是預定義的用于存儲和操作基本數(shù)據(jù)的固定類型。它們涵蓋了整數(shù)類型(如int、long)、浮點數(shù)類型(如float、double)、字符類型(如char)以及布爾類型(如boolean)等。這些數(shù)據(jù)類型具有明確的大小和范圍,并在內(nèi)存中占用特定的空間。借助基本數(shù)據(jù)類型,我們可以聲明變量、執(zhí)行數(shù)值計算、存儲字符和布爾值等操作?;緮?shù)據(jù)類型的應用簡潔且高效,是Java編程中不可或缺的基礎(chǔ)組成部分。2.2基本數(shù)據(jù)類型
基本數(shù)據(jù)類型布爾類型(boolean)用于表示邏輯值。其取值僅限于`true`(真)和`false`(假)兩種可能,主要應用于條件判斷和程序控制流程,構(gòu)成諸如if-else語句、while循環(huán)、for循環(huán)等控制結(jié)構(gòu)的核心部分。在聲明布爾類型變量時,采用`boolean`關(guān)鍵字,此后,變量可賦予`true`或`false`值。布爾類型變量可參與邏輯運算,包括"與"(&&)、"或"(||)和"非"(!)操作,這些運算符使我們能夠組合或修改布爾表達式,構(gòu)建更為復雜的邏輯條件。2.2基本數(shù)據(jù)類型整數(shù)類型(byte,short,int,long)用于表示不含小數(shù)部分的數(shù)值。Java提供了四種不同大小的整型,包括字節(jié)(byte)、短整型(short)、整型(int)和長整型(long),它們各自具有不同的位數(shù)和取值范圍,以滿足各種編程需求。類型字節(jié)大小取值范圍是否有符號byte1字節(jié)-2^7~2^7-1是short2字節(jié)-2^15~2^15-1是int4字節(jié)-2^31~2^31-1是long8字節(jié)-2^63~2^63-1是2.2基本數(shù)據(jù)類型以下是對四種整型的應用://byte:范圍從-128到127byteb=100;//byteb=200;//這行代碼會報錯,因為200超出了byte的取值范圍//short:范圍從-32768到32767shorts=20000;//shorts=40000;//這行代碼會報錯,因為40000超出了short的取值范圍//int:范圍從-2,147,483,648到2,147,483,647inti=2000000000;//inti=3000000000;//這行代碼會報錯,因為3000000000超出了int的取值范圍//long:范圍從-9,223,372,036,854,775,808到9,223,372,036,854,775,807longl=3000000000L;//注意末尾的L,表示這是一個long型的字面量//longl=9223372036854775808L;//這行代碼會報錯,因為9223372036854775808超出了long的取值范圍2.2基本數(shù)據(jù)類型浮點類型(double,float)用于表示含有小數(shù)的部分的數(shù)值。Java提供了兩種浮點類型:float和double,它們分別代表單精度和雙精度浮點數(shù)。在內(nèi)存中,float占用4字節(jié),而double占用8字節(jié),這使得double類型能夠提供更大的范圍和更高的精度。類型占用存儲空間取值范圍有效數(shù)字默認類型float4字節(jié)-2^-45~2^-45約6-7位doubledouble8字節(jié)-2^-1022~2^-1022約15位double2.2基本數(shù)據(jù)類型//聲明和初始化一個float變量floatmyFloat=5.25f;System.out.println("Floatvalue:"+myFloat);//聲明和初始化一個double變量doublemyDouble=5.25;System.out.println("Doublevalue:"+myDouble);字符類型(char)用于存儲單個字符。char類型的大小為16位,作為唯一的無符號整數(shù)類型,它可以表示Unicode字符(包括ASCII字符)。以下是對字符類型的應用:
以下是對兩種浮點型的應用:2.2基本數(shù)據(jù)類型//聲明和初始化一個char變量charc='A';System.out.println("Charactervalue:"+c);//使用轉(zhuǎn)義序列charnewline='\n';System.out.println("Newlinecharacter:"+newline+"See?");//使用Unicode值charunicodeChar='\u0041';System.out.println("Unicodecharacter:"+unicodeChar);2.2基本數(shù)據(jù)類型例題2.1課程視頻時間的計算在當前的在線教育環(huán)境中,學生們需要通過觀看視頻來學習各種知識。某一個在線教育平臺上的一門課程包含10個視頻,每個視頻的長度分別為15分鐘、20分鐘、30分鐘、25分鐘、18分鐘、22分鐘、26分鐘、35分鐘、28分鐘和32分鐘。要求是編寫一個程序,計算學生觀看整個課程的視頻需要多少小時。在例2.1中,代碼首先定義了每個視頻的長度(以分鐘為單位),然后將所有視頻的長度相加,得出總的視頻長度。接著,將總的視頻長度轉(zhuǎn)換為小時。最后,輸出學生觀看整個課程視頻所需的總時間(以小時為單位)。2.2基本數(shù)據(jù)類型
類型轉(zhuǎn)換類型轉(zhuǎn)換在編程領(lǐng)域中起到了不可或缺的作用,它能夠靈活地變換數(shù)據(jù)類型。類型轉(zhuǎn)換可以分為隱式轉(zhuǎn)換和顯式轉(zhuǎn)換。隱式轉(zhuǎn)換通常在較小的數(shù)據(jù)類型賦值給較大的類型時自動進行,而顯式轉(zhuǎn)換則需要明確指示。通過類型轉(zhuǎn)換,能夠增強代碼的適應性和操作范圍,確保各類數(shù)據(jù)源的兼容性。然而,在進行類型轉(zhuǎn)換時,需要特別謹慎。特別是在顯式類型轉(zhuǎn)換時,如果不當操作可能導致數(shù)據(jù)丟失。因此,合理利用類型轉(zhuǎn)換能夠提升代碼效率和靈活性,但同時也需要注意避免潛在的數(shù)據(jù)丟失風險。2.2基本數(shù)據(jù)類型以下是對類型轉(zhuǎn)換的應用://隱式類型轉(zhuǎn)換intmyInt=10;doublemyDouble=myInt;//一個整數(shù)自動轉(zhuǎn)換為一個雙精度浮點數(shù)System.out.println(myDouble);//輸出10.0//顯式類型轉(zhuǎn)換doubleanotherDouble=9.78;intanotherInt=(int)anotherDouble;//一個雙精度浮點數(shù)被強制轉(zhuǎn)換為一個整數(shù)System.out.println(anotherInt);//輸出9,因為小數(shù)部分被截斷2.2基本數(shù)據(jù)類型
字面量與常量
字面量(Literal):字面量是指直接在Java源代碼中出現(xiàn)的固定值。它們可以是整型、浮點型、字符型、布爾型或字符串型的值。字面量在程序編譯時就已經(jīng)確定,并且在運行時不會被改變。例如:inta=5;//整型字面量doubleb=3.14;//浮點型字面量charc='A';//字符型字面量booleand=true;//布爾型字面量Stringe="HelloWorld";//字符串型字面量2.2基本數(shù)據(jù)類型
2.常量(Constant):常量是指被聲明為final的變量,它們在初始化之后其值不能被改變。常量必須在聲明時進行初始化,而且只能初始化一次。常量的值可以是字面量,也可以是其他類型的常量表達式。例如:publicstaticfinalintPI=3;//整型常量publicstaticfinalStringVersion="1.0";//字符串型常量publicstaticfinaldoubleEULER=2.718281828459045;//浮點型常量字面量是源代碼中直接出現(xiàn)的固定值,如整數(shù)、浮點數(shù)、字符、布爾值或字符串,它們在編譯時確定,并在運行時不可變。常量則是被聲明為final的變量,其值在初始化后也不可改變。字面量可以作為常量的一種形式,它們都表示程序中的不變量。字面量在編譯時就已經(jīng)確定,而常量在類加載時被初始化。此外,字面量通常存儲在常量池中,可以被多個類或接口共享。2.2基本數(shù)據(jù)類型
例題2.2公園面積的計算北京奧林匹克公園是2008年北京奧運會的主要場館區(qū),占地面積大約680公頃。公園的設(shè)計大致呈長方形形狀,長邊約為2.2公里,短邊約為1.8公里。由于地球的曲率,實際測量的面積會稍微小于理論的平方公里數(shù)。為了精確計算這個差異,公園的設(shè)計師們定義了一個常量AREA_ADJUSTMENT_FACTOR,其值為0.9997。要求是編寫一個程序,計算并打印出這個公園的理論和實際面積(單位為平方公里和平方米),以及周長(單位為公里和米)。2.2基本數(shù)據(jù)類型
2.2基本數(shù)據(jù)類型在例2.2中,首先定義了三個常量,分別表示北京奧林匹克公園的長、寬以及面積調(diào)整因子。然后,計算了公園的理論面積和周長。接著,根據(jù)面積調(diào)整因子計算出了公園的實際面積。最后,代碼將面積和周長的單位從公里和平方公里轉(zhuǎn)換為米和平方米,并打印出了理論面積、實際面積和周長的結(jié)果。
例題2.2公園面積的計算北京奧林匹克公園是2008年北京奧運會的主要場館區(qū),占地面積大約680公頃。公園的設(shè)計大致呈長方形形狀,長邊約為2.2公里,短邊約為1.8公里。由于地球的曲率,實際測量的面積會稍微小于理論的平方公里數(shù)。為了精確計算這個差異,公園的設(shè)計師們定義了一個常量AREA_ADJUSTMENT_FACTOR,其值為0.9997。要求是編寫一個程序,計算并打印出這個公園的理論和實際面積(單位為平方公里和平方米),以及周長(單位為公里和米)。2.2基本數(shù)據(jù)類型
變量、聲明和賦值
在編程中,變量的聲明與賦值占據(jù)著至關(guān)重要的地位。變量可以被視為存儲數(shù)據(jù)的容器,使我們能夠在程序中保存和操作數(shù)據(jù)。通過聲明變量,我們告訴計算機需要一個特定類型的數(shù)據(jù)存儲空間;而通過賦值,我們將實際數(shù)據(jù)放入已聲明的變量中,以便進行后續(xù)的處理和應用。例題2.3探險家的收獲在一個遠離塵世的星球上,存在兩種珍稀的寶石,一種叫做"星輝石",另一種叫做"月影石"。一位勇敢的探險家,決定去尋找這兩種寶石。在Java中,聲明兩個整型變量,分別命名為starShineGems和moonShadowGems。starShineGems的數(shù)量為5,moonShadowGems的數(shù)量為7。然后,聲明一個整型變量totalGems,并計算探險家找到的所有寶石的總數(shù)。最后,打印出totalGems的值,展示他的豐富收獲。2.2基本數(shù)據(jù)類型
例題2.3探險家的收獲1ChatGPT指令:
//聲明兩個整型變量,分別命名為starShineGems和moonShadowGems。starShineGems的數(shù)量為5,moonShadowGems的數(shù)量為7。然后,聲明一個整型變量totalGems來存儲starShineGems和moonShadowGems的和,然后打印totalGems的結(jié)果。輸出結(jié)果如下:Totalgemscollected:12
總而言之,變量的聲明與賦值就如同社會主義建設(shè)中的目標設(shè)定與實際行動。我們需要明確的目標(聲明變量)和實際行動(賦值操作)來實現(xiàn)社會主義現(xiàn)代化夢想。在編程的世界里,我們也能體驗到設(shè)定目標和采取實際行動的重要性。03復合數(shù)據(jù)類型2.3復合數(shù)據(jù)類型
1.類(Class):類是Java中的核心復合數(shù)據(jù)類型,它的設(shè)計源自面向?qū)ο缶幊痰母拍?。在早期的程序設(shè)計中,需要在不同的地方處理數(shù)據(jù)并對其進行操作,這導致了代碼的重復和難以維護。為了解決這個問題,人們提出了面向?qū)ο蟮木幊谭椒?,將?shù)據(jù)和操作數(shù)據(jù)的方法封裝在一起,形成了類的概念。在Java中,類可以包含字段(也就是變量)和方法,這使得可以創(chuàng)建更復雜的數(shù)據(jù)結(jié)構(gòu),以滿足更復雜的業(yè)務需求。2.數(shù)組(Array):數(shù)組是一種基本的復合數(shù)據(jù)類型,它的設(shè)計源于早期編程語言中數(shù)組的概念。在早期的編程語言中,如果需要存儲多個同一類型的數(shù)據(jù),就需要聲明多個變量,這無疑增加了代碼的復雜性。為了解決這個問題,人們設(shè)計了數(shù)組的概念,可以用一個變量名來存儲多個同一類型的數(shù)據(jù)。2.3復合數(shù)據(jù)類型
3.接口(Interface):接口是一種復合數(shù)據(jù)類型,它的設(shè)計源于面向?qū)ο缶幊讨械亩鄳B(tài)性概念。在面向?qū)ο缶幊讨?,為了增加代碼的復用性和靈活性,人們提出了多態(tài)性的概念,即一個對象可以有多種形態(tài)。接口定義了一種規(guī)范,規(guī)定了實現(xiàn)該接口的類必須要實現(xiàn)哪些方法,這就為實現(xiàn)多態(tài)性提供了可能。4.枚舉(Enum):枚舉是Java5.0版本引入的復合數(shù)據(jù)類型,它的設(shè)計源于人們對于限制變量取值范圍的需求。在早期的編程語言中,如果需要限制一個變量的取值范圍,就需要編寫大量的驗證代碼,這無疑增加了代碼的復雜性。為了解決這個問題,引入了枚舉的概念,可以定義一組預設(shè)的常量,使得變量只能取這些預設(shè)的值。08本章小結(jié)本章小結(jié)標識符:用來命名變量、方法、類等。標識符必須遵循特定的命名規(guī)則和約定,例如,不能以數(shù)字開頭,不能使用關(guān)鍵字等?;緮?shù)據(jù)類型:Java有8種基本數(shù)據(jù)類型,包括整數(shù)類型(byte,short,int,long)、浮點類型(float,double)、字符類型(char)和布爾類型(boolean)。每種類型都有其特定的值范圍和內(nèi)存大小。變量:聲明變量的類型并初始化它們才能使用,其值是可以改變的。常量:常量是只能被賦值一次的變量。使用final關(guān)鍵字定義常量。常量的命名通常使用全大寫字母。類型轉(zhuǎn)換:自動類型轉(zhuǎn)換(小范圍類型到大范圍類型的轉(zhuǎn)換)和強制類型轉(zhuǎn)換(大范圍類型到小范圍類型的轉(zhuǎn)換)。引用數(shù)據(jù)類型:除了基本數(shù)據(jù)類型,Java還支持引用數(shù)據(jù)類型,包括類、接口和數(shù)組。引用類型和基本類型的主要區(qū)別在于引用類型的變量存儲的是對象在內(nèi)存中的地址,而基本類型的變量直接存儲值。表達式和流程控制語句第三章ExpressionsandFlowcontrolstatements目標/OBJECTIVE010203掌握表達式的相關(guān)知識熟悉流程控制語句學習簡單的輸入輸出01表達式的相關(guān)知識3.1表達式的相關(guān)知識表達式是由運算符、變量、常量和方法調(diào)用等組成的代碼片段,可以計算出一個值。表達式就像數(shù)學中的公式一樣,可以進行各種運算,比如加減乘除等。假設(shè)這有兩個變量x和y,可以使用表達式x+y來計算它們的和。這個表達式會將變量x和y相加,并返回它們的和作為結(jié)果。1.常量常量是一種特殊的變量,其值在定義后不能被修改。常量的定義通常使用final關(guān)鍵字,后跟變量類型和變量名。常量名通常全部大寫,如果由多個單詞組成,單詞之間用下劃線分隔?!げ僮鲾?shù)3.1表達式的相關(guān)知識2.變量變量是用來存儲數(shù)據(jù)的容器。每個變量都有一個數(shù)據(jù)類型,這決定變量可以存儲什么樣的數(shù)據(jù)(例如整數(shù)、浮點數(shù)、字符或布爾值)。變量在使用之前要進行變量聲明,變量聲明的基本格式為:如下所示:在該例子中,age,salary,initial,isMarried和name都是變量,它們的值可以在程序運行過程中被修改。3.1表達式的相關(guān)知識1Copilot指令:3.變量初始化變量初始化是指為變量分配一個初始值的過程。在Java中,所有的變量在使用前都必須初始化。變量可以在聲明時初始化,也可以在聲明后的任何地方初始化。如果在聲明時沒有初始化變量,那么變量的值將是其數(shù)據(jù)類型的默認值。例如,對于整數(shù)類型,這個默認值是0;對于布爾類型,這個默認值是false;對于對象引用,這個默認值是null。以下是Java變量初始化的示例:4.變量作用域變量的作用域是指變量存在和可用的范圍。根據(jù)變量聲明的位置,可以將變量的作用域分為以下幾種:(1)局部變量:在方法、構(gòu)造函數(shù)或者塊中聲明的變量被稱為局部變量。局部變量只在其聲明的區(qū)域內(nèi)有效,一旦超出這個區(qū)域,這個變量就會立即消失,無法再被訪問。(2)成員變量(實例變量):在類中但不在方法、構(gòu)造函數(shù)或塊外部聲明的變量被稱為成員變量。成員變量在整個類中都是可見的。成員變量的值對每個類的實例都是唯一的。(3)類變量(靜態(tài)變量):在類中以static關(guān)鍵字聲明的變量被稱為類變量。類變量在整個類中都是可見的,無論類是否被實例化。類變量只有一份拷貝,被類的所有實例共享。3.1表達式的相關(guān)知識·運算符Java中的運算符和C語言中的運算符類似,有關(guān)系運算符、算術(shù)運算符、邏輯運算符、位運算符、賦值運算符、條件運算符、類型比較運算符、特殊運算符等。1.算數(shù)運算符算術(shù)運算符用于執(zhí)行基本的數(shù)學運算,如加法(+)、減法(-)、乘法(*)、除法(/)和模數(shù)運算(%)。具體如下所示:3.1表達式的相關(guān)知識2.關(guān)系運算符關(guān)系運算符用于比較兩個操作數(shù),如等于(==)、不等于(!=)、大于(>)、小于(<)、大于等于(>=)和小于等于(<=)。運算結(jié)果是一個邏輯值(true或false)。如下所示:3.1表達式的相關(guān)知識3.邏輯運算符邏輯運算符用于基于兩個或更多條件的邏輯關(guān)系來形成更復雜的條件。邏輯運算符包括邏輯與運算符(&&)、邏輯或運算符(||)、邏輯非運算符(?。?,其運算結(jié)果是一個邏輯值(true或false)。如下所示:3.1表達式的相關(guān)知識4.位運算符位運算符用來對二進制數(shù)進行操作,它包括按位與運算符(&)、按位或運算符(|)、按位異或運算符(^)、按位非運算符(~)、左移運算符(<<)、右移運算符(>>)、無符號右移運算符(>>>),位運算符只能對整型和字符型數(shù)據(jù)進行操作。3.1表達式的相關(guān)知識5.賦值運算符賦值運算符用于將右側(cè)操作數(shù)的值賦給左側(cè)的操作數(shù),賦值運算符有“=”、“+=”、“-=、“%=”、“/=”、“*=”、“<<=”、“>>=”、“&=”、“|=”、“^=”。6.條件運算符條件運算符也被稱為三元運算符,是唯一需要三個操作數(shù)的運算符。它的一般形式是:如果condition為真(即,結(jié)果為非零),則表達式的結(jié)果是value1,否則結(jié)果是value2。3.1表達式的相關(guān)知識7.類型比較運算符類型比較運算符是instanceof。它用于檢查一個對象是否是一個特定類型(類或接口)的實例。以下是一個示例代碼:在這個例子中,我們使用instanceof運算符來檢查str是否是String類的實例。因為str是一個字符串,所以結(jié)果是true。3.1表達式的相關(guān)知識8.特殊運算符在Java中,有一些特殊的運算符,常見的是以下類型:(1).(點運算符):用于訪問對象的成員變量和方法。(2)[](數(shù)組訪問運算符):用于訪問數(shù)組元素。(3)()(方法調(diào)用運算符):用于調(diào)用方法。(4)new:用于創(chuàng)建新的對象實例。9.運算符的優(yōu)先次序在表達式中,運算符的優(yōu)先級決定運算的順序。優(yōu)先級高的運算符會先被計算。如果運算符的優(yōu)先級相同,那么通常會從左到右進行計算(除了賦值運算符和條件運算符,它們是從右到左計算)??梢允褂美ㄌ?)來改變運算的順序。3.1表達式的相關(guān)知識3.1表達式的相關(guān)知識·表達式的提升和轉(zhuǎn)換在Java中,表達式的提升和轉(zhuǎn)化是指在進行運算時,不同類型的數(shù)據(jù)需要轉(zhuǎn)化為同一種類型才能進行運算。這種轉(zhuǎn)化遵循一定的規(guī)則,稱為類型提升規(guī)則。以下是Java中的類型提升規(guī)則:如果兩個操作數(shù)中有一個是double類型,另一個操作數(shù)就會轉(zhuǎn)化為double類型。如果兩個操作數(shù)中有一個是float類型,另一個操作數(shù)就會轉(zhuǎn)化為float類型。如果兩個操作數(shù)中有一個是long類型,另一個操作數(shù)就會轉(zhuǎn)化為long類型。否則,兩個操作數(shù)都會轉(zhuǎn)化為int類型。注意,這些規(guī)則只適用于數(shù)值類型。對于非數(shù)值類型(如布爾類型和對象類型),不能進行這種類型的提升和轉(zhuǎn)化。3.1表達式的相關(guān)知識02流程控制語句3.2流程控制語句流程控制語句允許人根據(jù)條件來控制程序的執(zhí)行流程,就像是給程序添加決策能力。我們可以使用條件語句來根據(jù)不同的條件執(zhí)行不同的代碼塊。比如,可以使用if語句來判斷某個條件是否成立,如果條件為真,就執(zhí)行相應的代碼塊;如果條件為假,就跳過這個代碼塊。這就像是在路口上看到紅燈就停車,綠燈就繼續(xù)前進一樣。除了條件語句,還有循環(huán)語句等等。下面介紹幾種類型的語句,包括表達式語句、塊、分支語句和循環(huán)語句。3.2流程控制語句表達式語句表達式是由運算符、變量、常量和方法調(diào)用等組成的代碼片段,它可以計算出一個值。在Java中,幾乎所有的語句都可以作為表達式語句,包括賦值語句、方法調(diào)用語句和增量/減量語句等。表達式語句通常包括以下幾種:1.賦值表達式:例如a=b,a+=b,a*=b等。2.遞增和遞減表達式:例如a++,a--,++a,--a。3.方法調(diào)用:例如System.out.println("Hello,World!")。4.對象創(chuàng)建表達式:例如newMyClass()。3.2流程控制語句塊在Java中,塊是由大括號{}包圍的一組零個或多個語句。塊可以用在任何允許使用單個語句的地方。塊主要用于組織和控制代碼的結(jié)構(gòu),特別是在控制流語句(如if,for,while等)中。塊可以嵌套,即一個塊可以包含另一個塊。塊也定義了變量的作用域,即在塊內(nèi)部定義的變量只在該塊及其子塊中可見。接下來是一個有關(guān)“塊”的代碼。塊的存在使得代碼可以更加有組織性和可讀性。它們可以將相關(guān)的代碼段組合在一起,并限制變量的作用范圍,避免命名沖突。此外,塊還可以用于控制流程,例如在條件語句中執(zhí)行多個語句或在循環(huán)中執(zhí)行多個語句。需要注意的是,塊本身并不是一個獨立的語句,它只是一種容器,用于組織和限定代碼的執(zhí)行范圍。在大多數(shù)情況下,塊中的語句會按照順序依次執(zhí)行,除非遇到控制流語句(如break、continue、return等)或異常。3.2流程控制語句3.2流程控制語句分支結(jié)構(gòu)在Java中,分支語句用于根據(jù)條件來選擇不同的執(zhí)行路徑。Java提供幾種分支語句,包括if語句、if-else語句、if-elseif語句和switch語句。分支結(jié)構(gòu)包括單分支結(jié)構(gòu)、雙分支結(jié)構(gòu)以及多分支結(jié)構(gòu),如圖3-1、圖3-2、圖3-3所示:Java中的分支結(jié)構(gòu)主要包括if語句、if-else語句、else-if-else語句和switch結(jié)構(gòu)。這種結(jié)構(gòu)根據(jù)條件的成立與否,來執(zhí)行相應的代碼塊。3.2流程控制語句1.if語句if語句用于根據(jù)一個條件來執(zhí)行不同的代碼塊。如果條件為true,則執(zhí)行if語句塊中的代碼;如果條件為false,則跳過if語句塊。if語句的基本格式:2.if-else語句 if-else語句在if語句的基礎(chǔ)上增加一個"else"分支,用于在條件為false時執(zhí)行另一段代碼。3.2流程控制語句if-else語句的基本格式:3.if-else-if語句 if-else-if語句可以用于測試多個條件,并在滿足條件時執(zhí)行相應的代碼塊。它可以有多個"else-if"分支和一個可選的"else"分支。if-else-if語句的基本格式:3.2流程控制語句分支語句中的條件表達式必須是一個布爾類型的值或可以轉(zhuǎn)換為布爾類型的值。在if語句和if-else語句中,條件為true時執(zhí)行相應代碼塊。4.switch語句在Java中,switch語句是一種多路分支語句,它可以根據(jù)一個表達式的值來決定執(zhí)行哪段代碼。switch語句包含多個case,每個case對應一個可能的值和一段代碼。如果表達式的值與某個case的值匹配,那么對應的代碼就會被執(zhí)行。如果沒有任何case與表達式的值匹配,那么default后面的代碼會被執(zhí)行。3.2流程控制語句switch語句的基本格式:3.2流程控制語句·循環(huán)語句循環(huán)語句是一種非常有用的工具,在Java編程語言中,循環(huán)語句就像是一位勤奮的音樂指揮,他指揮著樂曲的重復演奏,直到滿足結(jié)束的條件。循環(huán)語句有幾種不同的形式,每一種都有其獨特的魅力。有三種主要的循環(huán)語句:for循環(huán)、while循環(huán)和do-while循環(huán)。它們各自具有不同的特點和適用場景,讓我們一起來探索它們的魅力。1.for循環(huán)for循環(huán)是一種常用的循環(huán)結(jié)構(gòu),它在執(zhí)行循環(huán)之前初始化循環(huán)變量,然后判斷循環(huán)條件是否滿足,如果滿足則執(zhí)行循環(huán)體中的代碼,并更新循環(huán)變量的值。循環(huán)體執(zhí)行完畢后,再次判斷條件是否滿足,如果滿足則繼續(xù)執(zhí)行循環(huán)體,直到條件不滿足時循環(huán)結(jié)束。3.2流程控制語句for循環(huán)的基本格式:2.while循環(huán)while循環(huán)在執(zhí)行循環(huán)體之前先判斷條件是否滿足,如果條件滿足,則執(zhí)行循環(huán)體中的代碼。當循環(huán)體執(zhí)行完畢后,再次判斷條件是否滿足,如果滿足,則繼續(xù)執(zhí)行循環(huán)體,直到條件不滿足時循環(huán)結(jié)束。while循環(huán)的基本格式:3.2流程控制語句3.do-while循環(huán)do-while循環(huán)與while循環(huán)類似,不同之處在于它先執(zhí)行一次循環(huán)體,再判斷條件是否滿足。如果條件滿足,則繼續(xù)執(zhí)行循環(huán)體,直到條件不滿足時循環(huán)結(jié)束。do-while循環(huán)的基本格式:3.2流程控制語句·continue和break語句在Java中,continue和break都是循環(huán)控制語句。break語句像是一部電影的停止按鈕。當循環(huán)遇到break語句時,它會立即結(jié)束整個循環(huán),就像你在看電影時,如果覺得電影不好看,可以按下停止按鈕,結(jié)束觀看。continue語句像是一部電影的快進按鈕。當循環(huán)遇到continue語句時,它會立即跳過當前循環(huán)的剩余部分,并開始下一次循環(huán)。就像你在看電影時,如果遇到了不感興趣的部分,可以按下快進按鈕,跳過這部分,直接開始下一段精彩的內(nèi)容。1.標號在Java中,標號(label)是可選的,通常與循環(huán)語句一起使用,以提供一個額外的級別的循環(huán)控制。其基本格式是:3.2流程控制語句2.break語句break語句的主要作用是立即終止當前的循環(huán)或開關(guān)語句,并跳出該語句的執(zhí)行。它可以運用到stwich語句、循環(huán)語句和塊語句中。例如:在這個例子中,當i等于5時,break語句會被執(zhí)行,整個循環(huán)會立即結(jié)束,System.out.println(i);不會被執(zhí)行。3.2流程控制語句break標號如下所示:在這個例子中,有兩個嵌套的for循環(huán),外部循環(huán)有一個標號outer(標號名稱)。當j等于3時,breakouter;語句會被執(zhí)行,這會跳出outer循環(huán),即結(jié)束整個外部循環(huán)。3.2流程控制語句3.continue語句continue語句的主要作用是跳過當前迭代中的剩余代碼,并開始下一次迭代。它可以幫助我們在特定條件下忽略一部分代碼,提高代碼的靈活性和可讀性。在循環(huán)中,當遇到continue語句時,它會立即終止當前迭代的循環(huán),并跳過循環(huán)體中continue語句之后的代碼,直接進入下一次迭代。例如:在這個例子中,當i是偶數(shù)時,continue語句會被執(zhí)行,System.out.println(i);會被跳過,直接開始下一次循環(huán)。3.2流程控制語句continue標號如下所示:在這個例子中,有兩個嵌套的for循環(huán),外部循環(huán)有一個標號outer(標號名稱)。當j等于3時,continueouter;語句會被執(zhí)行,這會跳過outer循環(huán)的當前迭代,即跳過當i等于當前值,j從3到4的所有循環(huán)。3.2流程控制語句03簡單的輸入輸出3.3簡單的輸入輸出Scanner類在Java中,輸入和輸出是與用戶交互和顯示結(jié)果的重要部分。它們?yōu)槌绦蛸x予了生命和靈魂,讓程序能夠與用戶進行互動。輸入是從外部世界(用戶)獲取數(shù)據(jù)的過程,就像是從大海中捕撈寶貴的珍珠。Java中最常用的輸入方式是通過控制臺進行輸入。Scanner類是Java中用于讀取輸入數(shù)據(jù)的工具類,它提供方便的方法來解析基本類型和字符串等數(shù)據(jù)。它可以從多種來源讀取數(shù)據(jù),包括控制臺輸入、文件和字符串等。使用Scanner類,可以輕松地獲取用戶的輸入,并將其轉(zhuǎn)換為適當?shù)臄?shù)據(jù)類型。它提供了一系列的nextXxx()方法,其中Xxx代表不同的數(shù)據(jù)類型,如nextInt()、nextDouble()和nextLine()等。下面是一個簡單的示例,演示如何使用Scanner類從控制臺讀取用戶的輸入:在左邊的示例中,首先創(chuàng)建一個Scanner對象,并將System.in作為輸入源,表示從控制臺讀取輸入。然后,通過調(diào)用nextLine()方法讀取用戶輸入的姓名,并將其存儲到name變量中。接下來,通過調(diào)用nextInt()方法讀取用戶輸入的年齡,并將其存儲到age變量中。最后,將用戶的姓名和年齡輸出到控制臺。需要注意的是,在使用Scanner類讀取完數(shù)據(jù)后,應該調(diào)用close()方法關(guān)閉Scanner對象,以釋放資源。3.3簡單的輸入輸出·NumberFormat類和DecimalFormat類NumberFormat類是一個抽象類,它提供格式化和解析數(shù)字的通用功能。它可以用于格式化整數(shù)、浮點數(shù)和貨幣等數(shù)字類型。NumberFormat類提供靜態(tài)方法getInstance(),該方法根據(jù)當前本地化環(huán)境返回適當?shù)腘umberFormat實例。通過NumberFormat類,可以將數(shù)字格式化為本地化的字符串表示形式,或者將字符串解析為對應的數(shù)字。DecimalFormat類是NumberFormat類的一個子類,它提供更精細的數(shù)字格式化控制。DecimalFormat類可以根據(jù)指定的模式將數(shù)字格式化為字符串,并且可以使用特定的符號、小數(shù)位數(shù)、分組分隔符等來自定義格式。它還支持解析字符串,并將其轉(zhuǎn)換為對應的數(shù)字。3.3簡單的輸入輸出下面是一個簡單的示例,演示了如何使用DecimalFormat類來格式化和解析數(shù)字:3.3簡單的輸入輸出在這個示例中,使用DecimalFormat類創(chuàng)建一個格式化模式"#,##0.00",它指定了使用逗號作為分組分隔符,保留兩位小數(shù)。然后,將一個數(shù)字12345.6789格式化為字符串,并輸出格式化后的結(jié)果。接著,嘗試解析這個格式化后的字符串,并將其轉(zhuǎn)換為對應的數(shù)字。最后,輸出解析后的數(shù)字。通過NumberFormat類和DecimalFormat類,可以方便地對數(shù)字進行格式化和解析,使其更符合特定的顯示需求。這些類提供靈活的選項和功能,可以滿足不同場景下的數(shù)字格式化需求。3.3簡單的輸入輸出04本章小結(jié)本章小結(jié)1.常量是一種特殊的變量,其值在定義后不能被修改。2.變量是用于存儲和操作數(shù)據(jù)的內(nèi)存空間,它具有特定的數(shù)據(jù)類型和可變的值。3.運算符是用于執(zhí)行各種算術(shù)、邏輯和位操作的符號或關(guān)鍵字,用于對數(shù)據(jù)進行計算、比較和賦值等操作。4.表達式的提升是指在運算過程中將低精度的數(shù)據(jù)類型自動轉(zhuǎn)換為高精度的數(shù)據(jù)類型,以保證運算的準確性和一致性。5.表達式的轉(zhuǎn)換是指將一個數(shù)據(jù)類型的值轉(zhuǎn)換為另一個數(shù)據(jù)類型的值,以滿足特定的需求或操作要求。6.塊是Java中用花括號
{}
括起來的一組語句,它可以作為一個獨立的執(zhí)行單元,用于控制程序的流程、作用域和代碼組織。7.分支語句是根據(jù)條件的真假來選擇性地執(zhí)行不同的代碼塊,用于根據(jù)不同的條件決定程序的執(zhí)行路徑。8.循環(huán)語句是根據(jù)條件的真假重復執(zhí)行一段代碼塊,用于反復執(zhí)行相同或類似的任務,實現(xiàn)程序的重復性操作和迭代。9.注釋語句是在代碼中添加的特殊文本,用于對代碼進行解釋、說明和注解,不會被編譯器執(zhí)行,提高代碼的可讀性和可維護性。10.簡單的輸入輸出是指通過讀取用戶的輸入和將結(jié)果輸出到控制臺,實現(xiàn)與用戶交互和顯示程序的執(zhí)行結(jié)果。數(shù)組和向量arraysandvectors第四章目錄0102
數(shù)組
向量0101
數(shù)組4.1數(shù)組4.1.1創(chuàng)建數(shù)組在Java中,創(chuàng)建數(shù)組需要進行定義和初始化兩個步驟。在定義一個數(shù)組后,只是聲明了一個變量來引用數(shù)組,此時并沒有為數(shù)組分配任何內(nèi)存空間,因此不能夠直接訪問數(shù)組的元素。為了能夠正確使用數(shù)組,需要對其進行初始化。在初始化過程中,需要為數(shù)組分配內(nèi)存空間,并為數(shù)組的每個元素賦予初始值。在Java中,可以在定義數(shù)組時進行初始化,也可以在稍后的代碼中進行初始化。與C語言不同,Java中的數(shù)組定義時不需要在方括號中指定數(shù)組的大小,這是因為Java會根據(jù)初始化時提供的元素數(shù)量自動推斷數(shù)組的大小。此外,方括號可以放在數(shù)組名的左邊或右邊,這取決于個人的編碼風格。例如,以下兩種寫法都是合法的:int[]numbers=newint[5];//方括號在數(shù)組名的右邊intnumbers[]=newint[5];//方括號在數(shù)組名的左邊4.1數(shù)組數(shù)組的初始化包括靜態(tài)初始化和動態(tài)初始化,靜態(tài)初始化就是在創(chuàng)建時直接放入數(shù)據(jù),動態(tài)初始化則是在創(chuàng)建時指明動態(tài)初始化下面是一些通過靜態(tài)初始化正確創(chuàng)建數(shù)組的示例。//創(chuàng)建一個int類型的數(shù)組int[]intArray={1,2,3,4,5};//創(chuàng)建一個String類型的數(shù)組String[]stringArray={"Hello","World","Java","is","fun"};//創(chuàng)建一個float類型的數(shù)組float[]floatArray={1.1f,2.2f,3.3f,4.4f,5.5f};4.1數(shù)組//創(chuàng)建一個boolean類型的數(shù)組booleanbooleanArray[]={true,false,true,false,true};//創(chuàng)建一個byte類型的數(shù)組bytebyteArray[]={1,2,3,4,5};動態(tài)初始化只指定數(shù)組長度,由系統(tǒng)為數(shù)組初始分配值。格式為數(shù)組類[]數(shù)組名=new數(shù)據(jù)類型[數(shù)組長度],下面是一個通過動態(tài)初始化數(shù)組的范例:int[]arr=newint[3];對于引用類型的數(shù)組,動態(tài)初始化后,數(shù)組中的每個元素默認值是null,表示沒有引用任何對象。如果想要使用這些元素,必須手動創(chuàng)建(實例化)對象并賦值給對應的數(shù)組元素。4.1數(shù)組例如:String[]arr=newString[5];//默認初始化為null//必須逐一創(chuàng)建數(shù)組里的對象arr[0]=newString("Hello");arr[1]=newString("World");上述代碼創(chuàng)建了一個長度為5的String類型的數(shù)組,然后逐個創(chuàng)建String對象并賦值給數(shù)組的元素。Java中數(shù)組的動態(tài)初始化會根據(jù)數(shù)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 供暖設(shè)備安裝合同范例
- 診所轉(zhuǎn)讓意向合同范例
- 四川電影電視學院《工業(yè)機器人及應用》2023-2024學年第一學期期末試卷
- 四川大學錦江學院《獸醫(yī)微生物學》2023-2024學年第一學期期末試卷
- 四川大學《現(xiàn)代企業(yè)管理》2023-2024學年第一學期期末試卷
- 鋼筋加工售賣合同范例
- 采購月結(jié)供貨合同范例
- 四川傳媒學院《新媒介素養(yǎng)》2023-2024學年第一學期期末試卷
- 燈具售合同范例
- 展會設(shè)計服務合同范例
- 2023年內(nèi)蒙古自治區(qū)鄉(xiāng)村醫(yī)生招聘筆試模擬試題及答案解析
- 年產(chǎn)1000萬件日用陶瓷陶瓷廠工藝設(shè)計
- 新能源汽車概論試題庫及答案
- 城管部門廉潔教育PPT廉潔清風進城管精華心靈促發(fā)展PPTPPT課件(帶內(nèi)容)
- 年會小品劇本 搞笑年會小品劇本;過年
- 小學廉政教育讀本校本教材
- 2022專精特新小巨人企業(yè)發(fā)展報告
- GB/T 14361.1-1993船用纖維索滑車木殼滑車
- GB/T 10801.2-2002絕熱用擠塑聚苯乙烯泡沫塑料(XPS)
- ××市××項目復盤報告【正式版】課件
- 早期復極綜合征的再認識課件
評論
0/150
提交評論