版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
Java語言概述與編程環(huán)境第1章JAVA語言概述與編程環(huán)境第2章Java語言基礎(chǔ)第3章類與對(duì)象第4章面向?qū)ο蟮?章異常處理第6章常用類與工具類第7章多線程x第8章輸入輸出流第9章JAVAFX圖形用戶界面第10章JDBC了解Java語言的發(fā)展歷史理解Java語言的特點(diǎn)理解Java程序的基本結(jié)構(gòu)掌握下載、安裝、配置JDK的流程掌握創(chuàng)建、編譯、運(yùn)行Java程序的流程能夠使用IDEA或Eclipse開發(fā)Java程序?qū)W習(xí)目標(biāo)Java語言發(fā)展歷程1991年,JamesGosling在Sun公司帶領(lǐng)工作組研究開發(fā)新技術(shù),想要設(shè)計(jì)一種用于消費(fèi)類電子產(chǎn)品的小型計(jì)算機(jī)語言。最初該語言被命名為Oak。隨著互聯(lián)網(wǎng)的發(fā)展,工作組又對(duì)Oak進(jìn)行了改造,開發(fā)了一種能將小程序嵌入網(wǎng)頁中執(zhí)行的技術(shù)—Applet。Sun公司于1995年5月正式以Java的名稱將其發(fā)布,并于1996年1月推出了Java的第一個(gè)開發(fā)工具包(JDK1.0)。1999年6月,Sun公司發(fā)布Java的三大版本,即標(biāo)準(zhǔn)版(JavaSE)、企業(yè)版(JavaEE)、微型版(JavaME)。2009年4月20日,Oracle公司收購Sun公司。2007年11月,Java語言作為服務(wù)器端編程語言,取得了極大的成功;而Android平臺(tái)的流行,則讓Java語言獲得了在客戶端程序上大展拳腳的機(jī)會(huì)。2014年,Java8發(fā)布,該版本是自Java發(fā)布以來改動(dòng)最大的一個(gè)版本,雖然已經(jīng)過去多年,但是Java8依然是目前最流行的開發(fā)版本。截至2022年3月22日,最新的JDK版本為JavaSE18。1.1
Java語言的發(fā)展歷史Java語言的特點(diǎn)簡單性面向?qū)ο蠓植际浇研园踩云脚_(tái)獨(dú)立與可移植性多線程動(dòng)態(tài)性Java語言可以用來編寫桌面應(yīng)用程序、Web應(yīng)用程序、分布式系統(tǒng)和嵌入式系統(tǒng)應(yīng)用程序等。1.2Java語言的特點(diǎn)1.3Java開發(fā)環(huán)境1.3.1下載JDK在Oracle公司的官網(wǎng)中可以免費(fèi)下載JDK,在這里可以下載各個(gè)版本的JavaSE,JDK下載頁面如圖1-1所示。這里我們選擇JavaSE8版本進(jìn)行下載,點(diǎn)擊Download欄中的超鏈接,就可以進(jìn)入JavaSE8的下載頁面,Oracle提供了Linux、MacOS、Solaris、Windows四種操作系統(tǒng)對(duì)應(yīng)版本的下載鏈接,JavaSE8下載頁面如圖所示。在下載JDK前,我們首先應(yīng)查看自己計(jì)算機(jī)的操作系統(tǒng)類型,其次查看操作系統(tǒng)對(duì)應(yīng)的位數(shù),最后選擇合適版本進(jìn)行下載。1.3Java開發(fā)環(huán)境1.3.2JDK的安裝與配置下載完JDK后,在Windows系統(tǒng)下,用戶可雙擊下載的JDK安裝文件啟動(dòng)安裝過程。這時(shí)安裝程序會(huì)詢問用戶要將JDK安裝到哪個(gè)目錄下,一般默認(rèn)安裝在C:\ProgramFiles\Java下。也可指定一個(gè)更簡單的安裝目錄,如C:\JDK8。安裝完畢后,為了在任何目錄下都能運(yùn)行Java工具,需要把安裝目錄加入環(huán)境變量。在Windows10中,右鍵點(diǎn)擊左下角Windows標(biāo)志,然后點(diǎn)擊設(shè)置按鈕,打開設(shè)置界面,在搜索框中輸入“環(huán)境變量”后選擇“編輯系統(tǒng)環(huán)境變量”選項(xiàng)。1.3Java開發(fā)環(huán)境1.3.2JDK的安裝與配置在彈出的“系統(tǒng)屬性”對(duì)話框中點(diǎn)擊“環(huán)境變量”按鈕,會(huì)彈出環(huán)境變量界面。首先在系統(tǒng)變量下方點(diǎn)擊“新建”按鈕,其次在“變量名”欄中輸入“JAVA_HOME”,在“變量值”欄中輸入“C:\JDK8\”(JDK安裝目錄),最后單擊“確定”按鈕。1.3Java開發(fā)環(huán)境1.3.2JDK的安裝與配置接著在“系統(tǒng)變量”列表框中選擇名為PATH的系統(tǒng)變量,單擊“編輯”按鈕,在“編輯環(huán)境變量”窗口中新建一項(xiàng)“%JAVA_HOME%\bin”。1.3Java開發(fā)環(huán)境1.3.2JDK的安裝與配置最后,新建CLASSPATH變量,設(shè)置變量值為“.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar”(注意前面的“.”表示當(dāng)前目錄),然后點(diǎn)擊“確定”按鈕。如圖所示1.3Java開發(fā)環(huán)境完成上述操作后還需要測(cè)試安裝、配置是否成功,打開命令行窗口,在命令行中輸入javac,若顯示如圖的提示信息,則說明JDK配置成功;若未能出現(xiàn)該提示信息,請(qǐng)重啟計(jì)算機(jī)后再嘗試。1.3.3IntelliJIDEA編譯環(huán)境的搭建IntelliJIDEA簡稱IDEA,是由JetBrains公司開發(fā)的Java編程語言開發(fā)集成環(huán)境程序。IntelliJ目前是在全世界使用最廣泛的Java開發(fā)工具之一,尤其在智能代碼助手、代碼自動(dòng)提示、重構(gòu)、JavaEE支持、各類版本工具(git、svn等)、JUnit、CVS整合、代碼分析、創(chuàng)新的GUI設(shè)計(jì)等方面的功能優(yōu)秀。IDEA可以算得上是一款現(xiàn)代化智能開發(fā)工具??稍贘etBrains官方網(wǎng)站上登錄并下載IDEA安裝程序。1.3.3IntelliJIDEA編譯環(huán)境的搭建使用IDEA編寫程序,具體步驟如下。(1)打開IDEA后,首先選擇File→New→Project,顯示NewProject對(duì)話框;其次選擇左側(cè)的Java,此時(shí)右側(cè)的ProjectSDK會(huì)默認(rèn)選擇已經(jīng)安裝的JDK;最后點(diǎn)擊Next按鈕。創(chuàng)建Java工程如圖所示。1.3.3IntelliJIDEA編譯環(huán)境的搭建(2)在“Projectname”欄中輸入本次創(chuàng)建工程的項(xiàng)目名稱,如“HelloWorld”。在“Projectlocation”欄中設(shè)置項(xiàng)目存放的位置,我們選擇“E:\HelloWorld”,然后點(diǎn)擊Finish按鈕后即可創(chuàng)建一個(gè)Java工程。新建項(xiàng)目設(shè)置如圖所示。1.3.4Eclipse編譯環(huán)境的搭建Eclipse也是一個(gè)經(jīng)典的Java開發(fā)工具。下面將介紹Eclipse編譯環(huán)境的搭建??梢栽贓clipse官方網(wǎng)站上登錄并下載Eclipse安裝程序,下載后按照提示進(jìn)行安裝。安裝時(shí)選擇EclipseIDEforJavaDevelopers1.3.4Eclipse編譯環(huán)境的搭建使用Eclipse編寫程序,具體步驟如下。(1)打開Eclipse后,首先需要設(shè)置工作空間(Workspace),建議不要選擇默認(rèn)目錄,這里我們選中E盤下的EclipseWork目錄(E:\EclipseWork),將其設(shè)置為工作空間。Eclipse工作空間選擇如圖所示。1.3.4Eclipse編譯環(huán)境的搭建(2)選擇File→New→JavaProject,打開新建Java工程的對(duì)話框(如圖)1.3.4Eclipse編譯環(huán)境的搭建(3)在“Projectname”欄中輸入本次創(chuàng)建工程的項(xiàng)目名稱,如“FirstJavaTest”,然后點(diǎn)擊Finish按鈕,即可創(chuàng)建一個(gè)Java工程(如圖)。1.4一個(gè)簡單的Java程序現(xiàn)在編寫一個(gè)簡單的Java程序來了解Java程序的基本結(jié)構(gòu)。可以使用任何一個(gè)文本編輯器或者集成開發(fā)環(huán)境來創(chuàng)建、編寫Java源程序文件。這里我們使用記事本新建一個(gè)文件,將其命名為Hello.java,注意文件擴(kuò)展名為.java。例1-1Hello.java1publicclassHello{2publicstaticvoidmain(String[]args){3//Displaystring"HelloWorld"ontheconsole4System.out.println("HelloWorld");5}6}程序運(yùn)行結(jié)果:HelloWorld。1.5編譯和執(zhí)行Java程序1.5.1控制臺(tái)方式如果計(jì)算機(jī)上沒有安裝集成開發(fā)環(huán)境,那么可以使用控制臺(tái)方式編譯和運(yùn)行Java程序。控制臺(tái)也是最原始的Java程序執(zhí)行方式。Java源程序不能直接運(yùn)行,需要把源程序編譯成字節(jié)碼后,才能在計(jì)算機(jī)上運(yùn)行。編譯Java程序的過程如下。首先,進(jìn)入命令行模式,使用cd命令進(jìn)入Java源程序所在目錄。其次,使用javac命令編譯Java源程序,如javacHello.java用于編譯Java源程序文件Hello.java。最后,若編譯過程中沒有錯(cuò)誤,則在編譯結(jié)束后,編譯器會(huì)生成一個(gè)Hello.class的字節(jié)碼文件,該文件的擴(kuò)展名為.class。字節(jié)碼類似于機(jī)器指令,可以在任何安裝Java虛擬機(jī)的平臺(tái)上運(yùn)行。在編譯生成字節(jié)碼后,就可以使用命令來運(yùn)行Java程序了,例如javaHello命令就是執(zhí)行剛剛編譯完成的例1-1中的Hello程序,這時(shí)在控制臺(tái)中會(huì)顯示“HelloWorld”。1.5編譯和執(zhí)行Java程序1.5.2IDE方式在IDEA或者Eclipse集成開發(fā)環(huán)境中新建一個(gè)工程,然后新建一個(gè)Java文件就可以一邊寫代碼,一邊編譯并運(yùn)行調(diào)試運(yùn)行程序。輸入類名稱和相應(yīng)代碼,編寫完程序后點(diǎn)擊工具欄上的按鈕就可以編譯程序了,程序編譯完成后若沒有語法錯(cuò)誤,則點(diǎn)擊按鈕運(yùn)行程序。1.5編譯和執(zhí)行Java程序同理,在Eclipse中創(chuàng)建工程后也需要新建一個(gè)Java類,然后在類中編寫程序。編寫完程序后可以點(diǎn)擊按鈕編譯和運(yùn)行程序。在集成開發(fā)環(huán)境中,可以方便快捷地編譯并運(yùn)行程序。若發(fā)現(xiàn)程序存在錯(cuò)誤,則可以根據(jù)錯(cuò)誤提示及時(shí)改正后再運(yùn)行程序。1.6本章小結(jié)Java語言經(jīng)歷了時(shí)間的考驗(yàn),成為應(yīng)用最廣泛的開發(fā)語言之一。學(xué)習(xí)Java編程語言對(duì)IT知識(shí)的學(xué)習(xí)大有裨益。通過本章的學(xué)習(xí),我們了解了Java語言的發(fā)展歷史及其優(yōu)勢(shì)。知道了如何搭建Java編程環(huán)境,并編寫了第一個(gè)簡單的Java程序,掌握了Java程序基本語法結(jié)構(gòu),為后續(xù)章節(jié)的學(xué)習(xí)打下基礎(chǔ)。第2章Java語言基礎(chǔ)Java中的變量與常量數(shù)組JavaScanner類Java的基本語法Java中的運(yùn)算符Java中的程序流控制了解Java的基本語法格式了解Java中的基本數(shù)據(jù)類型理解Java中的變量與常量理解Java數(shù)據(jù)類型的轉(zhuǎn)換掌握J(rèn)ava中運(yùn)算符、表達(dá)式的使用掌握J(rèn)ava結(jié)構(gòu)語句的使用掌握J(rèn)ava中數(shù)組的創(chuàng)建和使用方法學(xué)習(xí)目標(biāo)在Java程序中,萬事萬物皆對(duì)象,對(duì)象通過調(diào)用彼此的方法來協(xié)同工作。對(duì)象則由類來生成,也就要求任何代碼都必須寫在類中,沒有例外。我們必須首先聲明一個(gè)類,然后才可以在類中加入需要的業(yè)務(wù)代碼,來最終實(shí)現(xiàn)程序的功能。2.1Java的基本語法2.1.1Java的基本語法格式[修飾符]class類名{程序代碼}2.1.1Java的基本語法格式2.1Java的基本語法Java基本語法格式如下:修飾符用于限定類的訪問權(quán)限(可以省略)聲明類,必須使用class關(guān)鍵字類中定義的功能代碼定義的類名稱,通常使用首字母大寫的形式2.1Java的基本語法編寫Java程序代碼時(shí),需要特別注意幾個(gè)關(guān)鍵點(diǎn):Java中的程序可分為結(jié)構(gòu)定義語句和功能執(zhí)行語句。結(jié)構(gòu)定義語句用于聲明一個(gè)類或方法,功能執(zhí)行語句用于實(shí)現(xiàn)具體的功能每條功能執(zhí)行語句的結(jié)尾都必須用英文分號(hào)(;)結(jié)束功能執(zhí)行語句代碼示例:System.out.println("這是第一個(gè)Java程序!");2.1Java的基本語法Java語言是嚴(yán)格區(qū)分大小寫的。在編寫Java代碼時(shí),為了便于閱讀,通常會(huì)使用一種良好的格式進(jìn)行排版。publicclassHelloWorld{publicstaticvoidmain(String[]args) System.out.println("這是第一個(gè)Java程序!");}}2.1Java的基本語法Java程序中一個(gè)連續(xù)的字符串不能直接分開在兩行中書寫。如果為了便于閱讀,想將一個(gè)太長的字符串分開在兩行中書寫,可以先將這個(gè)字符串分成兩個(gè)字符串,然后用加號(hào)(+)將這兩個(gè)字符串拼接起來,在加號(hào)(+)處斷行。System.out.println("這是第一個(gè)"+ "Java程序!");案例演示(參考教材文件HelloWorld.java)2.1Java的基本語法2.1.2Java中的注釋Java注釋有什么作用?作用:在編寫程序時(shí),為了使代碼易于閱讀,通常會(huì)在實(shí)現(xiàn)功能的同時(shí)為代碼添加一些注釋。注釋是對(duì)程序的某個(gè)功能或者某行代碼的解釋說明,它能夠讓開發(fā)者在后期閱讀和使用代碼時(shí)能更容易理解代碼的作用。說明:注釋只在Java源文件中有效,在編譯程序時(shí)編譯器會(huì)忽略這些注釋信息,不會(huì)將其編譯到class字節(jié)碼文件中。2.1Java的基本語法單行注釋單行注釋通常用于對(duì)程序中的某一行代碼進(jìn)行解釋,用符號(hào)“//”表示,“//”后面為被注釋的內(nèi)容。2.1.2Java中的注釋——注釋類型intc=10;//定義一個(gè)整型變量c2.1Java的基本語法多行注釋多行注釋顧名思義就是可以同時(shí)為多行內(nèi)容進(jìn)行統(tǒng)一注釋,它以符號(hào)“/*”開頭,并以符號(hào)“*/”結(jié)尾。/*定義一個(gè)整形變量x將5賦值給變量x*/intx;x=5; 2.1Java的基本語法文檔注釋文檔注釋通常是對(duì)程序中某個(gè)類或類中的方法進(jìn)行的系統(tǒng)性的解釋說明,開發(fā)人員可以使用JDK提供的javadoc工具將文檔注釋提取出來生成一份API幫助文檔。文檔注釋以符號(hào)“/**”開頭,并以符號(hào)“*/”結(jié)尾。/***Title:HelloWorld類*@authorsrx*@version1.0 */publicclassHelloWorld{ /** *這是一個(gè)main()方法入口 *@paramargs參數(shù)名 */ publicstaticvoidmain(String[]args){ System.out.println("這是第一個(gè)Java程序!"); }}2.1Java的基本語法abstractassertbooleanbreakbytecasecatchcharclassconstcontinuedefaultdodoubleelseenumextendsfinalfinallyfloatforgotoifimplementsimportinstanceofintinterfacelongnativenewpackageprivateprotectedpublicreturnstrictfpshortstaticsuperswitchsynchronizedthisthrowthrowstransienttryvoidvolatilewhile2.1.3Java中的關(guān)鍵字關(guān)鍵字(Keyword)是編程語言里事先定義好并賦予了特殊含義的單詞,也稱作保留字。JDK8中有50個(gè)關(guān)鍵字,這些關(guān)鍵字都是小寫的。2.1Java的基本語法2.1.4Java中的標(biāo)識(shí)符定義:在編程過程中,經(jīng)常需要在程序中定義一些符號(hào)來標(biāo)記一些名稱,如包名、類名、方法名、參數(shù)名、變量名等,這些符號(hào)被稱為標(biāo)識(shí)符。組成:標(biāo)識(shí)符可以由任意順序的大小寫字母、數(shù)字、下劃線(_)和美元符號(hào)($)組成,但標(biāo)識(shí)符不能以數(shù)字開頭,也不能是Java中的關(guān)鍵字。2.1Java的基本語法2.1.4Java中的標(biāo)識(shí)符合法標(biāo)識(shí)符示例:usernameusername123user_name_userName$username非法標(biāo)識(shí)符示例:123username //不能以數(shù)字開頭class //不能是關(guān)鍵字HelloWorld //不能包含空格特殊字符2.1Java的基本語法包名所有字母一律小寫。例如:com.itheima.example01。類名和接口名每個(gè)單詞的首字母都要大寫。例如:ArrayList、Iterator。常量名所有字母都大寫,單詞之間用下劃線連接。例如:DAY_OF_MONTH。變量名和方法名的第一個(gè)單詞首字母小寫,從第二個(gè)單詞開始每個(gè)單詞首字母大寫。例如:lineNumber、getLineNumber。在程序中,應(yīng)該盡量使用有意義的英文單詞來定義標(biāo)識(shí)符,使得程序便于閱讀。例如:使用userName表示用戶名,password表示密碼。2.1.4Java中的標(biāo)識(shí)符——通用規(guī)范2.2Java中的變量與常量2.2.1變量概述什么是變量?變量是一個(gè)內(nèi)存中的小盒子(小容器),容器大家都很熟悉,用來裝載物件。所以變量就是用于裝載的容器,那么變量裝載什么呢?很明顯是數(shù)據(jù)。因此變量是內(nèi)存中裝載數(shù)據(jù)的內(nèi)存單元,只可以用它來存取數(shù)據(jù)。2.2Java中的變量與常量定義:在程序運(yùn)行期間,隨時(shí)可能產(chǎn)生一些臨時(shí)數(shù)據(jù),應(yīng)用程序會(huì)將這些數(shù)據(jù)保存在一些內(nèi)存單元中,每個(gè)內(nèi)存單元都用一個(gè)標(biāo)識(shí)符來標(biāo)識(shí)。這些內(nèi)存單元我們稱之為變量,定義的標(biāo)識(shí)符就是變量名,內(nèi)存單元中存儲(chǔ)的數(shù)據(jù)就是變量的值。2.2.2變量的定義變量類型變量名[=初始值];2.2Java中的變量與常量變量的基本語法格式如下:變量類型決定了變量的數(shù)據(jù)性質(zhì)、范圍、存儲(chǔ)在內(nèi)存中所占的字節(jié)數(shù)以及可以進(jìn)行的合法操作變量名必須是一個(gè)合法的標(biāo)識(shí)符[]中的內(nèi)容是可選項(xiàng),即在定義變量的同時(shí),可以對(duì)該變量進(jìn)行初始化賦值2.2Java中的變量與常量說明:上述代碼中,第一行代碼的作用是定義了兩個(gè)int類型的變量x和y,也就相當(dāng)于分配了兩塊內(nèi)存單元,在定義變量的同時(shí)為變量x分配了一個(gè)初始值0,而變量y沒有分配初始值。變量的定義示例:intx=0,y;y=x+3;2.2Java中的變量與常量y=x+3;變量x和y在內(nèi)存中的狀態(tài)變化圖:2.2Java中的變量與常量注注定義:常量就是在程序中固定不變的值,是不能改變的數(shù)據(jù)。例如數(shù)字1、字符'a'、浮點(diǎn)數(shù)3.2等。分類:在Java中,常量包括整型常量、浮點(diǎn)數(shù)常量、布爾常量、字符常量等。2.2.3常量2.2Java中的變量與常量注注定義:Java中的常量,其實(shí)就是特殊的變量,也是固定不變的量,有且只能進(jìn)行一次賦值。語法:Java中定義常量的語法也非常簡單,只需要在定義變量的語法基礎(chǔ)上加上一個(gè)final關(guān)鍵字修飾即可。Java中的常量2.2Java中的變量與常量注注Java中的常量的語法格式:Java中的常量
final常量類型常量名[=初始值];Java中的常量的使用示例:
finalinta=0,b;//定義一個(gè)int類型的常量a和b,并為常量a初始化賦值0b=1; //后續(xù)為常量b賦值2.2Java中的變量與常量Java是一門強(qiáng)類型的編程語言,它對(duì)變量和常量的數(shù)據(jù)類型有嚴(yán)格的限定。在定義時(shí)必須先聲明變量的數(shù)據(jù)類型,在為變量和常量賦值時(shí)必須賦予與其同一種類型的值,否則程序在編譯期間就會(huì)出現(xiàn)類型匹配錯(cuò)誤的問題。2.2.4數(shù)據(jù)類型2.2Java中的變量與常量在Java中變量的數(shù)據(jù)類型分為兩種:基本數(shù)據(jù)類型和引用數(shù)據(jù)類型。2.2Java中的變量與常量整數(shù)類型變量整數(shù)類型變量用來存儲(chǔ)整數(shù)數(shù)值,即沒有小數(shù)部分的值。類型名占用空間取值范圍byte8位(1個(gè)字節(jié))-27~27-1short16位(2個(gè)字節(jié))-215~215-1int32位(4個(gè)字節(jié))-231~231-1long64位(8個(gè)字節(jié))-263~263-12.2Java中的變量與常量注意:在為一個(gè)long類型的變量賦值時(shí),所賦值的后面要加上一個(gè)字母“L”(或小寫“l(fā)”),說明賦值為long類型。如果賦的值未超出int型的取值范圍,則可以省略字母“L”(或小寫“l(fā)”)。longnum=2200000000L;//所賦的值超出了int型的取值范圍,后面必須加上字母Llongnum=198L;//所賦的值未超出int型的取值范圍,后面可以加上字母Llongnum=198;//所賦的值未超出int型的取值范圍,后面可以省略字母L2.2Java中的變量與常量注注整型常量是整數(shù)類型的數(shù)據(jù),有二進(jìn)制、八進(jìn)制、十進(jìn)制和十六進(jìn)制4種。二進(jìn)制:由數(shù)字0和1組成的數(shù)字序列。在JDK7以后,允許使用二進(jìn)制字面值來表示整數(shù),此時(shí)二進(jìn)制數(shù)值前面要以0b或0B開頭,目的是為了和十進(jìn)制進(jìn)行區(qū)分,如:0b01101100、0B10110101。八進(jìn)制:以0開頭,并且其后由0~7范圍(包括0和7)內(nèi)的整數(shù)組成的數(shù)字序列,如:0342。十進(jìn)制:由數(shù)字0~9范圍(包括0和9)內(nèi)的整數(shù)組成的數(shù)字序列。如:198。十六進(jìn)制:以0x或者0X開頭,并且其后由0~9、A~F(包括0和9、A和F)組成的字符序列,如:0x25AF。整型常量2.2Java中的變量與常量浮點(diǎn)數(shù)類型變量用來存儲(chǔ)小數(shù)數(shù)值。浮點(diǎn)數(shù)類型變量類型名占用空間取值范圍float32位(4個(gè)字節(jié))1.4E-45~3.4E+38,-1.4E-45~-3.4E+38double64位(8個(gè)字節(jié))4.9E-324~1.7E+308,-4.9E-324~-1.7E+3082.2Java中的變量與常量注意:一個(gè)小數(shù)會(huì)被默認(rèn)為double類型的值,因此在為一個(gè)float類型的變量賦值時(shí),所賦值的后面一定要加上字母“F”(或者小寫“f”),而為double類型的變量賦值時(shí),可以在所賦值的后面加上字符“D”(或小寫“d”),也可以不加。在程序中也可以為一個(gè)浮點(diǎn)數(shù)類型變量賦予一個(gè)整數(shù)數(shù)值:floatf=123.4f;//為一個(gè)float類型的變量賦值,后面必須加上字母f或Fdoubled1=199.3d;//為一個(gè)double類型的變量賦值,后面可以加上字母d或Ddoubled2=100.1;//為一個(gè)double類型的變量賦值,后面可以省略字母d或Dfloatf=100; //聲明一個(gè)float類型的變量并賦整數(shù)值doubled=100;//聲明一個(gè)double類型的變量并賦整數(shù)值2.2Java中的變量與常量注注浮點(diǎn)數(shù)常量就是在數(shù)學(xué)中用到的小數(shù),分為float單精度浮點(diǎn)數(shù)和double雙精度浮點(diǎn)數(shù)兩種類型。注意:單精度浮點(diǎn)數(shù)后面以F或f結(jié)尾,而雙精度浮點(diǎn)數(shù)則以D或d結(jié)尾。當(dāng)然,在使用浮點(diǎn)數(shù)時(shí)也可以在結(jié)尾處不加任何后綴,此時(shí)Java虛擬機(jī)會(huì)將浮點(diǎn)數(shù)默認(rèn)識(shí)別為double雙精度浮點(diǎn)數(shù)。浮點(diǎn)數(shù)常量
2e3f3.6d0f3.84d5.022e+23f2.2Java中的變量與常量字符類型變量字符類型變量用于存儲(chǔ)一個(gè)單一字符,在Java中用char表示。Java中每個(gè)char類型的字符變量都會(huì)占用2個(gè)字節(jié)。在給char類型的變量賦值時(shí),需要用一對(duì)英文半角格式的單引號(hào)('')把字符括起來,如'a',也可以將char類型的變量賦值為0~65535范圍內(nèi)的整數(shù),計(jì)算機(jī)會(huì)自動(dòng)將這些整數(shù)轉(zhuǎn)化為所對(duì)應(yīng)的字符,如數(shù)值97對(duì)應(yīng)的字符為'a'。charc='a';//為一個(gè)char類型的變量賦值字符'a'charch=97;//為一個(gè)char類型的變量賦值整數(shù)97,相當(dāng)于賦值字符'a'2.2Java中的變量與常量注注字符常量用于表示一個(gè)字符,一個(gè)字符常量要用一對(duì)英文半角格式的單引號(hào)('')引起來,它可以是英文字母、數(shù)字、標(biāo)點(diǎn)符號(hào)以及由轉(zhuǎn)義序列來表示的特殊字符。字符常量
'a''1''&''\r'2.2Java中的變量與常量轉(zhuǎn)義符——反斜杠(\)定義:在字符常量中,反斜杠(\)是一個(gè)特殊的字符,被稱為轉(zhuǎn)義符,它的作用是用來轉(zhuǎn)義緊隨其后的一個(gè)字符。說明:轉(zhuǎn)義后的字符通常用于表示一個(gè)不可見的字符或具有特殊含義的字符,例如“\n”表示換行。2.2Java中的變量與常量轉(zhuǎn)義符——反斜杠(\)常見轉(zhuǎn)義字符:\r:表示回車,將光標(biāo)定位到當(dāng)前行的開頭,不會(huì)跳到下一行。\n:表示換行,換到下一行的開頭。\t:表示制表符,將光標(biāo)移到下一個(gè)制表符的位置,就像在文檔中用Tab鍵一樣。\b:表示退格符號(hào),就像鍵盤上的Backspace。\‘:表示單引號(hào)字符,表示字符的開始和結(jié)束,\“:表示雙引號(hào)字符,表示字符串的開始和結(jié)束、\\:表示反斜杠轉(zhuǎn)義字符,由于在Java代碼中的斜杠(\)是轉(zhuǎn)義符,2.2Java中的變量與常量布爾類型變量用來存儲(chǔ)布爾值,在Java中用boolean表示,該類型的變量只有兩個(gè)值,即true和false。布爾類型變量booleanflag=false;//聲明一個(gè)boolean類型的變量,初始值為falseflag=true; //改變flag變量的值為true布爾常量即布爾類型的兩個(gè)值true和false,該常量用于區(qū)分一個(gè)條件的真假。布爾常量2.2Java中的變量與常量引用類型Java的第二種類型是引用類型,包括類、接口和數(shù)組。引用類型和基本類型不同,基本類型的變量保存的是具體的值,而引用類型變量的值則是某個(gè)內(nèi)存空間的地址值,此內(nèi)存空間中保存著一個(gè)具體的值,引用類型變量通過保存的地址值間接訪問內(nèi)存空間.案例演示(參考教材文件PrimitiveTypeTest.java)2.2Java中的變量與常量注注定義:變量需要在它的作用范圍內(nèi)才可以被使用,這個(gè)作用范圍稱為變量的作用域。2.2.5變量的作用域Java中的作用域用一對(duì)大括號(hào)來表示,大括號(hào)對(duì)連同其內(nèi)的代碼形成一個(gè)語句塊,語句塊允許嵌套,如此就會(huì)在程序中形成非常復(fù)雜的多個(gè)嵌套作用域,為正確使用變量,我們就必須弄清每一個(gè)變量所處的作用域范圍。變量按照作用域可以劃分為:類變量:獨(dú)立于方法之外的變量,用static修飾,該類變量在類加載時(shí)創(chuàng)建并且只要所屬的類存在,該變量就一直存在。實(shí)例變量:獨(dú)立于方法之外的變量,不過沒有static修飾,在調(diào)用構(gòu)造方法時(shí)創(chuàng)建,只要有引用指向變量所屬的對(duì)象,該變量就將存在。局部變量:類的方法中的變量,當(dāng)程序執(zhí)行流進(jìn)入方法時(shí)創(chuàng)建,在方法退出時(shí)消亡,也稱自動(dòng)變量或臨時(shí)變量。在大括號(hào)內(nèi)定義的局部變量,只有在該對(duì)大括號(hào)內(nèi)方可使用,包括在所嵌套的語句塊內(nèi)也可用,一旦出了大括號(hào)對(duì)就從內(nèi)存中消失,案例演示(參考教材文件Variable.java)2.2Java中的變量與常量2.2.6變量的初始化當(dāng)創(chuàng)建一個(gè)對(duì)象時(shí),對(duì)象所包含的數(shù)據(jù)會(huì)根據(jù)數(shù)據(jù)類型由系統(tǒng)自動(dòng)賦予默認(rèn)值,默認(rèn)值表如下所示,相當(dāng)于自動(dòng)為變量賦予不同意思上的“0”值。而局部變量則不會(huì),必須在使用前手工賦初值進(jìn)行初始化。數(shù)據(jù)類型默認(rèn)值byte0short0int0long0Lfloat0.0fdouble0.0dchar'\u0000'String(oranyobject)nullbooleanfalse案例演示(參考教材文件DefaultTest.java)2.2Java中的變量與常量說明:在程序中,當(dāng)把一種數(shù)據(jù)類型的值賦給另一種數(shù)據(jù)類型的變量時(shí),需要進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換。分類:根據(jù)轉(zhuǎn)換方式的不同,數(shù)據(jù)類型轉(zhuǎn)換可分為兩種:自動(dòng)類型轉(zhuǎn)換和強(qiáng)制類型轉(zhuǎn)換。2.2.7變量的類型轉(zhuǎn)換2.2Java中的變量與常量自動(dòng)類型轉(zhuǎn)換也叫隱式類型轉(zhuǎn)換,指的是兩種數(shù)據(jù)類型在轉(zhuǎn)換的過程中不需要顯式地進(jìn)行聲明。當(dāng)把一個(gè)類型取值范圍小的數(shù)值直接賦給另一個(gè)取值范圍大的數(shù)據(jù)類型變量時(shí),系統(tǒng)就會(huì)進(jìn)行自動(dòng)類型轉(zhuǎn)換。自動(dòng)類型轉(zhuǎn)換2.2Java中的變量與常量Java中支持的不同數(shù)據(jù)類型之間的自動(dòng)轉(zhuǎn)換,如下圖所示。byteb=3;intx=b;//程序把byte類型的變量b轉(zhuǎn)換成了int類型,無需特殊聲明doubley=x;//將int類型的變量x轉(zhuǎn)換成double類型,無需特殊聲明案例演示(參考教材文件AutoTransform.java)2.2Java中的變量與常量強(qiáng)制類型轉(zhuǎn)換也叫顯式類型轉(zhuǎn)換,指的是兩種數(shù)據(jù)類型之間的轉(zhuǎn)換需要進(jìn)行顯式地聲明。當(dāng)兩種類型彼此不兼容,或者目標(biāo)類型取值范圍小于源類型時(shí),自動(dòng)類型轉(zhuǎn)換無法進(jìn)行,這時(shí)就需要進(jìn)行強(qiáng)制類型轉(zhuǎn)換。強(qiáng)制類型轉(zhuǎn)換2.2Java中的變量與常量強(qiáng)制類型轉(zhuǎn)換語法格式:目標(biāo)類型變量名=(目標(biāo)類型)值;注意:在對(duì)變量進(jìn)行強(qiáng)制類型轉(zhuǎn)換時(shí),會(huì)發(fā)生取值范圍較大的數(shù)據(jù)類型向取值范圍較小的數(shù)據(jù)類型的轉(zhuǎn)換情況,如將一個(gè)int類型的數(shù)轉(zhuǎn)為byte類型,這樣做極容易造成數(shù)據(jù)精度的丟失。案例演示(參考教材文件ForcedTransform.java)2.3Java中的運(yùn)算符、表達(dá)式和語句所謂運(yùn)算符就是專門用于告訴程序執(zhí)行特定運(yùn)算或邏輯操作的符號(hào)。賦值運(yùn)算符位運(yùn)算符條件運(yùn)算符比較運(yùn)算符邏輯運(yùn)算符算術(shù)運(yùn)算符什么是運(yùn)算符?算術(shù)運(yùn)算符:Java中的算術(shù)運(yùn)算符就是用來處理四則運(yùn)算的符號(hào)。也是最簡單和最常用的運(yùn)算符號(hào)。2.3.1算術(shù)運(yùn)算符2.3Java中的運(yùn)算符、表達(dá)式和語句運(yùn)算符運(yùn)算范例結(jié)果+正號(hào)+33-負(fù)號(hào)b=4;-b;-4+加5+510-減6-42*乘3*412/除(即算數(shù)中整除的結(jié)果)7/51%取模(即算術(shù)中的求余數(shù))7%52++自增(前)a=2;b=++a;a=3;b=3;++自增(后)a=2;b=a++;a=3;b=2;--自減(前)a=2;b=--a;a=1;b=1;--自減(后)a=2;b=a--;a=1;b=2;算術(shù)運(yùn)算符分類說明:2.3Java中的運(yùn)算符、表達(dá)式和語句注意事項(xiàng):在進(jìn)行自增(++)和自減(--)的運(yùn)算時(shí),如果運(yùn)算符(++或--)放在操作數(shù)的前面則是先進(jìn)行自增或自減運(yùn)算,再進(jìn)行其他運(yùn)算。反之,如果運(yùn)算符放在操作數(shù)的后面則是先進(jìn)行其他運(yùn)算再進(jìn)行自增或自減運(yùn)算。在進(jìn)行除法運(yùn)算時(shí),當(dāng)除數(shù)和被除數(shù)都為整數(shù)時(shí),得到的結(jié)果也是一個(gè)整數(shù);如果除法運(yùn)算有小數(shù)參與,得到的結(jié)果會(huì)是一個(gè)小數(shù)。在進(jìn)行取模(%)運(yùn)算時(shí),運(yùn)算結(jié)果的正負(fù)取決于被模數(shù)(%左邊的數(shù))的符號(hào),與模數(shù)(%右邊的數(shù))的符號(hào)無關(guān)。2.3Java中的運(yùn)算符、表達(dá)式和語句關(guān)系運(yùn)算符:用來對(duì)兩個(gè)數(shù)值或變量進(jìn)行比較。其結(jié)果是布爾類型的true或false。2.3.2關(guān)系運(yùn)算符2.3Java中的運(yùn)算符、表達(dá)式和語句運(yùn)算符運(yùn)算范例結(jié)果==相等于4==3false!=不等于4!=3true<
小于4<3false>
大于4>3true<=小于等于4<=3false>=大于等于4>=3true關(guān)系運(yùn)算符分類說明:2.3Java中的運(yùn)算符、表達(dá)式和語句邏輯運(yùn)算符:是用于對(duì)布爾類型的值或表達(dá)式進(jìn)行操邏輯判斷的符號(hào)。其返回值類型是布爾類型。2.3.3邏輯運(yùn)算符2.3Java中的運(yùn)算符、表達(dá)式和語句邏輯運(yùn)算符分類說明:運(yùn)算符運(yùn)算范例結(jié)果&與a&ba和b都為true,結(jié)果為true,否則為false|或a|ba和b中只要有一個(gè)為true,則結(jié)果為true,否則為false^異或A^ba與b不同,結(jié)果為true,否則為false!非!A若a為false,結(jié)果為true,否則相反&&短路與a&&ba和b都為true,結(jié)果為true,否則為false||短路或a||ba和b中只要有一個(gè)為true,則結(jié)果為true,否則為false2.3Java中的運(yùn)算符、表達(dá)式和語句注意事項(xiàng):邏輯運(yùn)算符可以針對(duì)結(jié)果為布爾值的表達(dá)式進(jìn)行邏輯運(yùn)算。如:5>3&&1!=0的結(jié)果為true。運(yùn)算符“&”和“&&”都表示與操作,當(dāng)且僅當(dāng)運(yùn)算符兩邊的操作數(shù)都為true時(shí),其結(jié)果才為true,否則結(jié)果為false。“&”和“&&”的區(qū)別:在使用“&”進(jìn)行運(yùn)算時(shí),不論左邊為true或者false,右邊的表達(dá)式都會(huì)進(jìn)行運(yùn)算。如果使用“&&”進(jìn)行運(yùn)算,當(dāng)左邊為false時(shí),右邊的表達(dá)式不會(huì)進(jìn)行運(yùn)算,因此“&&”被稱作短路與。2.3Java中的運(yùn)算符、表達(dá)式和語句運(yùn)算符“|”和“||”都表示或操作,當(dāng)運(yùn)算符任何一邊的操作數(shù)或表達(dá)式為true時(shí),其結(jié)果為true,當(dāng)兩邊的值都為false時(shí),其結(jié)果才為false。同與操作類似,“||”表示短路或,當(dāng)運(yùn)算符“||”的左邊為true時(shí),右邊的表達(dá)式不會(huì)進(jìn)行運(yùn)算。運(yùn)算符“^”表示異或操作,當(dāng)運(yùn)算符兩邊的布爾值相同時(shí)(都為true或都為false),其結(jié)果為false。當(dāng)兩邊布爾值不相同時(shí),其結(jié)果為true。注意事項(xiàng):2.3Java中的運(yùn)算符、表達(dá)式和語句位運(yùn)算符:是針對(duì)二進(jìn)制數(shù)的每一位進(jìn)行運(yùn)算的符號(hào)。它專門針對(duì)數(shù)字0和1進(jìn)行操作。2.3.4位運(yùn)算符2.3Java中的運(yùn)算符、表達(dá)式和語句運(yùn)算符運(yùn)算范例結(jié)果&按位與a&ba和b每一位進(jìn)行“與”操作后的結(jié)果|按位或a|ba和b每一位進(jìn)行“或”操作后的結(jié)果~取反~aa的每一位進(jìn)行“非”操作后的結(jié)果^按位異或a^ba和b每一位進(jìn)行“異或”操作后的結(jié)果<<
左移a<<b將a左移b位,右邊空位用0填充>>
右移a>>b將a右移b位,丟棄被移出位,左邊最高位用0或1填充>>>
無符號(hào)右移a>>>b將a右移b位,丟棄被移出位,左邊最高位用0填充說明:位運(yùn)算符本質(zhì)都是針對(duì)二進(jìn)制數(shù)0和1進(jìn)行運(yùn)算的,在使用位運(yùn)算符時(shí),都會(huì)先將操作數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)的形式進(jìn)行位運(yùn)算,然后將得到的結(jié)果再轉(zhuǎn)換成想要的進(jìn)制數(shù)。其中,1表示true,0表示false。位運(yùn)算符分類說明:2.3Java中的運(yùn)算符、表達(dá)式和語句按位與按位或針對(duì)byte類型的數(shù),也就是一個(gè)字節(jié)大小的數(shù)進(jìn)行演示:2.3.4位運(yùn)算符——演示說明2.3Java中的運(yùn)算符、表達(dá)式和語句取反按位異或2.3.4位運(yùn)算符——演示說明2.3Java中的運(yùn)算符、表達(dá)式和語句左移右移2.3.4位運(yùn)算符——演示說明2.3Java中的運(yùn)算符、表達(dá)式和語句無符號(hào)右移2.3.4位運(yùn)算符——演示說明2.3Java中的運(yùn)算符、表達(dá)式和語句案例演示(參考教材文件BitTest.java)賦值運(yùn)算符:賦值運(yùn)算符的作用就是將常量、變量或表達(dá)式的值賦給某一個(gè)變量。它將運(yùn)算符右邊的值賦給左邊的變量。2.3.5賦值運(yùn)算符2.3Java中的運(yùn)算符、表達(dá)式和語句運(yùn)算符運(yùn)算范例結(jié)果=賦值a=3;b=2;a=3;b=2;+=加等于a=3;b=2;a+=b;a=5;b=2;-=減等于a=3;b=2;a-=b;a=1;b=2;*=乘等于a=3;b=2;a*=b;a=6;b=2;/=除等于a=3;b=2;a/=b;a=1;b=2;%=模等于a=3;b=2;a%=b;a=1;b=2;賦值運(yùn)算符分類說明:2.3Java中的運(yùn)算符、表達(dá)式和語句注意事項(xiàng):在Java中可以通過一條賦值語句對(duì)多個(gè)變量進(jìn)行賦值。在賦值運(yùn)算符中,除了“=”,其他的都是特殊的賦值運(yùn)算符,以“+=”為例,x+=3就相當(dāng)于x=x+3,首先會(huì)進(jìn)行加法運(yùn)算x+3,再將運(yùn)算結(jié)果賦值給變量x。其余的-=、*=、/=、%=賦值運(yùn)算符都可依此類推。2.3Java中的運(yùn)算符、表達(dá)式和語句[]運(yùn)算符:可以用于聲明、創(chuàng)建數(shù)組,并通過下標(biāo)來訪問某一數(shù)組元素。點(diǎn)運(yùn)算符:用于訪問對(duì)象實(shí)例的成員變量和方法。()運(yùn)算符:置于方法名之后,用于表示一個(gè)方法調(diào)用。(type)運(yùn)算符:將其他類型的值轉(zhuǎn)換位type類型。new運(yùn)算符:用于創(chuàng)建一個(gè)新對(duì)象或新數(shù)組,并分配儲(chǔ)存空間。instanceof運(yùn)算符:測(cè)試第一個(gè)操作對(duì)象是否是第二個(gè)操作對(duì)象的實(shí)例2.3.6其他運(yùn)算符2.3Java中的運(yùn)算符、表達(dá)式和語句運(yùn)算符的優(yōu)先級(jí):指的是在表達(dá)式中各個(gè)運(yùn)算符參與運(yùn)算的先后順序例如:先乘除,后加減2.3.7運(yùn)算符的優(yōu)先級(jí)2.3Java中的運(yùn)算符、表達(dá)式和語句優(yōu)先級(jí)運(yùn)算符1.[]()2++--~!3*/%4+-5<<>>>>>6<><=>=7==!=8&9^10|11&&12||13?:14=*=/=%=+=-=<<=>>=>>>=&=^=|=2.3.7運(yùn)算符的優(yōu)先級(jí)——優(yōu)先級(jí)列表小括號(hào)的用法與數(shù)學(xué)中的小括號(hào)用法相同:括號(hào)內(nèi)的先進(jìn)行運(yùn)算。2.3Java中的運(yùn)算符、表達(dá)式和語句語句是一個(gè)執(zhí)行程序的基本單元,類似于自然語言中的句子。以;為終結(jié)符,可以分為以下4類:表達(dá)式語句:由一個(gè)表達(dá)式構(gòu)成,在一個(gè)表達(dá)式后用分號(hào)結(jié)尾就可以構(gòu)成??照Z句:一個(gè)分號(hào)組成的語句,不做任何事情。復(fù)合語句:用{}將多條語句包括起來的語句塊。控制語句:用于控制程序執(zhí)行流程的語句。2.3Java中的運(yùn)算符、表達(dá)式和語句2.3.8語句程序設(shè)計(jì)遵循結(jié)構(gòu)化程序設(shè)計(jì)的思想,由三種基本結(jié)構(gòu)組成:順序結(jié)構(gòu)、分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu),每種結(jié)構(gòu)都是單入口和單出口,任何程序都由這3種基本結(jié)構(gòu)組合而成。順序結(jié)構(gòu)是程序按照線性順序依次執(zhí)行的結(jié)構(gòu)。其中的語句按照書寫順序一條條執(zhí)行,是默認(rèn)的順序,不需要額外的控制。分支結(jié)構(gòu)則由程序根據(jù)條件判斷結(jié)果從多條執(zhí)行路徑中選擇一條予以執(zhí)行,由分支條件控制。循環(huán)結(jié)構(gòu)則是程序根據(jù)條件判斷結(jié)果向后反復(fù)執(zhí)行一段代碼,由循環(huán)條件控制執(zhí)行。程序的三種基本結(jié)構(gòu)2.3Java中的運(yùn)算符、表達(dá)式和語句2.4程序流控制在實(shí)際生活中經(jīng)常需要作出一些判斷,比如開車來到一個(gè)十字路口,這時(shí)需要對(duì)紅綠燈進(jìn)行判斷,如果前面是紅燈,就停車等候,如果是綠燈,就通行。Java中有一種特殊的語句叫做選擇結(jié)構(gòu)語句,它也需要對(duì)一些條件作出判斷,從而決定執(zhí)行哪一段代碼。Java中的選擇結(jié)構(gòu)語句分為:if條件語句和switch條件語句。2.4程序流控制If語句if語句是指如果滿足某種條件,就進(jìn)行某種處理。If條件語句分類:if…else語句if…else語句是指如果滿足某種條件,就進(jìn)行某種處理,否則就進(jìn)行另一種處理。if…elseif…else語句if…elseif…else語句用于對(duì)多個(gè)條件進(jìn)行分支判斷,從而進(jìn)行多種不同的處理。2.4.1if條件語句2.4程序流控制例如,如果一個(gè)人的年齡不滿18周歲,那么就可以判定這個(gè)人是未成年人。這句話可以通過下面的一段偽代碼來描述:“如果”相當(dāng)于if,“年齡不滿18周歲”是判斷條件,“此人是未成年人!”是執(zhí)行語句if語句如果年齡不滿18周歲 此人是未成年人
if(年齡不滿18歲){
此人是未成年人!}2.4程序流控制
if(判斷條件){
執(zhí)行語句}if語句語法格式:if語句執(zhí)行流程:2.4程序流控制例如,要判斷一個(gè)正整數(shù)的奇偶,如果該數(shù)字能被2整除則是一個(gè)偶數(shù),否則該數(shù)字就是一個(gè)奇數(shù),就可以使用if...else語句。if...else語句
if(判斷條件){
執(zhí)行語句1 ...}else{
執(zhí)行語句2 ...}if...else語句語法格式:2.4程序流控制if...else語句的執(zhí)行流程:2.4程序流控制小提示if...else語句還可以與一個(gè)新的條件運(yùn)算符“?:”進(jìn)行替換。if(num%2==0){//判斷條件成立,num能被2整除System.out.println(num+"是一個(gè)偶數(shù)");}else{//判斷條件不成立,num不能被2整除System.out.println(num+"是一個(gè)奇數(shù)");}
System.out.println(num%2==0?num+"是一個(gè)偶數(shù)":num+"是一個(gè)奇數(shù)");
}2.4程序流控制例如,對(duì)一個(gè)學(xué)生的考試成績進(jìn)行等級(jí)劃分:如果分?jǐn)?shù)大于80分,那么等級(jí)為優(yōu);否則,如果分?jǐn)?shù)大于70分,那么等級(jí)為良;否則,如果分?jǐn)?shù)大于60分,那么等級(jí)為中;否則,等級(jí)為差,就可以使用if...elseif...else語句。if...elseif...else語句
if(判斷條件1){
執(zhí)行語句1}elseif(判斷條件2){
執(zhí)行語句2}...elseif(判斷條件n){
執(zhí)行語句n}else{
執(zhí)行語句n+1}if...elseif...else語句語法格式:2.4程序流控制案例演示(參考教材文件IfTest.java)if...else...else語句的執(zhí)行流程:2.4程序流控制定義:switch條件語句也是一種很常用的選擇結(jié)構(gòu)語句,它由一個(gè)switch控制表達(dá)式和多個(gè)case關(guān)鍵字組成。說明:與if條件語句不同的是,switch條件語句的控制表達(dá)式結(jié)果類型只能是byte、short、char、int、enum枚舉以及String類型,而不能是boolean類型。switch條件語句2.42.4程序流控制switch語句語法格式:switch(控制表達(dá)式){case目標(biāo)值1:執(zhí)行語句1break;case目標(biāo)值2:
執(zhí)行語句2 break;
...
case目標(biāo)值n:
執(zhí)行語句n break;default:
執(zhí)行語句n+1 break;}2.4程序流控制規(guī)則:switch語句將控制表達(dá)式的值與每個(gè)case中的目標(biāo)值進(jìn)行匹配,如果找到了匹配的值,會(huì)執(zhí)行對(duì)應(yīng)case后的執(zhí)行語句,并通過break關(guān)鍵字跳出該switch語句;如果搜索完所有case中的目標(biāo)值仍沒找到任何匹配的值,就會(huì)執(zhí)行default后的語句。2.4程序流控制案例演示(參考教材文件SwitchTest.java)注意在使用switch條件語句時(shí),需要特別注意:第一,switch條件語句后{}中的多個(gè)case以及default標(biāo)簽順序可以隨機(jī),并不影響程序的執(zhí)行結(jié)果;第二,在case和default標(biāo)簽中的執(zhí)行語句后務(wù)必都加上break關(guān)鍵字,用于執(zhí)行完語句后跳出當(dāng)前的switch條件語句,否則,程序會(huì)接著執(zhí)行后續(xù)的執(zhí)行語句,直到遇到break關(guān)鍵字或switch語句末尾為止。2.4程序流控制在實(shí)際生活中經(jīng)常會(huì)將同一件事情重復(fù)做很多次,例如在做眼保健操的第四節(jié)輪刮眼眶時(shí),會(huì)重復(fù)刮眼眶的動(dòng)作;打乒乓球時(shí),會(huì)重復(fù)揮拍的動(dòng)作等。在Java中有一種特殊的語句叫做循環(huán)語句,它可以實(shí)現(xiàn)將一段代碼重復(fù)執(zhí)行,例如循環(huán)打印100位學(xué)生的考試成績。循環(huán)語句分類for循環(huán)While循環(huán)do…while循環(huán)2.4.2循環(huán)語句結(jié)構(gòu)2.4程序流控制for循環(huán)語句是最常用的循環(huán)語句,一般用在循環(huán)次數(shù)已知的情況下,通常情況下可以代替while循環(huán)。for循環(huán)語句for循環(huán)語句的基本語法格式:for(初始化表達(dá)式;循環(huán)條件;操作表達(dá)式){
執(zhí)行語句
...}2.4程序流控制案例演示(參考教材文件ForTest.java)for循環(huán)語句的執(zhí)行流程:2.4程序流控制定義:while循環(huán)語句和選擇結(jié)構(gòu)語句有些相似,都是根據(jù)條件判斷來決定是否執(zhí)行大括號(hào){}內(nèi)的執(zhí)行語句。區(qū)別:while語句會(huì)循環(huán)判斷循環(huán)條件是否成立,只要條件成立,{}內(nèi)的執(zhí)行語句就會(huì)執(zhí)行,直到循環(huán)條件不成立,while循環(huán)才結(jié)束。while循環(huán)語句2.4程序流控制案例演示(參考教材文件WhileTest.java)While循環(huán)語句語法格式:while(循環(huán)條件){執(zhí)行語句...}While循環(huán)語句執(zhí)行流程:2.4程序流控制定義:do…while循環(huán)語句也被稱為后測(cè)試循環(huán)語句,它和while循環(huán)語句的功能類似。區(qū)別:while是先判斷條件后執(zhí)行循環(huán)體,而do...while會(huì)無條件執(zhí)行一次循環(huán)體后再判斷條件。do...while循環(huán)語句2.4程序流控制do...While循環(huán)語句語法格式:do{執(zhí)行語句...}while(循環(huán)條件);do...While循環(huán)語句執(zhí)行流程:2.4程序流控制定義:嵌套循環(huán)是指在一個(gè)循環(huán)語句的循環(huán)體中再定義一個(gè)循環(huán)語句的語法結(jié)構(gòu)。說明:while、do…while、for循環(huán)語句都可以進(jìn)行循環(huán)嵌套,并且它們之間也可以互相嵌套。在實(shí)際開發(fā)時(shí),我們最常用的是for循環(huán)嵌套。循環(huán)嵌套2.4程序流控制雙層for循環(huán)的語法格式:for(初始化表達(dá)式;循環(huán)條件;操作表達(dá)式){...for(初始化表達(dá)式;循環(huán)條件;操作表達(dá)式){執(zhí)行語句...}...}2.4程序流控制案例演示(參考教材文件ForNesting.java)規(guī)則:在雙層for循環(huán)嵌套中,外層循環(huán)每執(zhí)行一輪,都要執(zhí)行完內(nèi)層循環(huán)中的整個(gè)for循環(huán),然后執(zhí)行外層循環(huán)第二輪,接著再執(zhí)行完內(nèi)層循環(huán)中的整個(gè)for循環(huán),以此類推,直至外層循環(huán)的循環(huán)條件不成立,才會(huì)跳出整個(gè)嵌套for循環(huán)。2.4程序流控制跳轉(zhuǎn)語句(break、continue)定義:跳轉(zhuǎn)語句用于實(shí)現(xiàn)循環(huán)語句執(zhí)行過程中程序流程的跳轉(zhuǎn)。分類:在Java中的跳轉(zhuǎn)語句有break語句和continue語句。2.4程序流控制使用場(chǎng)景:在switch條件語句和循環(huán)結(jié)構(gòu)語句中都可以使用break語句。類型:無標(biāo)簽式和標(biāo)簽式無標(biāo)簽式break語句可以控制從某個(gè)分支或循環(huán)中跳轉(zhuǎn)出來,執(zhí)行后續(xù)的語句break語句標(biāo)簽式break語句是指break后跟一個(gè)標(biāo)簽。其作用是結(jié)束標(biāo)簽所指示的循環(huán)的執(zhí)行,跳轉(zhuǎn)到標(biāo)簽之外執(zhí)行。2.4程序流控制案例演示(參考教材文件JumpTest.java與BreakLable.java)continue語句使用場(chǎng)景:continue語句用在循環(huán)語句中。continue語句也有兩種形式:無標(biāo)簽式和標(biāo)簽式。無標(biāo)簽式用于跳過循環(huán)本次剩余部分代碼,轉(zhuǎn)而去執(zhí)行本循環(huán)結(jié)構(gòu)的下一次循環(huán)。標(biāo)簽式也是跳過循環(huán)本次剩余部分代碼,但轉(zhuǎn)向標(biāo)簽所指循環(huán)再次執(zhí)行。和無標(biāo)簽式相比,標(biāo)簽式同樣可以一次跳過一次以上的嵌套層級(jí)。語句的一般格式為:return[表達(dá)式];功能是退出當(dāng)前執(zhí)行的方法,是控制流程返回到調(diào)用該方法的語句的后續(xù)語句。由return返回的值類型必須與方法聲明的返回類型匹配,返回值可選,若沒有返回值,方法必須聲明為void。3.return語句2.4程序流控制2.5數(shù)組假設(shè)如下場(chǎng)景:現(xiàn)在需要統(tǒng)計(jì)某公司100名員工的工資情況,例如計(jì)算平均工資、最高工資等??赡艿霓k法:用前面所學(xué)的知識(shí),程序就需要聲明100個(gè)變量來分別記住每位員工的工資(這樣的話非常麻煩)。解決辦法:可以使用一個(gè)數(shù)組來記住這100名員工的工資,然后對(duì)數(shù)組的元素進(jìn)行操作。2.5數(shù)組定義:數(shù)組是指一組數(shù)據(jù)的集合,數(shù)組中的每個(gè)數(shù)據(jù)被稱作元素。在數(shù)組中可以存放任意類型的元素,但同一個(gè)數(shù)組里存放的元素類型必須一致。分類:一維數(shù)組和多維數(shù)組。聲明一維數(shù)組有以下兩種格式:
數(shù)組元素類型
數(shù)組名[];
數(shù)組元素類型[]
數(shù)組名;聲明二維數(shù)組的格式為:
數(shù)組元素類型
數(shù)組名[][];
數(shù)組元素類型[][]數(shù)組名;例如: inta[]; //等價(jià)于int[]a; int[][]x; //等價(jià)于intx[][];2.5.1聲明數(shù)組2.5數(shù)組2.5數(shù)組數(shù)組定義的語法格式:一維數(shù)組二維數(shù)組數(shù)組類型[]數(shù)組名=new數(shù)組類型[數(shù)組長度];數(shù)組定義的使用示例:
int[]ids=newint[100];2.5.2數(shù)組分配元素?cái)?shù)組類型[][]數(shù)組名=new數(shù)組類型[數(shù)組長度][數(shù)組長度];
int[][]arr=newint[3][4];
int[][]arr=newint[3][];數(shù)組類型[][]數(shù)組名=new數(shù)組類型[數(shù)組長度][];2.5數(shù)組int[]ids;ids=newint[100];數(shù)組分配的內(nèi)存變化圖:說明:前面的二維數(shù)組代碼相當(dāng)于定義了一個(gè)3*4的二維數(shù)組,這個(gè)二維數(shù)組的長度為3,可以將它看成3個(gè)int[]類型的一維數(shù)組,每個(gè)一維數(shù)組中的元素又是一個(gè)長度為4的一維數(shù)組。2.5數(shù)組二維數(shù)組也可以只指定二維數(shù)組的長度,不確定每個(gè)數(shù)組的元素個(gè)數(shù)。說明:第二種方式和第一種類似,只是數(shù)組中每個(gè)元素的長度不確定。2.5數(shù)組Java中不同數(shù)據(jù)類型元素的初始值:數(shù)據(jù)類型默認(rèn)初始值byte、short、int、long0float、double0.0char一個(gè)空字符,即’\u0000’booleanfalse引用數(shù)據(jù)類型null,表示變量不引用任何對(duì)象2.5數(shù)組使用數(shù)組時(shí),要注意下面的兩種情況:每個(gè)數(shù)組的索引都有一個(gè)范圍,即0~length-1。在訪問數(shù)組的元素時(shí),索引不能超出這個(gè)范圍,否則程序會(huì)報(bào)錯(cuò)(ArrayIndexOutOfBoundsException,即數(shù)組角標(biāo)越界異常)。在使用變量引用一個(gè)數(shù)組時(shí),變量必須指向一個(gè)有效的數(shù)組對(duì)象,如果該變量的值為null,則意味著沒有指向任何數(shù)組,此時(shí)通過該變量訪問數(shù)組的元素會(huì)出現(xiàn)錯(cuò)誤(NullPointerException,即空指針異常)。一維數(shù)組的元素通過一級(jí)索引(也就是一個(gè)下標(biāo))訪問,二維數(shù)組通過二級(jí)索引。2.5.3數(shù)組元素的使用2.5數(shù)組
a[0]=5; //獲取一維數(shù)組中第一個(gè)元素arr[0][1];//獲取二維數(shù)組中第一個(gè)元素組的第二個(gè)元素arr[0][1]=1;//對(duì)二維數(shù)組中第一個(gè)元素組的第二個(gè)元素賦值或修改數(shù)組類型[]數(shù)組名=new數(shù)組類型[]{數(shù)組元素0,數(shù)組元素1,...};數(shù)組類型[]數(shù)組名={數(shù)組元素0,數(shù)組元素1,...};inta[]={1,2,3,4,};此語句相當(dāng)于: inta[]=newint[4];a[0]=1;a[1]=2;a[2]=3;a[3]=4;2.5.4數(shù)組的初始化2.5數(shù)組當(dāng)然也可以對(duì)二維數(shù)組聲明時(shí)初始化,例如:intb[][]={{1,2},{3,4,5,6},{7,8,9}};說明:上面的二維數(shù)組中定義了三個(gè)元素,這三個(gè)元素都是數(shù)組,分別為{1,2}、{3,4,5,6}、{7,8,9}。相當(dāng)于:
intb[][]=newint[3][];b[0]=newint[]{1,2};b[1]=newint[]{3,4,5,6};b[]=newint[]{7,8,9}; 2.5.4數(shù)組的初始化2.5數(shù)組數(shù)組屬于引用型變量,可以通過數(shù)組名來引用所指向的數(shù)組。數(shù)組名就其本身而言,就是一個(gè)引用,可以在代碼中重新賦值以改變其所指目標(biāo),進(jìn)而實(shí)現(xiàn)對(duì)數(shù)組的靈活應(yīng)用。例如前面創(chuàng)建的一維數(shù)組a,和二維數(shù)組b和x。我們可以用system.out.println(a)輸出數(shù)組a中存放的引用值,2.5.5數(shù)組的引用2.5數(shù)組2.5數(shù)組案例演示(參考教材文件ArrayTraver.java)2.5.6數(shù)組的遍歷在操作數(shù)組時(shí),經(jīng)常需要依次訪問數(shù)組中的每個(gè)元素,這種操作稱為數(shù)組的遍歷,在JDK5對(duì)for語句做了擴(kuò)充和增強(qiáng),使用foreach語句,使用戶更好地訪問數(shù)組,語法如下:for(聲明循環(huán)變量:數(shù)組的名字){…}2.5數(shù)組2.5.7數(shù)組的最值在數(shù)值型數(shù)組中,我們經(jīng)常需要求出其中的最大最小值,這就是所謂的求最值。案例演示(參考教材文件ArrayMax.java)2.5數(shù)組2.5.8數(shù)組的排序數(shù)組中保存著大量數(shù)據(jù),在應(yīng)用中有時(shí)需要數(shù)據(jù)是有序排列的,這就必須對(duì)數(shù)組進(jìn)行排序。所謂冒泡排序,就是不斷地比較數(shù)組中相鄰的兩個(gè)元素,較小者向上浮,較大者向下沉,就和水中落石氣泡上浮類似。案例演示(參考教材文件BubbleSorting.java)為了方便用戶從標(biāo)準(zhǔn)輸入中輸入數(shù)據(jù),Java5提供了java.util.Scanner類,通過Scanner類來獲取用戶的輸入。下面是創(chuàng)建Scanner對(duì)象的基本語法:Scannerreader=newScanner(System.in);Scanner對(duì)象調(diào)用nextXxx()方法依次返回被解析的字符序列中的單詞。2.6JavaScanner類
案例演示(參考教材文件ScannerDemo.java)2.7本章小結(jié)本章主要介紹了學(xué)習(xí)Java所需的基礎(chǔ)知識(shí)。首先介紹了Java語言的基本語法、常量、變量的定義以及一些常見運(yùn)算符的使用,然后介紹了選擇結(jié)構(gòu)語句和循環(huán)結(jié)構(gòu)語句的概念和使用,最后介紹了數(shù)組的定義及相關(guān)操作。第3章類與對(duì)象理解類,類的聲明,類體,成員變量和局部變量等概念。理解方法重載,構(gòu)造方法,類方法和實(shí)例方法等概念,掌握其使用方法。理解對(duì)象,創(chuàng)建對(duì)象,使用對(duì)象,對(duì)象的引用等概念。理解訪問控制符,static和this關(guān)鍵字等概念,掌握其使用方法。理解包的概念,掌握其使用方法。學(xué)習(xí)目標(biāo)面向?qū)ο笥?jì)算機(jī)如何描述現(xiàn)實(shí)世界中的汽車、手機(jī)?如何描述各類人員與學(xué)生?如何描述一項(xiàng)工作和體育比賽?我們需要面向?qū)ο蟮木幊趟枷?。面向?qū)ο笫且环N符合人類思維習(xí)慣的編程思想,面向?qū)ο笫敲嫦颥F(xiàn)實(shí)世界中的萬事萬物。在客觀世界中,每一個(gè)有明確意義和邊界的事物都可以看作一個(gè)對(duì)象,它是一個(gè)可以辨識(shí)的實(shí)體。每個(gè)對(duì)象都有其狀態(tài)和行為,以區(qū)別于其他對(duì)象。例如,手機(jī)有型號(hào)、內(nèi)存大小、生產(chǎn)廠家等狀態(tài),也有開機(jī)、打電話和關(guān)機(jī)等行為??梢园丫哂邢嗨铺卣鞯氖挛餁w為一類,例如,所有的手機(jī)可以歸為“手機(jī)類”。在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,對(duì)象的概念就是對(duì)現(xiàn)實(shí)世界中對(duì)象的模型化,它同樣有自己的狀態(tài)和行為,對(duì)象的狀態(tài)用數(shù)據(jù)來表示,稱為屬性;對(duì)象的行為用代碼來表示,稱為方法。而類則是對(duì)具有相同屬性和方法的一組相似對(duì)象的描述。類與對(duì)象是面向?qū)ο蟪绦蛟O(shè)計(jì)中兩個(gè)相對(duì)比較重要的概念,它們的關(guān)系可以簡要的概括為:類是對(duì)象的統(tǒng)稱,是對(duì)象的模板;對(duì)象是具體的事物,是類的實(shí)例;類是成員變量與成員方法的統(tǒng)一封裝體。類與對(duì)象類的封裝封裝類的成員變量,封裝時(shí)注意可訪問性,為私有變量封裝屬性,屬性一般是public。封裝類的成員方法,同一個(gè)方法中的參數(shù)類型和個(gè)數(shù)不同,可以實(shí)施重載。封裝構(gòu)造函數(shù),為了多樣化的創(chuàng)建對(duì)象,可以重載構(gòu)造函數(shù)。在類的成員方法中,可以使用this。用“this.成員名”表示對(duì)象引用或“this()”傳遞構(gòu)造函數(shù)。封裝靜態(tài)成員,不需要?jiǎng)?chuàng)建對(duì)象,就可通過類名.成員名進(jìn)行訪問。對(duì)于不同編程人員封裝類時(shí)的同名問題,引入包的概念,加于區(qū)分。本章圍繞封裝的思想,具體描述相關(guān)內(nèi)容。類與對(duì)象3.1類的定義
類就是具備某些共同屬性特征和行為的實(shí)體的集合,它是一種抽象的數(shù)據(jù)類型,它是對(duì)具有相同特征實(shí)體的抽象。在面向?qū)ο蟮某绦蛟O(shè)計(jì)語言中,類是對(duì)一類“事物”的屬性與行為的抽象。類是組成Java程序的基本要素,一個(gè)Java應(yīng)用程序是由若干個(gè)類所構(gòu)成的,這些類既可以在一個(gè)源文件中,也可以分布在若干個(gè)源文件中。
類的定義包括兩部分:類聲明和類體,其基本格式如下。class是關(guān)鍵字,用來定義類?!癱lass類名”是類的聲明部分,類名必須是合法的Java標(biāo)識(shí)符,兩個(gè)大括號(hào)及其之間的內(nèi)容是類體。
類的封裝就是指隱藏對(duì)象的屬性和實(shí)現(xiàn)細(xì)節(jié),僅對(duì)外提供公共訪問方式。具體封裝方法會(huì)在后續(xù)章節(jié)中結(jié)合訪問控制符詳細(xì)介紹。class類名{類體的內(nèi)容}3.1類的定義3.1.1類的聲明以下是兩個(gè)類的聲明的例子。
classPerson{…}classTriangle{…}classPerson和classTriangle稱為類的聲明,Person和Triangle分別是類名。類的名字要符合標(biāo)識(shí)符的規(guī)定,即名字可以由字母(A~Z,a~z)、下劃線(_)、數(shù)字(0~9)或美元符號(hào)($)組成,并且第一個(gè)字符不能是數(shù)字。在給類命名時(shí),要體現(xiàn)下列編程風(fēng)格(這雖不是語法要求的,但應(yīng)當(dāng)遵守)。
(1)如果
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 帽粉產(chǎn)品供應(yīng)鏈分析
- 專業(yè)書籍出版行業(yè)相關(guān)項(xiàng)目經(jīng)營管理報(bào)告
- 農(nóng)業(yè)智能施肥機(jī)行業(yè)經(jīng)營分析報(bào)告
- 吸入器產(chǎn)品供應(yīng)鏈分析
- 農(nóng)業(yè)保險(xiǎn)科技行業(yè)市場(chǎng)調(diào)研分析報(bào)告
- 石蠟紙市場(chǎng)發(fā)展前景分析及供需格局研究預(yù)測(cè)報(bào)告
- 農(nóng)業(yè)生物農(nóng)藥行業(yè)市場(chǎng)調(diào)研分析報(bào)告
- 兩輪機(jī)動(dòng)車用擋泥板產(chǎn)業(yè)鏈招商引資的調(diào)研報(bào)告
- 手表表柄產(chǎn)業(yè)鏈招商引資的調(diào)研報(bào)告
- 頭發(fā)造型用噴霧產(chǎn)業(yè)鏈招商引資的調(diào)研報(bào)告
- 企業(yè)風(fēng)險(xiǎn)管理與合規(guī)的組織架構(gòu)與流程
- 紅光治療培訓(xùn)課件
- 黃文秀事跡和經(jīng)歷簡介
- 成人四肢血壓測(cè)量的中國專家共識(shí)
- 《思想道德與法治》期末考試大全-下(判斷題匯總)
- 主動(dòng)脈夾層內(nèi)科試題及答案
- 初中數(shù)學(xué)新課標(biāo)培訓(xùn)心得
- 大班音樂《小老鼠和泡泡糖》課件
- 計(jì)量經(jīng)濟(jì)學(xué)與Stata應(yīng)用
- 呼吸內(nèi)科醫(yī)療質(zhì)量控制中心督查評(píng)分表
- 靜以修身儉以養(yǎng)德班會(huì)
評(píng)論
0/150
提交評(píng)論