版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第1章
Java語言概述《Java程序設計基礎與應用》第1章Java語言概述.pptx第2章Java語言基礎.pptx第3章Java程序流程控制.pptx第4章數(shù)組.pptx第5章字符串.pptx第6章面向?qū)ο蠡A.pptx第7章面向?qū)ο筮M階.pptx第8章常用類介紹.pptx第9章異常處理.pptx第10章圖形用戶界面設計.pptx第11章圖形用戶界面應用開發(fā).pptx第12章數(shù)據(jù)庫操作.pptx第13章多線程.pptx全套可編輯PPT課件學習目標知識目標:◎理解Java的特點、實現(xiàn)機制及體系結構;◎掌握安裝開發(fā)工具JDK和搭建集成環(huán)境Eclipse的方法。素質(zhì)目標:◎了解最新的技術發(fā)展趨勢和應用前景,培養(yǎng)創(chuàng)新意識;◎了解我國在信息技術中的卡脖子問題,培養(yǎng)科技報國的使命感和責任擔當;◎了解我國在互聯(lián)網(wǎng)和新興技術方面的優(yōu)勢,樹立科技自信。1.1Java語言簡介1.1Java語言簡介20世紀90年代,互聯(lián)網(wǎng)技術蓬勃發(fā)展,各大公司為了改變靜態(tài)網(wǎng)頁單調(diào)和刻板的形象,紛紛投入大量的研發(fā)力量。Sun公司(現(xiàn)已被Oracle公司收購)根據(jù)嵌入式軟件的要求,對C++進行了改造,開發(fā)了一種稱為OAK的面向?qū)ο笳Z言,并于1995年正式發(fā)布,命名為Java語言。當前Java的應用無處不在,包括桌面應用系統(tǒng)開發(fā)、嵌入式設備應用、電子商務應用、多媒體系統(tǒng)開發(fā)、分布式系統(tǒng)開發(fā)、企業(yè)級應用開發(fā)和Web應用系統(tǒng)開發(fā)等。目前全球大約有25億臺機器運行著Java,有450多萬活躍的Java開發(fā)者,數(shù)以億計的Web用戶每次上網(wǎng)都可以體驗Java所帶來的便利。1.1Java語言簡介1.1.1Java特性Java語言是目前最流行的高級程序設計語言之一,具有很多優(yōu)點,如簡單、可靠、安全、分布性、多線程、完全面向?qū)ο?、與平臺無關性等。下面進行簡單介紹:(1)Java語言的語法簡單明了。它與C語言和C++語言很接近,使得大多數(shù)程序員很容易學習和使用Java。另一方面,Java丟棄了C++中很少使用又很難理解的某些特性,如操作符重載、多繼承、自動強制類型轉(zhuǎn)換等。Java語言也不使用指針,它提供了自動廢料收集功能,使程序員不必為內(nèi)存管理而擔憂,同時提供了豐富的類庫、API文檔以及第三方開發(fā)包。1.1Java語言簡介1.1.1Java特性(2)Java語言是面向?qū)ο蟮?。它提供類、接口和繼承等原語,為了簡單起見,只支持類之間的單繼承,但支持接口之間的多繼承,并支持類與接口之間的實現(xiàn)機制。Java語言全面支持動態(tài)綁定,而C++語言只對虛函數(shù)使用動態(tài)綁定。總之,Java語言是一個完全面向?qū)ο蟮某绦蛟O計語言。1.1Java語言簡介1.1.1Java特性(3)Java語言是分布式的。它支持Internet應用的開發(fā),在基本的Java應用編程接口中有一個網(wǎng)絡應用編程接口,它提供了用于網(wǎng)絡應用編程的類庫,包括URL、URLConnection、Socket、ServerSocket等。Java的遠程方法激活機制也是開發(fā)分布式應用的重要手段。1.1Java語言簡介1.1.1Java特性(4)Java語言是可移植的。Java程序具有與體系結構無關的特性,可以非常方便地移植到網(wǎng)絡中的不同計算機上。1.1Java語言簡介1.1.1Java特性(5)Java語言是多線程的。多線程機制能夠使應用程序在同一時間內(nèi)并行執(zhí)行多項任務,而且相應的同步機制可以保證不同線程能夠正確地共享數(shù)據(jù),使用多線程可以帶來更好的交互能力和實時行為。1.1Java語言簡介1.1.1Java特性(6)Java語言是解釋型的。運行Java程序需要解釋器,任何移植了Java解析器的計算機或其他設備都可以用Java字節(jié)碼進行解釋執(zhí)行。字節(jié)碼獨立于平臺,它本身攜帶了許多編譯時的信息,使得連接過程更加簡單,開發(fā)過程也就更加迅速,更具探索性。1.1Java語言簡介1.1.1Java特性(7)Java語言是高性能的。Java編譯后的字節(jié)碼是在解釋器中運行的,所以它的速度比多數(shù)交互式應用程序快很多。另外,字節(jié)碼可以在程序運行時被翻譯成特定平臺的機器指令,從而進一步提高運行速度。1.1Java語言簡介1.1.2
Java版本Java發(fā)展至今,按其應用的范圍可以分為三個版本,這使軟件開發(fā)人員、服務提供商和設備生產(chǎn)商可以針對特定的市場進行開發(fā)。(1)JavaSE(Javaplatform,standardedition):之前稱為J2SE。它允許開發(fā)和部署在桌面、服務器、嵌入式環(huán)境和實時環(huán)境中使用的Java應用程序。JavaSE包含了支持JavaWeb服務開發(fā)的類,并為JavaEE提供基礎。1.1Java語言簡介1.1.2
Java版本(2)JavaEE(Javaplatform,enterpriseedition):之前稱為J2EE。企業(yè)版本幫助開發(fā)和部署可移植、健壯、可伸縮且安全的服務器端Java應用程序。JavaEE是在JavaSE的基礎上構建的,它提供Web服務、組件模型、管理和通信API,可以用來實現(xiàn)企業(yè)級的面向服務體系結構(service-orientedarchitecture,SOA)和Web2.0應用程序。1.1Java語言簡介1.1.2
Java版本(3)JavaME(Javaplatform,microedition):之前稱為J2ME。它為在移動設備和嵌入式設備(如手機、PDA、電視機頂盒和打印機)上運行的應用程序提供一個健壯且靈活的環(huán)境。JavaME包括靈活的用戶界面、健壯的安全模型、許多內(nèi)置的網(wǎng)絡協(xié)議以及對可以動態(tài)下載的聯(lián)網(wǎng)和離線應用程序的豐富支持。1.1Java語言簡介1.1.3
Java虛擬機Java虛擬機(Javavirtualmachine,JVM)是一種用于計算設備的規(guī)范,它是一臺虛構出來的計算機,是通過在實際的計算機上仿真模擬各種計算機功能來實現(xiàn)的。簡單來說,JVM是用于執(zhí)行Java應用程序和字節(jié)碼的軟件模塊,并且可以將字節(jié)碼轉(zhuǎn)換為特定硬件和特定操作系統(tǒng)的本地代碼。JVM在執(zhí)行字節(jié)碼時,實際上最終還是把字節(jié)碼解釋成具體平臺上的機器指令執(zhí)行,這就是Java能夠“一次編譯,到處運行”的原因。1.1Java語言簡介1.1.3
Java虛擬機JVM是Java的核心和基礎,在Java編譯器和操作系統(tǒng)平臺之間的虛擬處理器。它是一種基于下層操作系統(tǒng)和硬件平臺并利用軟件方法實現(xiàn)的抽象的計算機,可以在其上執(zhí)行Java的字節(jié)碼程序。Java編譯器只需面向JVM,生成JVM能理解的代碼或字節(jié)碼文件。Java源文件經(jīng)編譯器編譯成字節(jié)碼程序,通過JVM將每一條指令翻譯成不同平臺機器碼,從而在特定平臺上運行,如圖1-1所示。圖1-1
Java程序編譯執(zhí)行過程1.1Java語言簡介1.1.4
JavaAPI文檔應用程序編程接口(applicationprogramminginterface,API)是Java程序開發(fā)必不可少的編程詞典。Java語言提供了成千上萬個類庫,這些類又封裝了許多方法,供編程人員使用。簡單來說,API就是一個幫助文檔,讓用戶能快速了解Java中類的繼承結構、成員變量與成員方法、構造方法、靜態(tài)成員等。1.1Java語言簡介1.1.4
JavaAPI文檔JDK18的API文檔如圖1-2所示。圖1-2
JavaAPI文檔頁面1.2Java開發(fā)環(huán)境搭建1.2
Java開發(fā)環(huán)境搭建在學習Java語言之前,必須先搭建它所需要的開發(fā)環(huán)境。要編譯和執(zhí)行Java程序,JDK(Javadevelopmentkit,Java語言開發(fā)包)是必需的。下面具體介紹下載并安裝JDK和配置環(huán)境變量的方法。1.2
Java開發(fā)環(huán)境搭建1.2.1
JDK下載JDK是Sun公司的產(chǎn)品,由于Sun公司已經(jīng)被Oracle收購,因此JDK可以在Oracle公司的官方網(wǎng)站下載。下面以JDK18為例,具體下載步驟如下:(1)打開Oracle官網(wǎng),找到JDK下載頁面,如圖1-3所示。圖1-3
JDK18下載頁面1.2
Java開發(fā)環(huán)境搭建1.2.1
JDK下載(2)在JDK下載頁面中找到JDK18,單擊JDKDownload按鈕,根據(jù)自己的操作系統(tǒng)選擇相應的版本,如圖1-4所示。圖1-4
JDK下載列表1.2
Java開發(fā)環(huán)境搭建1.2.2
Windows系統(tǒng)環(huán)境配置JDK的安裝比較簡單,選擇默認選項,依次單擊“下一步”按鈕即可。安裝結束后,必須配置系統(tǒng)的環(huán)境變量,才能使用Java開發(fā)環(huán)境。雖然Windows有很多版本,但是配置Java環(huán)境變量的操作大致相同。具體步驟如下:(1)進入環(huán)境變量配置界面,打開“系統(tǒng)屬性”對話框,單擊“環(huán)境變量”按鈕如圖1-5所示,打開“環(huán)境變量”對話框,單擊“新建”按鈕如圖1-6所示。方法1:右擊“計算機”圖標→屬性→高級系統(tǒng)設置→高級→環(huán)境變量。方法2:按【W(wǎng)indows+R】組合鍵→輸入sysdm.cpl并按【Enter】鍵→高級→環(huán)境變量。1.2
Java開發(fā)環(huán)境搭建1.2.2
Windows系統(tǒng)環(huán)境配置圖1-5
“系統(tǒng)屬性”對話框圖1-6
“環(huán)境變量”對話框1.2
Java開發(fā)環(huán)境搭建1.2.2
Windows系統(tǒng)環(huán)境配置(2)彈出“新建系統(tǒng)變量”對話框,分別輸入變量名“JAVA_HOME”和變量值。其中變量值即JDK的安裝路徑,要根據(jù)自己實際的安裝路徑輸入,如圖1-7所示。單擊“確定”按鈕,關閉“新建系統(tǒng)變量”對話框。圖1-7
“新建系統(tǒng)變量”對話1.2
Java開發(fā)環(huán)境搭建1.2.2
Windows系統(tǒng)環(huán)境配置(3)在“環(huán)境變量”對話框中雙擊Path變量,彈出“編輯環(huán)境變量”對話框,在列表最后添加“%JAVA_HOME%\bin”,如圖1-8所示。單擊“確定”按鈕,完成Java環(huán)境變量的設置。圖1-8
“編輯環(huán)境變量”對話框1.2
Java開發(fā)環(huán)境搭建1.2.2
Windows系統(tǒng)環(huán)境配置JDK配置完成后,需確認其是否配置準確。選擇“開始”→“運行”命令,或按【W(wǎng)indows+R】組合鍵,彈出“運行”對話框,輸入cmd后單擊“確定”按鈕啟動控制臺。在控制臺中執(zhí)行javac命令,如果輸出如圖1-9所示的JDK編譯器信息,說明JDK環(huán)境搭建成功。圖1-9
JDK的編譯器信息1.3Eclipse開發(fā)工具1.3
Eclipse開發(fā)工具Eclipse是由IBM公司推出的集成開發(fā)工具,它基于Java語言編寫,并且是開放源代碼與可擴展的,也是目前最流行的Java集成開發(fā)工具之一。IBM公司捐出Eclipse源代碼,組建了Eclipse聯(lián)盟,由該聯(lián)盟負責該工具的后續(xù)開發(fā)。Eclipse為編程人員提供了一流的Java程序開發(fā)環(huán)境。它的平臺體系結構是在插件概念的基礎上構建的,插件是Eclipse平臺區(qū)別于其他開發(fā)工具的特征之一。1.3
Eclipse開發(fā)工具1.3.1
Eclipse下載(1)打開Eclipse官網(wǎng),進入下載頁面,Eclipse下載頁面中包含各種版本的Eclipse下載區(qū)域,找到EclipseIDEforJavaDevelopers選項,選擇相應的操作系統(tǒng)版本,單擊相應鏈接進入下載頁面。如圖1-10所示。圖1-10Eclipse下載頁面1.3
Eclipse開發(fā)工具1.3.1
Eclipse下載(2)Eclipse下載頁面會根據(jù)客戶端所在的地理位置分配合理的下載鏡像站點(也可以單擊SelectAnotherMirror選項選擇其他鏡像),用戶只需在Eclipse下載頁面中單擊Download按鈕即可,如圖1-11所示。圖1-11Eclipse下載頁面1.3
Eclipse開發(fā)工具1.3.2
Eclipse漢化(1)打開Eclipse官方網(wǎng)站,進入Babel項目組首頁,如圖1-12所示。單擊Downloads超鏈接進入語言包下載頁面。Eclipse默認是英文版,在啟動Eclipse之前,可以安裝中文語言包,讓自己在使用Eclipse時更能得心應手。圖1-12Babel項目組頁面1.3
Eclipse開發(fā)工具1.3.2
Eclipse漢化圖1-13語言包下載頁面(2)在下載頁面的BabelLanguagePackZips標題下選擇對應Eclipse版本的超鏈接下載語言包,如圖1-13所示。1.3
Eclipse開發(fā)工具1.3.2
Eclipse漢化圖1-14中文語言包下載頁面(3)打開對應版本語言包的超鏈接,進入中文語言包下載頁面,如圖1-14所示。在該頁面中包含了對應語言的資源包,而每個語言的資源包又按插件與功能模塊分為多個.zip格式的壓縮包。(4)在頁面中找到簡體中文語言包,下載之后將其解壓縮,得到features和plugins文件夾,將這兩個文件夾放置到Eclipse文件夾中,即可完成操作。1.3
Eclipse開發(fā)工具1.3.3
Eclipse配置與啟動(1)在Eclipse的安裝文件夾中運行eclipse.exe文件,彈出“工作空間啟動程序”對話框,在其中設置Eclipse的工作空間(工作空間用于保存Eclipse建立的程序項目和相關設置)。本書的開發(fā)環(huán)境統(tǒng)一設置工作空間為“D:\workspace\”文件夾,在“工作空間啟動程序”對話框的“工作空間”文本框中輸入“D:\workspace”,單擊“確定”按鈕,即可啟動Eclipse,如圖1-15所示。圖1-15“工作空間啟動程序”對話框1.3
Eclipse開發(fā)工具1.3.3
Eclipse配置與啟動每次啟動Eclipse都會彈出“工作空間啟動程序”對話框,可勾選“將此值用作缺省值并且不再詢問”復選框設置默認工作空間,這樣再次啟動時就不會彈出該對話框了。不同的工作空間可以根據(jù)實際需要在“文件”→“切換工作空間”子菜單中切換。1.3
Eclipse開發(fā)工具1.3.4
Eclipse工作臺Eclipse工作臺是程序開發(fā)人員開發(fā)程序的主要場所。Eclipse可以將各種插件無縫地集成到工作臺中,也可以在工作臺中開發(fā)各種自定義插件。Eclipse工作臺主要包括標題欄、菜單欄、工具欄、編輯器、透視圖和相關的視圖等,如圖1-16所示。對于初學者來說,首先要了解的是“包資源管理器”視圖、“編輯器”窗口、“控制臺”視圖、工具欄上的常用按鈕以及菜單中的常用菜單項。其他的視圖和菜單功能可以在以后的學習中逐步熟悉。1.3
Eclipse開發(fā)工具1.3.4
Eclipse工作臺圖1-16Eclipse工作臺1.3
Eclipse開發(fā)工具1.3.4
Eclipse工作臺1、“包資源管理器”視圖“包資源管理器”視圖用于瀏覽項目結構中的Java元素,包括包、類、類庫的引用等,但最主要的用途是操作項目中的源代碼文件。“包資源管理器”視圖的界面如圖1-17所示。圖1-17“包資源管理器”視圖1.3
Eclipse開發(fā)工具1.3.4
Eclipse工作臺2、“控制臺”視圖“控制臺”視圖用于顯示程序運行時的輸出結果和運行時異常信息(runtimeexception)。在學習Swing程序設計之前,必須使用控制臺實現(xiàn)與程序的交互,例如,為方便某個方法的調(diào)試,在方法執(zhí)行前后分別輸出“方法開始”和“方法結束”信息?!翱刂婆_”視圖的界面如圖1-18所示。圖1-18“控制臺”視圖1.3
Eclipse開發(fā)工具1.3.4
Eclipse工作臺Eclipse的菜單欄包含了Eclipse的基本命令,在使用不同的編輯器時,還會動態(tài)地添加有關該編輯器的菜單?;镜牟藛螜谥谐顺S玫摹拔募薄熬庉嫛薄按翱凇薄皫椭钡炔藛瓮?,還提供了一些功能菜單,如“源代碼”“重構”菜單等。謝謝《Java程序設計基礎與應用》第2章
Java語言基礎《Java程序設計基礎與應用》學習目標知識目標:◎掌握Java應用程序結構、標識符與關鍵字;◎熟練掌握Java語言的基本數(shù)據(jù)類型,能定義并使用變量與常量;◎熟練掌握Java各種運算符的優(yōu)先級,能使用運算符與表達式進行數(shù)值計算;◎熟練掌握程序與用戶交互的幾種方法。素質(zhì)目標:◎通過對Java基礎語法的學習,培養(yǎng)編程素養(yǎng)和嚴謹規(guī)范的職業(yè)精神;◎通過對歷史上軟件事故的了解,培養(yǎng)嚴謹求實的科學精神。2.1
案例2-1:第一個Java程序2.1案例2-1:第一個Java程序圖2-1程序運行結果編寫一個Java應用程序,在控制臺輸出“HelloWorld!”信息。程序運行結果如圖2-1所示。1.案例說明2.1案例2-1:第一個Java程序2.實現(xiàn)步驟(1)打開Eclipse,選擇“文件”→“新建”→“項目”命令,彈出“新建項目”對話框,雙擊Java選項(或者在文本框中輸入Java),再選中“Java項目”選項,如圖2-2所示,單擊“下一步”按鈕,彈出“新建Java項目”對話框,將項目命名為study,單擊“完成”按鈕,如圖2-3所示。這時study項目會出現(xiàn)在“包資源管理器”窗口中,同時,系統(tǒng)會在工作空間目錄下建立一個同名文件夾,用于管理整個項目的子目錄與文件。2.1案例2-1:第一個Java程序圖2-3“新建Java項目”對話框2.實現(xiàn)步驟圖2-2“新建項目”對話框2.1案例2-1:第一個Java程序2.實現(xiàn)步驟(2)選中study項目節(jié)點并右擊選擇“新建”→“包”命令,如圖2-4所示,并在“新建包”對話框中輸入包名稱chap02。圖2-4選擇“新建”→“包”命令2.1案例2-1:第一個Java程序圖2-5“新建Java類”對話框2.實現(xiàn)步驟(3)右擊chap02包節(jié)點,選擇“新建”→“類”命令,彈出“新建Java類”對話框,輸入類名稱HelloWorld,并選中“publicstaticvoidmain(String[]args)”復選框,單擊“完成”按鈕,如圖2-5所示。2.1案例2-1:第一個Java程序2.實現(xiàn)步驟/***HelloWorld.java*第一個Java程序HelloWorld*/packagechapter01;
//定義包publicclassHelloWorld{
//定義公共類HelloWorld
publicstaticvoidmain(String[]args){
//main()方法
System.out.println("HelloWorld!");
}}(4)在main()方法中輸入對應代碼,保存程序并運行。2.1案例2-1:第一個Java程序3.知識點分析本案例演示了Java項目的創(chuàng)建、Java程序編寫以及運行的過程。其中,class是一個關鍵字,用于定義一個類;HelloWorld是類的名稱;類名之后的大括號定義了當前類的作用域;main()方法是Java程序的執(zhí)行入口,程序?qū)膍ain()方法開始執(zhí)行類中的代碼;System.out.println("HelloWorld");的作用是打印一段文本信息并輸出到屏幕。2.2Java主類結構2.2Java主類結構Java程序主要分為兩類:Java應用程序(Javaapplication)和Java小程序(Javaapplet)。Java應用程序在本機上由Java解釋程序激活Java虛擬機,而Java小程序是通過瀏覽器激活Java虛擬機,兩者的程序結構不同。本書主要介紹Java應用程序的相關知識,Java小程序的相關知識內(nèi)容可參考其他圖書。2.2Java主類結構2.2.1Java應用程序的主類結構一個Java應用程序成功運行之后,在它的項目文件夾下將會生成擴展名為.java和.class的兩個文件。其中,程序的源代碼存儲在.java文件中,而編譯產(chǎn)生的字節(jié)碼文件則存儲在.class文件中。案例2-1中只有一個源代碼文件“HelloWorld.java”,該文件編譯后產(chǎn)生字節(jié)碼文件“HelloWorld.class”?!癏elloWorld.java”文件存放在“src\chap02”目錄下,而“HelloWorld.class”文件則存放在“bin\chap02”目錄下。如果study項目中包含了多個源代碼文件,那么在編譯時系統(tǒng)將為每個源文件生成一個相對應的.class文件。2.2Java主類結構2.2.1Java應用程序的主類結構一個.java文件可以包含多個類,但是整個文件最多只能有一個類用public修飾,而且這個public類的名稱必須和其文件名一致,比如案例2-1中,文件名和類名必須都是“HelloWorld”。如果該文件中沒有public類,那么該文件的文件名可以任意命名。每個Java應用程序必須包含一個main()方法。它是整個程序的入口,程序從這里開始執(zhí)行,這一點和C/C++語言是一樣的。args[]參數(shù)用來接收命令行參數(shù),是一個字符串數(shù)組。2.2Java主類結構2.2.2標識符和關鍵字Java對各種數(shù)據(jù)對象命名時使用的字符序列稱為標識符,如包、類、方法、參數(shù)、變量和常量等。Java的標識符嚴格區(qū)分大小寫,沒有字符數(shù)的限制,而且必須符合以下幾點要求:(1)必須由字母、數(shù)字、下畫線“_”或符號“$”組成,而且不能以數(shù)字開始。(2)不能使用關鍵字。(3)不能使用其他特殊字符,如空格、問號等。例如,number、年齡、_234等都是合法的,而class、5x、myname等都是非法的。2.2Java主類結構2.2.2標識符和關鍵字Java關鍵字是事先已經(jīng)定義好的,具有特別意義與用途的標識符,又稱保留字,它們用來表示一種數(shù)據(jù)類型,或者表示程序的結構等,不能用作標識符。Java中所有關鍵字都是小寫的,常見的有boolean、break、case、catch、char、class、continue、default、do、double、else、extends、false、final、finally、float、for、if、implements、import、int、interface、long、new、null、package、private、public、return、short、static、super、switch、this、throw、throws、true、try、void、while等。2.2Java主類結構2.2.2標識符和關鍵字Java中雖然沒有const和goto兩個關鍵字,但是它們也不能作為標識符。一般來說,類名以大寫字母開頭,后面每個單詞的第一個字母也都大寫;變量名、對象名與普通方法名則第一個字母小寫,后面每個單詞的第一個字母都大寫。2.2Java主類結構2.2.3代碼的注釋為了提高程序的可讀性,通常在程序的適當位置加上一些解釋性的注釋語句。注釋語句只是用來對程序進行說明,并不參與程序的執(zhí)行。此外,還可以使用注釋暫時屏蔽某些程序語句,等到需要時,只要簡單地刪除注釋標記即可。Java中的基本注釋有三種:(1)單行注釋:雙斜線//開始,不能換行。(2)多行注釋:以“/*”開始,“*/”結束,可以換行;但不允許嵌套,否則將出錯。(3)文檔注釋:以“/**”開始,“*/”結束。文檔注釋放在聲明之前,以說明該程序的層次結構及方法,也可以將程序使用幫助信息嵌入到程序中。2.3
案例2-2:計算圓的面積和周長2.3案例2-2:計算圓的面積和周長圖2-6程序運行結果編寫一個Java應用程序,輸入圓的半徑,在控制臺輸出其面積。程序運行結果如圖2-6所示。1.案例說明2.3案例2-2:計算圓的面積和周長2.實現(xiàn)步驟(1)在chap02包中創(chuàng)建CircleArea類。(2)在main()方法中輸入對應代碼,運行程序。publicclassCircleArea
{
publicstaticvoidmain(String[]args){
finaldoublePI=3.14;//定義常量PI
doubler,area;//定義變量
r=Double.parseDouble(args[0]);//將字符串數(shù)組的第一個參數(shù)由字符串類型轉(zhuǎn)換為雙精度浮點數(shù)
System.out.println("r="+r);
area=PI*r*r;//計算面積
System.out.println("圓的面積為:"+area);
}}2.3案例2-2:計算圓的面積和周長2.實現(xiàn)步驟(3)選擇“運行”→“運行配置”命令,彈出“創(chuàng)建、管理和運行配置”對話框,如圖2-7所示。(4)在左側(cè)窗口中選中對應的應用程序,在右側(cè)窗口的“自變量”選項卡中輸入半徑“3.0”,單擊“運行”按鈕。圖2-7“創(chuàng)建、管理和運行配置”對話框2.3案例2-2:計算圓的面積和周長3.知識點分析本案例可以實現(xiàn)圓的面積計算,根據(jù)功能需要定義變量和常量,并實現(xiàn)變量間的類型轉(zhuǎn)換,最后使用運算符完成圓的面積計算。2.4基本數(shù)據(jù)類型2.4基本數(shù)據(jù)類型數(shù)據(jù)是計算機程序處理的對象,也是運算產(chǎn)生的結果。為了更好地處理各類數(shù)據(jù),Java定義了多種數(shù)據(jù)類型。不同的數(shù)據(jù)類型所占用的存儲空間和系統(tǒng)執(zhí)行數(shù)據(jù)處理的方法都不相同。因此,在使用數(shù)據(jù)時,必須先對其類型進行說明或定義。系統(tǒng)執(zhí)行的各種數(shù)據(jù)運算只能在相同或相容的數(shù)據(jù)類型之間進行,否則將發(fā)生錯誤。對于初學者來說,認識到這一點尤其重要。與其他編程語言不同的是,Java的基本數(shù)據(jù)類型在任何操作系統(tǒng)中都具有相同的大小和屬性。C語言在不同的系統(tǒng)中,相同數(shù)據(jù)類型變量的取值范圍有可能是不一樣的。Java語言的基本數(shù)據(jù)類型分為三種:數(shù)值型、字符型和布爾型。2.4基本數(shù)據(jù)類型數(shù)值型數(shù)據(jù)分為整數(shù)類型和浮點數(shù)類型兩種。整數(shù)類型的數(shù)據(jù)不帶小數(shù)部分。Java中的整數(shù)類型不存在無符號類型,一共支持四種整數(shù)類型,見表2-1。不同的整數(shù)類型表示的取值范圍不同,根據(jù)程序?qū)φ麛?shù)范圍的實際需要,靈活選擇上述一種整數(shù)。整數(shù)類型表2-1整數(shù)類型2.4基本數(shù)據(jù)類型浮點數(shù)類型浮點數(shù)類型同時使用整數(shù)部分和小數(shù)部分表示數(shù)字。Java支持兩種實數(shù)類型,即單精度浮點數(shù)?oat和雙精度浮點數(shù)double,見表2-2。整數(shù)類型除以零會發(fā)生異常,浮點數(shù)除以零則會輸出Infinity。表2-2浮點數(shù)類型2.4基本數(shù)據(jù)類型2.4.2字符型數(shù)據(jù)字符型char的數(shù)據(jù)范圍是0~65535,它是Unicode字符集中的單個字符,占用2字節(jié)。字符類型常量用單引號,而且單引號中有且僅有一個字符。例如,'ab'和"c"都不是字符型常量。在Java語言中字符串類型String不是基本數(shù)據(jù)類型,用它聲明的變量將被當作對象來處理。相關內(nèi)容將在第5章中介紹。2.4基本數(shù)據(jù)類型2.4.3布爾型數(shù)據(jù)布爾類型數(shù)據(jù)只有兩個值,即true和false。在Java語言中,布爾類型數(shù)據(jù)和整數(shù)類型沒有關系,不能相互轉(zhuǎn)換,這一點也與C語言不一樣。2.5常量與變量2.5常量與變量程序在處理數(shù)據(jù)時,必須將數(shù)據(jù)保存在計算機的內(nèi)存中,保存在內(nèi)存中的數(shù)據(jù)從可變性上看,分為常量和變量兩種。常量和變量都會出現(xiàn)在任何一個程序中,所以正確理解并掌握常量和變量的概念對學習程序設計是十分重要的。2.5常量與變量2.5.1變量變量是Java中的一個基本存儲單元。通常來說,任何程序都離不開變量的參與。人們編制程序就是為了減少重復勞動,提高工作效率。而變量的存在使其成為可能,這是因為變量可以存儲不同的值或數(shù)據(jù)。與常量不同,變量的值可以反復賦值。2.5常量與變量變量的聲明在Java中,使用變量前必須先聲明。變量的聲明規(guī)定了變量的類型和名字。變量的聲明格式如下:變量類型變量名;例如:inti;//聲明一個整數(shù)型變量floatf;//聲明一個單精度浮點型變量charc;//聲明一個字符型變量booleanb;//聲明一個布爾型變量2.5常量與變量變量的聲明若使用一個未聲明的變量,則在程序編譯時會發(fā)生錯誤。Java中并不要求聲明變量的同時馬上初始化該變量,即為變量賦初值,但及時為變量賦初值是一個好習慣。例如:inti=1;//在聲明i的同時賦初值1charc1='a',c2='b';//聲明并賦值多個變量,用“,”進行分隔2.5常量與變量對變量的賦值變量聲明之后就可以在后面的程序中使用它們。無論變量在聲明時是否進行了初始化,都可以對其值進行再次賦值。為變量賦值使用賦值號“=”。例如:intx=5;doubled;a=10;d=3.14;這里需要說明的是,浮點數(shù)型常量在Java中默認為double類型,因此將實數(shù)類型常量賦值給浮點型變量時,必須在實數(shù)類型常量后面加上類型說明,否則將產(chǎn)生編譯錯誤。例如:floatf1=3.14F//或使用fdoubled=3.14D//或使用d,也可以省略floatf2=3.14//錯誤,不能將double類型常量賦值給float類型變量2.5常量與變量對變量的賦值在使用未賦值的變量時要格外注意,不然可能會發(fā)生錯誤。例如:intx,y=0;y=x+1;//錯誤,因為變量x沒有初始值給變量賦予不同類型的值時,會發(fā)生錯誤。例如:intd=5.31;//錯誤,因為給整數(shù)型變量賦了一個浮點數(shù)charc="abc";//錯誤,因為給字符型變量賦了一個字符串值可以給多個變量一起賦值。例如:inta,b,c;a=b=c=1;//a,b,c同時賦值為12.5常量與變量2.5.2常量編寫程序代碼時經(jīng)常會反復出現(xiàn)同一個常數(shù)值,通過使用常量可以提高代碼的可讀性,并使代碼更易于維護。顧名思義,常量的值在程序整個執(zhí)行過程中都保持不變,不能重復賦值。常量分為:直接常量和符號常量兩種。2.5常量與變量直接常量直接常量就是數(shù)據(jù)值本身。常見的直接常量有數(shù)值常量、字符型常量、字符串型常量和布爾型常量。其中,布爾類型只有true和false兩個值。另外,需要注意,常量和變量一樣,字符型常量用單引號界定,字符串型常量用雙引號界定。直接常量的例子如下:123,-12,3.14//數(shù)值常量'a','=','Z'//字符型常量"a","name","北京"http://字符串型常量true,false//布爾常量2.5常量與變量在Java中,有些字符是不能直接表示的,如換行符,還有些字符放在單引號中作為字符常量,如“\”。這時需要使用轉(zhuǎn)義符表示這些字符常量,轉(zhuǎn)義符由反斜杠“\”加字符組成,常見的轉(zhuǎn)義符見表2-3。直接常量表2-3常用轉(zhuǎn)義符2.5常量與變量例如,輸出一個雙引號。如果不加“\”,那么第二個雙引號將自動和第一個雙引號配對,因此,系統(tǒng)會認為該字符串多出了一個雙引號,也就是最后一個雙引號。System.out.println("\"");//輸出一個雙引號System.out.println("Hello\nWorld");//分兩行輸出Hello與World直接常量2.5常量與變量符號常量編寫程序代碼時經(jīng)常會反復出現(xiàn)同一個常數(shù)值,如案例2-2中的圓周率。有時,這些常數(shù)值難以記憶甚至沒有明顯的意義,如企業(yè)員工的工資系數(shù)。如果程序中不使用符號常量,一旦某個原本固定的值要發(fā)生改變時,那么就要在整個程序代碼中查找更改該數(shù)字。不僅可讀性差,而且很容易出錯。因此,使用符號常量是十分重要的。2.5常量與變量符號常量符號常量是有意義的名稱,用于代替不變的數(shù)字或字符串。常量的命名規(guī)則與變量的命名規(guī)則相同,但不能和已經(jīng)定義的變量重名??梢圆捎肅語言的命名習慣,將常量名都用大寫字母表示,這樣就可以很容易區(qū)分程序中哪些是常量,哪些是變量,增加程序的可讀性。用戶定義符號常量使用關鍵字?nal,聲明的語法格式為:?nal數(shù)據(jù)類型常量名=常量表達式;例如:?naldoublePI=3.14;2.6數(shù)據(jù)類型之間的類型轉(zhuǎn)換2.6數(shù)據(jù)類型之間的類型轉(zhuǎn)換在Java程序中,將一種數(shù)據(jù)類型的常量或者變量轉(zhuǎn)換到另外一種數(shù)據(jù)類型,稱為類型轉(zhuǎn)換。常見的類型轉(zhuǎn)換有三種,即隱式類型轉(zhuǎn)換、強制類型轉(zhuǎn)換、字符串類型與數(shù)值類型之間的轉(zhuǎn)換。2.6數(shù)據(jù)類型之間的類型轉(zhuǎn)換2.6.1隱式類型轉(zhuǎn)換隱式轉(zhuǎn)換是指系統(tǒng)內(nèi)部根據(jù)程序運行的需要自動進行的數(shù)據(jù)類型轉(zhuǎn)換。例如:Stringa,b;a=5+"";
//系統(tǒng)會把數(shù)字5隱式轉(zhuǎn)換成字符串類型"5",再進行連接,最后賦值b=10+a;
//同理,得到b為"105",而不是"15"2.6數(shù)據(jù)類型之間的類型轉(zhuǎn)換2.6.1隱式類型轉(zhuǎn)換隱式轉(zhuǎn)換允許在賦值和計算時由編譯系統(tǒng)按一定的優(yōu)先次序自動完成。一般來說,低精度類型到高精度類型的轉(zhuǎn)換是由系統(tǒng)自動完成的。根據(jù)不同數(shù)據(jù)所占的字節(jié)數(shù),它們之間的精度高低順序如下:byte<short,char<int<long<?oat<double例如:inti='a'+1;//字符'a'隱式轉(zhuǎn)換成short類型97,結果i=98charch='a'+1;//字符'a'隱式轉(zhuǎn)換成97,相加之后再把結果98隱式轉(zhuǎn)換成'b',結果ch='b'longl=i;//變量i隱式轉(zhuǎn)換成long類型,再賦值給lch=i;//系統(tǒng)出錯,因為int類型精度高于char類型2.6數(shù)據(jù)類型之間的類型轉(zhuǎn)換2.6.2強制類型轉(zhuǎn)換強制轉(zhuǎn)換又稱顯式轉(zhuǎn)換,強制轉(zhuǎn)換是指通過程序代碼,使用專門的格式或調(diào)用轉(zhuǎn)換方法改變數(shù)據(jù)的類型。強制轉(zhuǎn)換的格式為:目標數(shù)據(jù)類型變量名=(目標數(shù)據(jù)類型)數(shù)據(jù)或表達式例如:charch;inti=97;ch=(char)i;//強制轉(zhuǎn)換floatf=(float)1.2//將double常量強制轉(zhuǎn)換成float2.6數(shù)據(jù)類型之間的類型轉(zhuǎn)換2.6.2強制類型轉(zhuǎn)換由于不同數(shù)據(jù)類型的存儲方式有一定的差異,在轉(zhuǎn)換時可能會導致數(shù)據(jù)發(fā)生變化,要特別注意。例如:shorta=300;byteb=(byte)a;//b=44;同時,強制類型轉(zhuǎn)換并不是萬能的,有些類型之間的轉(zhuǎn)換不能用強制類型轉(zhuǎn)換。例如:Stringstr=(String)80//編譯出錯doublef=(double)"3.14"http://編譯出錯2.6數(shù)據(jù)類型之間的類型轉(zhuǎn)換2.6.3字符串類型與數(shù)值類型的轉(zhuǎn)換由于字符串類型與數(shù)值類型之間的轉(zhuǎn)換比較常用,又不能直接用強制類型轉(zhuǎn)換,所以下面介紹一下它們之間的類型轉(zhuǎn)換。1.字符串類型轉(zhuǎn)換為數(shù)值類型語法格式為:數(shù)值類型所對應的包裝類.parseXXX(字符串類型表達式)或數(shù)值類型所對應的包裝類.valueOf(字符串類型表達式)2.6數(shù)據(jù)類型之間的類型轉(zhuǎn)換2.6.3字符串類型與數(shù)值類型的轉(zhuǎn)換其中,“字符串類型表達式”的值必須嚴格符合“數(shù)值類型名稱”對數(shù)值格式的要求。例如:strings1="12",s2="12.5";intx=Integer.parseInt(s1);//轉(zhuǎn)換成功inty=Integer.valueOf(s1);//轉(zhuǎn)換成功doubled1=Double.parseDouble(s2);//轉(zhuǎn)換成功doubled2=Double.valueOf(s2);//轉(zhuǎn)換成功floatf=Float.parseFloat(s2);//轉(zhuǎn)換成功intz=Integer.parseInt(s2);//轉(zhuǎn)換失敗,參數(shù)格式不正確intk=Integer.valueOf(s2);//轉(zhuǎn)換失敗,參數(shù)格式不正確2.6數(shù)據(jù)類型之間的類型轉(zhuǎn)換2.6.3字符串類型與數(shù)值類型的轉(zhuǎn)換不過這兩種方法的返回類型有所不同,比如Integer.parseInt()方法返回的是一個int類型的常量;Integer.valueOf()方法返回的則是Integer類型的對象,上述轉(zhuǎn)換的例子涉及包裝類Integer和基本數(shù)據(jù)類型int之間的拆箱操作?;緮?shù)據(jù)類型都對應著相應的包裝類,具體內(nèi)容將在第8章中介紹。2.6數(shù)據(jù)類型之間的類型轉(zhuǎn)換數(shù)值類型轉(zhuǎn)換為字符串類型在數(shù)據(jù)處理時,經(jīng)常需要將數(shù)值類型轉(zhuǎn)換為字符串輸出顯示,常用方法有以下三種:(1)將數(shù)值類型與空字符串連接。例如:inti=5;Strings1=i+"";//轉(zhuǎn)換成功,轉(zhuǎn)換后s1="5"2.6數(shù)據(jù)類型之間的類型轉(zhuǎn)換數(shù)值類型轉(zhuǎn)換為字符串類型(2)調(diào)用包裝類的toString()方法。語法格式為:數(shù)值類型所對應的包裝類.toString(數(shù)值類型表達式)其中,“數(shù)值類型表達式”的類型必須和對應的包裝類相同,否則將發(fā)生錯誤。例如:inti=123;doubled=123.456;Strings1=Integer.toString(i);//轉(zhuǎn)換成功Strings2=Double.toString(d);//轉(zhuǎn)換成功Strings3=Integer.toString(d);//轉(zhuǎn)換失敗,d不是整數(shù)2.6數(shù)據(jù)類型之間的類型轉(zhuǎn)換數(shù)值類型轉(zhuǎn)換為字符串類型(3)調(diào)用String類型的valueOf()方法。這種方法還可以將字符類型轉(zhuǎn)換成字符串。例如:Strings1=String.valueOf(3.5);//轉(zhuǎn)換成功Strings2=String.valueOf('a');//轉(zhuǎn)換成功2.7運算符和表達式2.7運算符和表達式描述各種不同運算的符號稱為運算符,表達式用來表示某個求值規(guī)則。運算符是表達式的組成部分,根據(jù)操作數(shù)的個數(shù)劃分,可以分為:一元運算符、二元運算符和三元運算符;根據(jù)運算符的類型劃分,又可以分為:算術運算符、字符串運算符、關系運算符、邏輯運算符、條件運算符和賦值運算符。表達式的類型由運算符的類型決定,大致分為:算術表達式、字符串表達式、關系表達式、邏輯表達式、條件表達式和賦值表達式。2.7運算符和表達式2.7.1運算符與表達式類型——算術運算符與算術表達式算術表達式又稱數(shù)值型表達式,由算術運算符、數(shù)值型常量、變量、函數(shù)和圓括號組成,其運算結果為數(shù)值。算術運算符分為一元運算符和二元運算符。2.7運算符和表達式2.7.1運算符與表達式類型——算術運算符與算術表達式一元運算符可以和一個變量構成一個表達式,常見的一元運算符有取負(-)、取正(+)、自減(--)和自增(++)。例如:intx=4,y=10;x++;//x的值為5,等價于x=x+1--y;//y的值為9,等價于y=y-1一元運算符x++和++x是不同的。前者是先使用x的值再增量;后者是先增量再使用x的值,因此所得到的值也不同。例如:intx1,x2,y=1,z=1;x1=y++;//x1的值為1x2=++z;//x2的值為22.7運算符和表達式2.7.1運算符與表達式類型——算術運算符與算術表達式二元運算符需要兩個操作數(shù)參與,通常得出一個結果。除了常用的加(+)減(-)乘(*)除(/)外,還有取余,用“%”表示。它的優(yōu)先級和乘除一樣,高于加減。例如:inti=10%3*2;//則i的值為2在使用算術表達式時,要注意操作數(shù)的數(shù)據(jù)類型。例如:doublei=9/2;//則i的值為4doublej=9.0/2;//則j的值為4.52.7運算符和表達式2.7.1運算符與表達式類型——字符串運算符和字符串表達式字符串運算符只有一個,即“+”運算符,表示將兩個字符串連接起來。例如:"北京"+"奧運會"http://連接后的結果為:北京奧運會"AB"+"cd"+"F"http://連接后的結果為:"ABcdF"再如:strings1,s2="國";s1="中"+s2+"加油!"http://連接后的結果為:"中國加油!"字符串進行連接時,可能會涉及數(shù)值類型的轉(zhuǎn)換,這部分內(nèi)容將在第5章中講解。2.7運算符和表達式2.7.1運算符與表達式類型——關系運算符與關系表達式關系運算符用于比較兩個操作數(shù)之間的關系,若關系成立,則返回一個邏輯真(true)值,否則返回一個邏輯假(false)值。關系運算符共有六種,即>、<、>=、<=、==和!=,依次為:大于、小于、大于或等于、小于或等于、等于和不等于。需要注意的是,等于運算符“==”由兩個等號組成,中間不能有空格,使用時特別注意不要和賦值運算符“=”混淆。前四種運算符的優(yōu)先級比后兩種運算符高。關系運算符不僅可以比較數(shù)值,還可以比較字符。字符串要比較大小則需要借助equals()和compareTo()方法,這些內(nèi)容將在第5章中詳細介紹。例如:11>4//結果為true,數(shù)值型比較數(shù)值大小'a'>'b'//結果為false,比較字符型相對應的ASCII碼i%2==0//若結果為true,則i是偶數(shù),否則i為奇數(shù)2.7運算符和表達式2.7.1運算符與表達式類型——邏輯運算符與邏輯表達式邏輯表達式又稱布爾表達式,是對操作數(shù)進行邏輯運算,得到的結果和關系表達式類似,返回邏輯真(true)值或邏輯假(false)值。最常用的邏輯運算符是:!(非)、&&(與)和||(或)。其中,“非”的優(yōu)先級最高,“與”的優(yōu)先級次之,“或”的優(yōu)先級最低。三種運算符的中文名稱已經(jīng)比較清晰地表明了各運算符的含義?!胺恰边\算是求原布爾值相反的運算,例如:!true的值為false?!芭c”運算是求兩個布爾值都為真的運算,只有兩個布爾值都為真時是真。例如:“true&&true”的值為true;“true&&false”與“false&&false”的值都為false?!盎颉边\算是求兩個布爾值至少有一個為真的運算,只有兩個布爾值都為假時才是假。例如:“false||false”的值為false;“true||false”和“true||true”的值為true。2.7運算符和表達式2.7.1運算符與表達式類型——條件運算符與條件表達式由運算符“?”與“:”組成的表達式為條件表達式。運算符“?:”是一個三元運算符,它是if…else…的簡單形式,第3章中還將對if…else…語句進行講解,這里先介紹條件運算符的用法。其一般格式為:邏輯表達式?表達式1:表達式2“邏輯表達式”可以是運算結果為布爾值的表達式,也可以是一個布爾常量。當邏輯表達式的值為true時,則運算結果為“表達式1”的值;如果為false時,則運算結果為“表達式2”的值。2.7運算符和表達式2.7.1運算符與表達式類型——條件運算符與條件表達式例如:intx=5,y=8,max,min;max=x>y?x:y;//max的值為8min=x<y?x:y;//min的值為5條件運算符“?
:”是可以嵌套的,而且條件運算符結合性為右結合。例如:intx=1,y=2,z=3,a;a=x>y?x:y>z?y:z;//a的值為32.7運算符和表達式2.7.1運算符與表達式類型——賦值運算符與賦值表達式由賦值運算符組成的表達式為賦值表達式。最常用的是簡單賦值運算符“=”,在前面的章節(jié)中,已多次使用到。另外,還有復合的賦值運算符,如+=、-=、*=、%=等。在一元運算符中,已介紹過“x++”等價于“x=x+1”。此外,還有許多簡化的運算符的寫法。例如:x+=y;//等價于x=x+y;,減乘除法類似x%=y;//等價于x=x%y;2.7運算符和表達式2.7.2運算符的優(yōu)先級和結合性在程序設計過程中,一個表達式往往由多個運算符組成,所以這就引出了一個新的問題:運算符的優(yōu)先級和結合性。優(yōu)先級是指當一個表達式中出現(xiàn)多個不同的運算符時,先進行哪種運算。結合性是指當一個表達式中出現(xiàn)兩個以上的相同優(yōu)先級的運算符時,運算的方向是從左到右還是從右到左。2.7運算符和表達式2.7.2運算符的優(yōu)先級和結合性運算符的優(yōu)先級從高到的底的順序見表2-4。從表中可以得出運算符的優(yōu)先級有以下特點:一元運算符>二元運算符>三元運算符算術運算符>關系運算符>邏輯運算符>條件運算符>賦值運算符表2-4運算符的優(yōu)先級2.7運算符和表達式2.7.2運算符的優(yōu)先級和結合性結合性也是運算順序,與優(yōu)先級不同的是,結合性是在同級別的運算符之間,從方向上控制運算順序,即控制運算按從右往左或從左往右的方向順序運算。在多個同級運算符中,只有賦值運算符與條件運算符是從右往左結合的,除此之外的二元運算符都是從左往右結合的。例如,a+b+c是按(a+b)+c的順序運算的;而a=b=c是按a=(b=c)的順序賦值的。條件運算符是按從右往左結合的,那么再來看上面那個嵌套的條件運算符的例子就顯得非常簡單了。2.8程序與用戶交互的簡單方法2.8程序與用戶交互的簡單方法程序和用戶之間的交互是必不可少的,用戶經(jīng)常會輸入一些數(shù)據(jù),程序也經(jīng)常會輸出一些信息。在之前的例子中,使用System.out.println()方法向控制臺輸出信息,還利用系統(tǒng)的自變量輸入變量的值,下面介紹一些其他輸入方法。2.8程序與用戶交互的簡單方法2.8.1從命令行輸入數(shù)據(jù)運行一個Java程序時,要給它提供一個main()方法入口,參數(shù)args是一個String類型的數(shù)組,該數(shù)組中保存執(zhí)行Java命令時傳遞給所運行的類的參數(shù)。例2.1:編寫程序ArgsPrint,輸出main()方法的參數(shù)args數(shù)組中的所有內(nèi)容。publicclassArgsPrint{publicstaticvoidmain(String[]args){System.out.println(args.length);
//輸出數(shù)組的長度for(inti=0;i<args.length;i++)
//利用循環(huán)語句輸出數(shù)組內(nèi)容System.out.println(args[i]);}}2.8程序與用戶交互的簡單方法2.8.1從命令行輸入數(shù)據(jù)在Windows字符界面中的運行結果如圖2-8所示。圖2-8Windows字符界面運行結果2.8程序與用戶交互的簡單方法2.8.1從命令行輸入數(shù)據(jù)在Eclipse環(huán)境中的執(zhí)行方法與案例2-2中的一樣,運行結果如圖2-9所示。圖2-9Eclipse環(huán)境運行結果2.8程序與用戶交互的簡單方法2.8.2在控制臺輸入/輸出數(shù)據(jù)1.向控制臺輸出數(shù)據(jù)標準輸出流(System.out)中提供了三種輸出方法:(1)print(輸出項):輸出數(shù)據(jù)后不換行。輸出項可以是變量名、常量、表達式。(2)println(輸出項):輸出數(shù)據(jù)后換行。輸出項可以是變量名、常量、表達式。(3)printf("格式控制部分",表達式1,表達式2,...,表達式n):這種輸出的形式與C語言中的printf()函數(shù)類似,這里不展開敘述。2.8程序與用戶交互的簡單方法2.8.2在控制臺輸入/輸出數(shù)據(jù)2.從控制臺輸入數(shù)據(jù)使用Scanner類可以實現(xiàn)從控制臺輸入數(shù)據(jù),即使用java.util.Scanner類創(chuàng)建一個對象:Scannerreader=newScanner(System.in);借助reader對象,可以實現(xiàn)各種類型數(shù)據(jù)的讀入,讀入的方法有:nextInt():讀入整數(shù)。nextFloat():讀入單精度數(shù)。nextDouble():讀入雙精度數(shù)。nextLine():整行讀入字符串。next():以空格作為分隔符讀入字符串。例如:Stringstr=reader.nextLine();//輸入一行字符串inti=reader.nextInt();//輸入一個整數(shù)2.8程序與用戶交互的簡單方法2.8.3利用對話框輸入/輸出數(shù)據(jù)(1)利用JOptionPane.showInputDialog輸入數(shù)據(jù)。例如:Stringin=JOptionPane.showInputDialog("請輸入一個整數(shù)",0);該語句的輸出結果如圖2-10所示。其中參數(shù)“0”表示默認輸入值,也可省略。語句執(zhí)行之后,字符串變量in的值就是對話框的輸入值。圖2-10對話框輸入2.8程序與用戶交互的簡單方法(2)利用JOptionPane.showMessageDialog輸出數(shù)據(jù)。例如:JOptionPane.showMessageDialog(null,"您剛才輸入的是"+in);該語句的輸出結果如圖2-11所示。關于對話框的使用,將在第11章中詳細敘述。2.8.3利用對話框輸入/輸出數(shù)據(jù)圖2-11對話框輸出2.9綜合實踐2.9綜合實踐題目描述編寫程序,從控制臺輸入兩個整數(shù),在控制臺輸出它們的和。輸出格式要求為:“X+Y=Z”。輸入樣例5輸出樣例3+5=8謝謝《Java程序設計基礎與應用》第3章Java程序流程控制《Java程序設計基礎與應用》學習目標知識目標:◎熟練掌握if語句的結構及使用方法;◎掌握switch分支結構及使用方法;◎熟練掌握for與while循環(huán)語句結構及使用方法;◎掌握循環(huán)嵌套結構及使用方法。素質(zhì)目標:◎在學習流程控制語句的過程中鍛煉思維能力,培養(yǎng)嚴謹?shù)乃季S習慣和實踐能力。3.1案例3-1:整數(shù)的奇偶性3.1案例3-1:整數(shù)的奇偶性圖3-1程序運行結果編寫一個Java應用程序,從控制臺輸入一個整數(shù),輸出它的奇偶性。程序運行結果如圖3-1所示。1.案例說明3.1案例3-1:整數(shù)的奇偶性2.實現(xiàn)步驟(1)在chap03包中創(chuàng)建Exam3_1類,在main()方法中輸入對應代碼。(2)在控制臺中輸入需要測試的整數(shù)。importjava.util.Scanner;
publicclassExam3_1{
publicstaticvoidmain(String[]args){
intnum;
Scannerread=newScanner(System.in);//創(chuàng)建一個Scanner類的對象
num=read.nextInt();
//利用方法讀入一個整數(shù),并賦值給變量num
if(num%2==0)
{
//如果num是偶數(shù)
System.out.println(num+"是一個偶數(shù)");
}else{
//否則num是奇數(shù)
System.out.println(num+"是一個奇數(shù)");
}
}
}3.1案例3-1:整數(shù)的奇偶性3.知識點分析本案例使用if…else…分支語句實現(xiàn)一個整數(shù)奇偶性的判斷,if后面()中的布爾類型表達式為判斷條件,如果判斷條件成立,程序執(zhí)行if后面{}中的語句;否則執(zhí)行else后面{}中的語句。3.2分支語句3.2分支語句在前面章節(jié)中,程序都是按順序執(zhí)行的。但是,在現(xiàn)實中經(jīng)常需要根據(jù)不同的情況采取不同的行動。例如,在案例3-1中,根據(jù)輸入整數(shù)的奇偶性,輸出對應的提示語句。這種根據(jù)一定的條件有選擇地執(zhí)行程序的結構稱為選擇結構,又稱分支結構。Java提供了兩種選擇語句以實現(xiàn)選擇結構:if語句,可以判斷特定的條件是否滿足,用于單分支選擇結構,也可以通過嵌套實現(xiàn)多分支選擇結構;switch語句,通過表達式的值與多個不同的值進行比較來處理多個選擇,用于多分支選擇結構。3.2分支語句3.2.1if語句if語句根據(jù)條件表達式的值選擇所要執(zhí)行的語句。其一般格式為:if(判斷條件)
{
語句塊1}
else
{
語句塊2}3.2分支語句3.2.1if語句由if…else…語句構成的選擇結構的控制流程如圖3-2所示。圖3-2選擇結構控制流程圖3.2分支語句3.2.1if語句在if…else…語句中,判斷條件可以是關系表達式、邏輯表達式或者邏輯常量值。當返回值為真(true)時,程序執(zhí)行語句塊1;當返回值為假(false)時,程序執(zhí)行語句塊2。語句塊1、2可以是單條語句,也可以是多條語句。當它是單條語句時,大括號可以省略;當它是多條語句時,則必須使用大括號。如果語句塊1、2又是一條if…else…語句,那么這就構成了一條嵌套式的if語句。對于if…else…語句來說,else部分的語句是可選的。也就是說,程序設計者可以根據(jù)實際情況決定是否省略else子句。初學者要特別注意,當語句塊中有多條語句時,往往容易忘記添加大括號,因此不妨在初學時都不要省略大括號。3.2分支語句3.2.1if語句例3.1輸入三個數(shù),輸出最大值。分析:兩個數(shù)求最大值比較容易,但是三個數(shù)要兩兩比較它們之間的大小關系則比較麻煩。可以先求其中任意兩個數(shù)的最大值,然后再將其和第三個數(shù)比較即可,即求兩次“兩個數(shù)的最大值”。代碼如下:publicstaticvoidmain(String[]args){doublemax,
a,
b,
c;Scannerrd=newScanner(System.in);a=rd.nextDouble();b=rd.nextDouble();c=rd.nextDouble();if(a>b)
//先求前兩個數(shù)的最大值并將其保存在max中max=a;elsemax=b;if(max<c)
//再比較max和第三個數(shù)的大小max=c;System.out.println("最大值為:"+max);}3.2分支語句3.2.1if語句有時程序需要對三種或三種以上的情況進行判斷,這就需要設計多分支的選擇結構。這時,可以使用if語句的嵌套結構。其一般格式為:if(條件表達式1){語句塊1}elseif(條件表達式2){語句塊2}…elseif(條件表達式n){語句塊n}else{語句塊n+1}3.2分支語句3.2.1if語句例3.2輸入阿拉伯數(shù)字1~5,輸出對應的大寫漢字。publicstaticvoidmain(String[]args){Scannerrd=newScanner(System.in);intn=rd.nextInt();Stringoutput="您的輸入有誤!";if(n==1)output="壹";elseif(n==2)output="貳";elseif(n==3)output="叁";elseif(n==4)output="肆";elseif(n==5)output="伍";System.out.println(output);}3.2分支語句3.2.1if語句編譯器不能根據(jù)書寫格式判斷層次關系,因此需要人為地確定層次關系,即從后往前查找else,else與離它最近且沒有配對的if是一對。可見,最后的else語句到底屬于哪一層很難判定,這時可以添加大括號增加程序的可讀性。else部分與語法上允許的最相近的上一個if語句相關聯(lián)。因此在有些時候,雖然語句塊1只有一條語句,但是一對大括號并不能省略,否則將可能得到錯誤的結果,可參考本章課后習題簡答題第3題。3.2分支語句3.2.2
switch語句從例3.2可以看到當有多種選擇時,用if語句處理起來比較煩瑣,可讀性也比較差,而且還很容易出錯。這時可以使用switch語句實現(xiàn)同樣的功能,關鍵字switch是“開關”的意思。switch語句是多分支選擇語句,它通過switch表達式的值與多個不同值進行比較,選擇相應的case語句處理多個選擇。switch表達式是一個整型、字符型或字符串類型表達式。其一般格式為:switch(表達式)
{
case常數(shù)1:
語句塊1
break;
…
case常數(shù)n:
語句塊n
break;
default:
語句塊n+1
break;}3.2分支語句3.2.2
switch語句switch語句的執(zhí)行方法如下:首先計算表達式的值,然后將該值與case標簽中指定的常數(shù)比較。若兩者相等,則執(zhí)行該case標簽后面的語句塊。如果所有case標簽后的常數(shù)都不等于表達式的值,且若存在一個default標簽,則執(zhí)行default標簽后面的語句塊;若此時不存在default標簽,則switch語句執(zhí)行結束。(1)表達式的值必須是整型、字符型或字符串型的常數(shù)值,不能是?oat或double類型。(2)如果同一個switch語句中有兩個以上的case標簽指定了同一個常數(shù)值,編譯時將發(fā)生錯誤。(3)一個switch語句中最多只能有一個default標簽。3.2分支語句3.2.2
switch語句switch語句一旦找到相匹配的case分支(即表達式的值與case后的值相等),程序就開始執(zhí)行這個case分支后面的語句塊,系統(tǒng)將不再判斷與后面case、default標簽的條件是否匹配,除非遇到break語句,否則switch語句不會結束,這往往不是用戶所希望的。因此,break語句可以終止當前分支的執(zhí)行體。3.2分支語句3.2.2
switch語句下面將例3.2用switch語句實現(xiàn),代碼如下:publicstaticvoidmain(String[]args){Scannerrd=newScanner(System.in);intn=rd.nextInt();Stringoutput=newString();//初始化一個字符串對象switch(n){case1:output="壹";break;case2:output="貳";break;case3:output="叁";break;case4:output="肆";break;case5:output="伍";break;default:output="您的輸入有誤!";break;}System.out.println(output);}3.2分支語句3.2.2
switch語句如果將上述switch語句中的break語句全部刪除,那么當輸入n=1時,程序?qū)敵觥澳妮斎胗姓`!”。switch語句中,每個case標簽對應的只能是一個常數(shù)值,而不能是一個數(shù)值范圍。但是,在現(xiàn)實中往往會碰到各分支的條件是一個數(shù)值范圍。3.2分支語句3.2.2
switch語句例3.3假設某商場的商品打折,一次性購買的商品金額越多優(yōu)惠就越多。標準如下:金額<500元沒有優(yōu)惠500元≤金額<1000元9.5折1000元≤金額<3000元9折3000元≤金額<5000元8.5折金額≥5000元8折設計一個Java程序?qū)崿F(xiàn)該優(yōu)惠標準的計算。分析:由于優(yōu)惠標準中金額不是一個常數(shù),而是一個數(shù)值范圍,所以不能簡單地使用switch語句來實現(xiàn)。分析此問題,不難發(fā)現(xiàn)優(yōu)惠標準的變化是有一定規(guī)律的,即優(yōu)惠的變化點都是500的倍數(shù)。利用上述特點,將購買金額整除以500得到的商只有11個整數(shù)值。那么就可以利用這11個常數(shù),結合switch語句實現(xiàn)該程序。3.2分支語句3.2.2
switch語句publicstaticvoidmain(String[]args){
doublemoney,cutRate=1;
intm;
money=(newScanner(System.in)).nextDouble();//生成一個匿名對象
if(money<0)
m=-1;
elseif(money>=5000)
m=10;//money≥5000時,m為10
else
m=(int)(money/500);//將購買的總金額除以500代碼如下:3
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 辦公樓租賃合同
- 礦內(nèi)機動車輛司機管理制度模版(3篇)
- 地面變電所繼電保護定期整定制度(3篇)
- 小學第五屆體育節(jié)活動方案(3篇)
- 平臺運營總監(jiān)工作職責與工作職模版(3篇)
- 民爆器材倉庫管理制度(3篇)
- 教育統(tǒng)計工作管理制度范文(2篇)
- 養(yǎng)殖場防疫管理制度模版(2篇)
- 安檢機構年度報告制度模版(三篇)
- 農(nóng)民工業(yè)余學校管理制度(4篇)
- 許昌介紹講課稿
- 地質(zhì)災害防治工程預算標準
- 口腔黏膜-2010唇舌疾病
- 用定語從句寫句子 課件-高三英語寫作專項
- 戰(zhàn)略規(guī)劃方法論-業(yè)務領先模型(BLM)理論與實踐-業(yè)務領先模型內(nèi)化與應用課件
- 水利灌漿工程施工講義課件PPT93
- 分監(jiān)區(qū)刑罰執(zhí)行實務課件
- 泛微協(xié)同辦公平臺e-cology9.0版本后臺維護手冊集成
- 灌注樁樁頭破除綜合施工專題方案付
- 加強企業(yè)文化建設、提升企業(yè)創(chuàng)新能力
- 煙霧病護理課件
評論
0/150
提交評論