Java程序設(shè)計基礎(chǔ)教程(第2版)課件全套 -Chapter1 初識 Java -Chapter9 抽象類與接口_第1頁
Java程序設(shè)計基礎(chǔ)教程(第2版)課件全套 -Chapter1 初識 Java -Chapter9 抽象類與接口_第2頁
Java程序設(shè)計基礎(chǔ)教程(第2版)課件全套 -Chapter1 初識 Java -Chapter9 抽象類與接口_第3頁
Java程序設(shè)計基礎(chǔ)教程(第2版)課件全套 -Chapter1 初識 Java -Chapter9 抽象類與接口_第4頁
Java程序設(shè)計基礎(chǔ)教程(第2版)課件全套 -Chapter1 初識 Java -Chapter9 抽象類與接口_第5頁
已閱讀5頁,還剩299頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

Java程序設(shè)計基礎(chǔ)第一章初識Java課程導(dǎo)學(xué)課程特點理論知識偏多實操內(nèi)容豐富學(xué)習(xí)方法多敲代碼、多思考勤加練習(xí)、善于總結(jié)、歸納易錯點預(yù)習(xí)檢查請老師根據(jù)上節(jié)課布置的預(yù)習(xí)內(nèi)容進行提問問題1:本章目標(biāo)重難點提示重點:掌握J(rèn)ava開發(fā)環(huán)境搭建重點:掌握J(rèn)ava程序基本結(jié)構(gòu)重點:掌握程序的編譯和運行了解Java發(fā)展歷程、特點熟悉Java三大體系熟悉Java三大核心機制了解源碼、字節(jié)碼和機器碼之間的轉(zhuǎn)換了解JDK、JRE和JVM之間的關(guān)系本章任務(wù)Java開發(fā)環(huán)境的搭建第一個Java程序編寫輸出四邊形1.1

Java簡介Java發(fā)展歷程What’sJava?Sun公司研發(fā)的一種編程語言。當(dāng)然,Java不僅僅是一種編程語言,也是一種技術(shù)。Java的中文名叫爪哇,是一個盛產(chǎn)coffee的島嶼。開發(fā)者本意是想所有使用Java開發(fā)的程序員可以喝著香濃的咖啡,在愜意的環(huán)境下開發(fā)程序。1991年出現(xiàn),名叫oak,用于嵌入式開發(fā)。在1995年1月,將oak正式更名為Java。1.1

Java簡介Java發(fā)展歷程1994年他參加美國硅谷召開的“技術(shù)、教育和設(shè)計大會”展示了JavaApplet技術(shù)后,讓全世界的人知道了這個技術(shù)的存在,受到了很多人的關(guān)注,獲得很大的成功。1995.5.23Sun發(fā)布了

Java1.0(JavaDevelopmentKitJDK1.0開發(fā)套件)1.1

Java簡介Java發(fā)展歷程1998年12月,Sun發(fā)布了Java歷史上一個重要的JDK版本—JDK1.2,并開始使用“Java2”這一名稱。2004年9月30日,J2SE1.5發(fā)布,成為Java語言發(fā)展史上的又一重要版本。J2SE1.5更名為JavaSE5.0。2009年Sun公司被Oracle公司收購,Java成為了Oracle旗下產(chǎn)品。2014年3月,JDK8.0發(fā)布,該版本新增了lambda表達式、方法引用等新特性,標(biāo)志著Java開始邁向了函數(shù)式編程的道路,是Java發(fā)展史上另一個重要的里程碑。1.1

Java簡介Java語言特點Java語言是平臺無關(guān)的Java語言是可移植的Java語言是解釋型的Java語言是高性能的Java語言是多線程的Java語言是動態(tài)的Java語言是高級語言Java語言是簡單的Java語言是面向?qū)ο蟮腏ava語言是分布式的Java語言是健壯的Java語言是安全的1.1

Java簡介Java三大體系JavaSE(JavaStandardEdition)JavaSE是Java的基礎(chǔ),也是Java的核心。它允許開發(fā)和部署在桌面、服務(wù)器、嵌入式環(huán)境和實時環(huán)境中使用的Java應(yīng)用程序。JavaEE(JavaEnterpriseEdition)JavaEE是Java企業(yè)版,包含了Web開發(fā)等企業(yè)級的開發(fā)技術(shù),多用于Web系統(tǒng)的服務(wù)端開發(fā)。使用JavaEE可以快速開發(fā)出安全、穩(wěn)定、性能較高的大型系統(tǒng)。因此JavaEE也是很多企業(yè)在技術(shù)選型階段的一個重要考慮方向。JavaME(JavaMicroEdition)在Java發(fā)展之初,Java還有另一個分支—JavaME。JavaME可以用于一些嵌入式設(shè)備的Java程序開發(fā)。但隨著時代的發(fā)展,JavaME逐步走向沒落,目前的應(yīng)用范圍也在逐步縮小。1.1

Java簡介Java三大核心機制Java虛擬機(JavaVirtualMachine)簡稱JVM,在一臺計算機上由軟件或硬件模擬的計算機,實現(xiàn)了跨平臺和平臺無關(guān)性的特點。它定義了指令集、寄存器集、類文件結(jié)構(gòu)、堆棧、垃圾收集堆、內(nèi)存區(qū)域,提供了跨平臺能力的基礎(chǔ)框架。實現(xiàn)了“一處編譯,到處運行”。1.1

Java簡介Java三大核心機制Java自動垃圾收集機制(GarbageCollection)簡稱GC,是Java虛擬機提供的管理內(nèi)存的機制,這是Java非常有特色的技術(shù)。程序中將不用考慮對象的釋放問題,從而減輕程序員的負(fù)擔(dān),提高程序安全性,避免因資源耗盡而導(dǎo)致系統(tǒng)癱瘓的隱患。用于CPU在空閑時間以不定時的方式動態(tài)回收無任何引用的對象所占據(jù)的內(nèi)存空間,通過Object類中的finalize()方法進行內(nèi)存釋放處理。??注意:自動垃圾回收機制,程序員無法精準(zhǔn)控制和干預(yù),最多只能調(diào)用System.gc()建議垃圾回收。1.1

Java簡介Java三大核心機制Java代碼安全檢測(CodeSecurity)簡稱CS,采用域管理方式的安全模型,無論是本地代碼還是遠(yuǎn)程代碼都可以通過配置策略,設(shè)定可訪問的資源域,這種策略更好地支持了企業(yè)級應(yīng)用,同時也消除了區(qū)分本地代碼和遠(yuǎn)程代碼帶來的困難。安全檢測無須開發(fā)人員進行處理操作,都是由Java底層代碼完成的。問題解答學(xué)生共性問題解答1.2

Java開發(fā)環(huán)境搭建Java開發(fā)環(huán)境搭建1.

Linux環(huán)境下Java環(huán)境的搭建2.

Windows環(huán)境下Java環(huán)境的搭建 主要是分為3步:下載JDK、安裝JDK和配置JDK3.

java–version命令查看Java版本信息4.云平臺上采用的是openJDK1.8云課實驗:平臺在線搭建開發(fā)環(huán)境問題解答學(xué)生共性問題解答1.3第一個Java程序第一個Java程序云課實驗:第一個Java程序1.3第一個Java程序Java程序結(jié)構(gòu)鞏固根據(jù)所學(xué)的程序結(jié)構(gòu),使用標(biāo)準(zhǔn)的輸出語句。采用符號星號(*)+空格組合圍成四邊形,并完成打印輸出。云課實驗:輸出四邊形云課挑戰(zhàn)輸出三角形完成1.3小節(jié)下【試一試】輸出三角形。編寫Java基本的程序,效果如圖所示。問題解答學(xué)生共性問題解答1.4

Java程序工作原理源碼、字節(jié)碼和機器碼之間的轉(zhuǎn)換在整個Java程序的開發(fā)流程中,程序員最初是將代碼寫在后綴為.java的文件中,這個文件我們稱之為源碼,之后再通過編譯工具將.java文件轉(zhuǎn)換.class文件,那么這個文件就是字節(jié)碼文件。這個“轉(zhuǎn)換”過程中,又可以細(xì)分為以下四個階段:1.詞匯和語法分析:分析源碼的執(zhí)行邏輯,并將其繪制成一個抽象的語法樹。2.填寫符號表:復(fù)雜的程序之間會彼此引用,而此階段就會對這些引用關(guān)系做一些預(yù)處理工作??梢岳斫鉃椋诖穗A段會用一些符號來表示各個程序之間的關(guān)系。3.生成字節(jié)碼:根據(jù)前三個階段的結(jié)果,最終將.java文件轉(zhuǎn)換為.class文件。4.字節(jié)碼.class文件會被解釋為機器碼,進而在具體的系統(tǒng)平臺上執(zhí)行。1.4

Java程序工作原理字節(jié)碼解釋過程Java字節(jié)碼運行過程分為3步:類裝載器:主要是為執(zhí)行程序?qū)ふ液脱b載所需要的類,就是把字節(jié)碼文件裝到Java虛擬機中。字節(jié)碼校驗器:主要是對字節(jié)碼文件進行校驗,保證代碼的安全性。字節(jié)碼校驗器負(fù)責(zé)測試代碼段格式并進行規(guī)則檢查,檢查偽造指針、違反對象訪問權(quán)限或試圖改變對象類型的非法代碼。解釋器:主要是系統(tǒng)平臺并不認(rèn)識字節(jié)碼文件,需要通過解釋器進行轉(zhuǎn)換,將字節(jié)碼文件翻譯成所在平臺能識別的機器碼。1.4

Java程序工作原理JDK、JRE和JVM之間的關(guān)系JDK:Java開發(fā)套件JRE:Java運行環(huán)境JVM:Java虛擬機從圖中我們可以看到:JDK=編譯器+JREJRE=JVM+解釋器本章總結(jié)思維導(dǎo)圖作業(yè)課后作業(yè)教員備課時根據(jù)班級情況在此添加內(nèi)容,應(yīng)區(qū)分必做、選做內(nèi)容,以滿足不同層次學(xué)員的要求。預(yù)習(xí)作業(yè)教員備課時根據(jù)班級情況在此添加預(yù)習(xí)內(nèi)容Java程序設(shè)計基礎(chǔ)第二章數(shù)據(jù)類型和運算符預(yù)習(xí)檢查請老師根據(jù)上節(jié)課布置的預(yù)習(xí)內(nèi)容進行提問問題1:本章目標(biāo)重難點提示重點:掌握常量和變量重點:掌握簡單數(shù)據(jù)類型重點:掌握引用類型之字符串類型重點:掌握各種運算符和表達式難點:掌握各簡單類型之間的轉(zhuǎn)換掌握從控制臺輸入數(shù)據(jù)掌握分隔符、關(guān)鍵字和標(biāo)識符熟悉關(guān)鍵字本章任務(wù)注釋的使用簡單類型之間的轉(zhuǎn)換計算三位數(shù)各位之和判斷水仙花數(shù)計算Java工程師的薪資2.1基礎(chǔ)語法注釋注釋分為3種形式://單行注釋/*多行注釋*//**文檔注釋*/記?。合氤蔀橐粋€優(yōu)秀的開發(fā)人員,一定要養(yǎng)成好的習(xí)慣,認(rèn)真寫注釋。云課實驗:注釋的使用2.1基礎(chǔ)語法分隔符Java中的分隔符主要有:分號:“;”、逗號:“,”、圓點:“.”、下劃線:“_”、空格:“”小括號:“()”、中括號:“[]”、花括號:“{}”Java分隔符作用: Java語句必須以分號作為結(jié)束標(biāo)記。

Java允許用花括號“{}”將一組語句括起來,形成一個語句塊。

Java程序源代碼中各組成部分之間可以插入任意數(shù)量的空格,包括換行。2.1基礎(chǔ)語法關(guān)鍵字Java中賦以特定的含義、并用做專門用途的單詞稱為關(guān)鍵字(keyword)。Java關(guān)鍵字一共有53個,所有關(guān)鍵字都是小寫的。byteshortintlongbooleancharfloatdoubleifswitchwhiledoforclasspublicabstractfinalprotectedprivatedefaultcasebreakcontinuereturnextendsimplementsinterfaceimportpackagetrycatchfinallystaticsuperthisvoidthrowthrowsinstanceofsynchronizedconstgotoenumnullstrictfpnativeasserttransientvolatilenewelsetruefalse2.1基礎(chǔ)語法標(biāo)識符Java語言中,為各種變量、方法和類等起的名字稱為標(biāo)識符。標(biāo)識符的命名規(guī)則:1.以字母、下劃線、美元符開頭2.后跟字母、下劃線、美元符或數(shù)字標(biāo)識符大小寫敏感,但長度無限制。問題解答學(xué)生共性問題解答2.2變量與常量變量與常量的使用程序執(zhí)行中數(shù)值可變的數(shù)據(jù)稱為變量。變量包括變量名和變量值。變量聲明格式: [修飾符]數(shù)據(jù)類型變量名[=初始值]數(shù)值不可變的數(shù)據(jù)稱為常量,同樣常量也包括常量名和常量值。常量名一般都是大寫的。常量聲明格式: final數(shù)據(jù)類型常量名=初始值??注意:不管是變量還是常量,在Java中都必須先聲明后使用。云課實驗:變量的使用、常量的使用問題解答學(xué)生共性問題解答2.3數(shù)據(jù)類型數(shù)據(jù)類型分類

1字節(jié)=

8位(二進制)類型占存儲空間

(字節(jié))類型占存儲空間

(字節(jié))byte1char2short2boolean4int4float4long8double82.3數(shù)據(jù)類型整型整型分為4種: byte、short、int、long,整型數(shù)值默認(rèn)情況下是int類型。Java語言整型常量的三種表示形式:十進制整數(shù),如12,-314,0

八進制整數(shù),要求以0開頭,如012十六進制數(shù),要求0x或0X開頭,如0x12Java語言的整型常量默認(rèn)為int型,如:inti=3;聲明long型常量可以后加‘l’或‘L’,如:longl=3L;云課實驗:整型和布爾類型的使用2.3數(shù)據(jù)類型布爾型布爾類型boolean:

布爾類型適用于邏輯運算,一般用于程序流程控制。

數(shù)值只有true和false。

不可以使用0或非0整數(shù),也不可以使用Y或N字符替代。 boolean

b

=

false; if

(b)

{ //

do

something }云課實驗:整型和布爾類型的使用2.3數(shù)據(jù)類型浮點型浮點型分為:

單精度float和雙精度double,浮點數(shù)值默認(rèn)情況下是double類型。Java浮點類型常量有兩種表示形式:

十進制數(shù)形式,必須含有小數(shù)點,如:

3.14314.0.314

科學(xué)記數(shù)法形式,如:

3.14e23.14E2314E2

如要聲明一個常量為float型,則需在數(shù)字后面加f或F,如:floatf=3.14f;

云課實驗:浮點和字符類型的使用2.3數(shù)據(jù)類型浮點型和字符型字符型char:

只能存儲一個字母、或一個數(shù)值、或一個中文,需要用單引號括起來。

字符類型數(shù)據(jù)用來表示通常意義上“字符”。字符常量是用單引號括起來的單個字符,如:charc='A';Java字符采用Unicode編碼,每個字符占兩個字節(jié),因而可用十六進制編碼形式表示,如:

charc1='\u0061';Java語言中還允許使用轉(zhuǎn)義字符‘\’來將其后的字符轉(zhuǎn)變?yōu)槠渌暮x,如:

charc2='\n';云課實驗:浮點和字符類型的使用2.3數(shù)據(jù)類型引用類型Java語言中除8種基本數(shù)據(jù)類型以外的數(shù)據(jù)類型稱為引用類型。引用類型數(shù)據(jù)以對象的形式存在。引用類型變量的值是某個對象的句柄,而不是對象本身。聲明引用類型變量時,系統(tǒng)只為該變量分配引用空間,并未創(chuàng)建一個具體的對象。2.3數(shù)據(jù)類型引用類型之String類型String

是最常用的一種Java引用類型。String

類對象保存不可修改的Unicode

字符序列。String聲明格式如下:

String變量名="字符串信息,可以包含0到多個字符";String

類型數(shù)據(jù)可以和任何其它數(shù)據(jù)類型進行"+"操作,實現(xiàn)字符串連接的效果。云課實驗:引用類型的使用2.3數(shù)據(jù)類型簡單類型之間的轉(zhuǎn)換8種簡單類型之間的轉(zhuǎn)換,其中boolean類型不參與轉(zhuǎn)換。類型轉(zhuǎn)換分為:隱式轉(zhuǎn)換和顯式轉(zhuǎn)換。云課實驗:簡單類型之間的轉(zhuǎn)換問題解答學(xué)生共性問題解答2.4從控制臺輸入數(shù)據(jù)Scanner類java.util包中的一個工具類,請先查看API。主要是接收鍵盤輸入的數(shù)據(jù)?;靖袷剑?Scanner

sc

=

new

Scanner(System.in); int

i

=

sc.nextInt();云課實驗:使用Scanner進行數(shù)據(jù)傳遞問題解答學(xué)生共性問題解答2.5運算符算術(shù)運算符算術(shù)運算符(二元運算符)功能如下:云課實驗:算術(shù)、關(guān)系、邏輯和賦值運算符的使用2.5運算符算術(shù)運算符遞增遞減運算符:

++、--

對于需要對操作數(shù)進行加1或減1操作時,可以使用遞增或遞減運算符。intx=2;inty=(++x)*5;

//執(zhí)行的結(jié)果:x=3,y=15intx=2;inty=(x++)*5;

//執(zhí)行的結(jié)果:x=3,y=10云課實驗:算術(shù)、關(guān)系、邏輯和賦值運算符的使用2.5運算符關(guān)系運算符關(guān)系運算符功能如下:云課實驗:算術(shù)、關(guān)系、邏輯和賦值運算符的使用2.5運算符邏輯運算符邏輯運算符功能

!--邏輯非 &--邏輯與 |--邏輯或

^--邏輯異或 &&--短路與||--短路或邏輯運算符功能說明:云課實驗:算術(shù)、關(guān)系、邏輯和賦值運算符的使用2.5運算符賦值運算符賦值運算符,包括擴展賦值運算符,功能如圖:云課實驗:算術(shù)、關(guān)系、邏輯和賦值運算符的使用云課挑戰(zhàn)計算三位數(shù)各位之和完成2.5小節(jié)下【試一試】計算三位數(shù)各位之和。編寫Java應(yīng)用程序,實現(xiàn)如下效果即可。2.5運算符位運算符位運算符功能

~--取反 &--按位與

|--按位或 ^--按位異或位運算符功能說明:云課實驗:條件和位運算符的使用2.5運算符移位運算符左移a

<<

b將二進制形式的a逐位左移b位,最低位空出的b位補0。帶符號右移a

>>

b將二進制形式的a逐位右移b位,最高位空出的b位補原來的符號位。無符號右移a

>>>

b將二進制形式的a逐位右移b位,最高位空出的b位補0。云課實驗:條件和位運算符的使用2.5運算符移位運算符移位運算符性質(zhì)適用數(shù)據(jù)類型:byte、short、char、int、long。對低于int型的操作數(shù)將先自動轉(zhuǎn)換為int型再移位(即以int作為移位標(biāo)準(zhǔn))。對于int型整數(shù)移位a

>>

b,系統(tǒng)先將b對32取模,得到的結(jié)果才是真正移位的位數(shù)。對于long型整數(shù)移位時a

>>

b,則是先將移位位數(shù)b對64取模。云課實驗:條件和位運算符的使用2.5運算符移位運算符移位運算符應(yīng)用云課實驗:條件和位運算符的使用2.5運算符條件連接符條件連接符,也可以稱為三元運算符,語法格式如下: x

?

y

:

z其中x為boolean類型表達式,先計算x的值,若為true,則整個運算的結(jié)果為表達式y(tǒng)的值,否則整個運算結(jié)果為表達式z的值。例如:

intscore=50; intresult=x<

60?60

:x; Stringtype=score<60?"不及格":"及格";云課實驗:條件和位運算符的使用云課挑戰(zhàn)判斷水仙花數(shù)完成2.5小節(jié)下【試一試】判斷水仙花數(shù)。編寫Java應(yīng)用程序,實現(xiàn)如下效果即可。問題解答學(xué)生共性問題解答2.6表達式Java表達式按照運算符的優(yōu)先級從高到低的順序進行運算,優(yōu)先級相同的運算符按照事先約定的結(jié)合方向進行運算。運算符的優(yōu)先級和結(jié)合性如下圖所示。云課挑戰(zhàn)計算Java工程師的薪資完成2.6小節(jié)下【試一試】計算Java工程師的薪資。編寫Java應(yīng)用程序,實現(xiàn)如下效果即可。問題解答學(xué)生共性問題解答本章總結(jié)思維導(dǎo)圖作業(yè)課后作業(yè)教員備課時根據(jù)班級情況在此添加內(nèi)容,應(yīng)區(qū)分必做、選做內(nèi)容,以滿足不同層次學(xué)員的要求。預(yù)習(xí)作業(yè)教員備課時根據(jù)班級情況在此添加預(yù)習(xí)內(nèi)容Java程序設(shè)計基礎(chǔ)第三章流程控制預(yù)習(xí)檢查請老師根據(jù)上節(jié)課布置的預(yù)習(xí)內(nèi)容進行提問問題1:本章目標(biāo)重難點提示重點:掌握if分支結(jié)構(gòu)重點:掌握switch分支結(jié)構(gòu)重點:掌握while循環(huán)結(jié)構(gòu)重點:掌握for循環(huán)結(jié)構(gòu)重點:掌握

Java多重循環(huán)重點:使用跳轉(zhuǎn)語句控制程序流程掌握多重嵌套選擇結(jié)構(gòu)掌握do-while循環(huán)結(jié)構(gòu)掌握Debug程序調(diào)試本章任務(wù)給景點門票訂個價找出三個數(shù)中的最大值每個月有多少天累加方式加強訓(xùn)練大膽畫出來趣味補代碼什么時候才能存夠錢流程控制用來控制程序中各語句的執(zhí)行順序順序結(jié)構(gòu)

程序中最簡單最基本的流程控制,沒有特定的語法結(jié)構(gòu),代碼從上而下依次執(zhí)行選擇結(jié)構(gòu)

也叫分支結(jié)構(gòu),有特定的語法規(guī)則,程序根據(jù)要執(zhí)行具體的邏輯運算結(jié)果來進行判斷,選擇執(zhí)行不同的代碼流程循環(huán)結(jié)構(gòu)

在滿足指定條件的情況下,重復(fù)執(zhí)行某一段代碼來實現(xiàn)預(yù)期的功能,可以用來解決重復(fù)或有規(guī)律的代碼問題流程控制

順序結(jié)構(gòu)

選擇結(jié)構(gòu)

循環(huán)結(jié)構(gòu)流程控制流程圖:逐步解決問題的步驟和方法的圖形化表示形式3.1if語句單分支選擇結(jié)構(gòu)if(布爾表達式){

//表達式為真時執(zhí)行的代碼塊

}云課實驗:單分支選擇結(jié)構(gòu)語法3.1if語句雙分支選擇結(jié)構(gòu)if(布爾表達式){

//表達式為真時執(zhí)行的代碼塊

}else{

//表達式為假時執(zhí)行的代碼塊}云課實驗:雙分支選擇結(jié)構(gòu)語法3.1if語句多分支選擇結(jié)構(gòu)if(布爾表達式1){

//表達式1為真時執(zhí)行的代碼塊1

}elseif(布爾表達式2){//表達式2為真時執(zhí)行的代碼塊2 }else{//表達式全都為假時執(zhí)行的代碼塊3}云課實驗:多分支選擇結(jié)構(gòu)語法3.1if語句嵌套分支選擇結(jié)構(gòu)if(布爾表達式){

if(布爾表達式2){

//表達式1和2都為真時執(zhí)行的代碼塊A

}else{

//表達式1為真但表達式2為假時執(zhí)行的代碼塊B

}}else{

//表達式1為假時執(zhí)行的代碼塊C}云課實驗:嵌套分支選擇結(jié)構(gòu)語法云課挑戰(zhàn)給景點門票訂個價具體需求參見本章3.1小節(jié)下挑戰(zhàn):給景點門票訂個價。云課挑戰(zhàn)找出三個數(shù)中的最大值具體需求參見本章3.1小節(jié)下挑戰(zhàn):找出三個數(shù)中的最大值。問題解答學(xué)生共性問題解答3.2switch語句switch分支結(jié)構(gòu)switch(表達式){case常量值1:

代碼塊1;

break;case

常量值2:

代碼塊2;

break;

case

常量值n:

代碼塊n;

break;

default:

代碼塊n+1; [break;]}云課實驗:switch分支結(jié)構(gòu)語法3.2switch語句case穿透switch(表達式){case常量值1:case常量值2:case常量值3:

代碼塊1;

break;

case

常量值n-2:

case

常量值n-1:

case

常量值n:

代碼塊2;

break;

default:

代碼塊3;}云課實驗:季度判斷語法3.2switch語句switch分支

和if分支的互相嵌套語句云課實驗:今天是否比賽場景if語句使用場景:

-可以針對一個范圍的判斷

-可以針對固定個數(shù)的常量值進行判斷

-其特點是表達式的結(jié)果只能是boolean類型switch語句使用場景:

-適合針對固定個數(shù)的常量值進行判斷

-其特點是表達式的值只能是byte、short、int、char、String、枚舉類型云課挑戰(zhàn)每個月有多少天具體需求參見本章3.2小節(jié)下挑戰(zhàn):每個月有多少天。問題解答學(xué)生共性問題解答3.3循環(huán)語句while循環(huán)基礎(chǔ)語法:while(布爾表達式){ //循環(huán)體}擴展語法:①初始條件;while(②條件判斷){

③//循環(huán)體;

④//條件變化;}語法3.3循環(huán)語句do...while循環(huán)基礎(chǔ)語法:do{ //循環(huán)體}while(布爾表達式);擴展語法:①初始條件;do{

②//循環(huán)體;

③//條件變化;}while(④條件判斷)語法3.3循環(huán)語句for循環(huán)基礎(chǔ)語法:for(①初始條件;②條件判斷;④條件變化){ ③//循環(huán)體;}語法3.3循環(huán)語句循環(huán)的共性部分初始條件條件判斷條件變化循環(huán)體各自的特點:while:先判斷,再執(zhí)行,可能一次都不執(zhí)行dowhile:先執(zhí)行,再判斷,至少執(zhí)行一次for:先判斷,再執(zhí)行,執(zhí)行次數(shù)通常是確定的云課實驗:三種循環(huán)方式實現(xiàn)舉重訓(xùn)練3.3循環(huán)語句嵌套循環(huán)云課實驗:九九乘法表while(循環(huán)條件1){

//循環(huán)操作1

for(循環(huán)條件2){

//循環(huán)操作2

}}while(循環(huán)條件1){

//循環(huán)操作1

while(循環(huán)條件2){

//循環(huán)操作2

}do{//循環(huán)操作1

do{

//循環(huán)操作2

}while(循環(huán)條件2);}while(循環(huán)條件1);for(循環(huán)條件1){

//循環(huán)操作1

for(循環(huán)條件2){

//循環(huán)操作2

}}各種循環(huán)均可互相嵌套一般不超過三層外層循環(huán)執(zhí)行一次,內(nèi)層循環(huán)要執(zhí)行一遍注意事項云課挑戰(zhàn)累加方式加強訓(xùn)練Debug調(diào)試工具的使用具體需求參見本章3.3小節(jié)下挑戰(zhàn):累加方式加強訓(xùn)練。云課挑戰(zhàn)大膽畫出來具體需求參見本章3.3小節(jié)下挑戰(zhàn):大膽畫出來。問題解答學(xué)生共性問題解答3.4跳轉(zhuǎn)語句break語句改變程序執(zhí)行流程;可以在switch中使用,也可以在循環(huán)中使用;在循環(huán)中使用break,可結(jié)束當(dāng)前的循環(huán)。云課實驗:又見break3.4跳轉(zhuǎn)語句continue語句改變程序執(zhí)行流程

continue

只能在循環(huán)中使用跳過當(dāng)次循環(huán)體剩余語句執(zhí)行下一次循環(huán)云課實驗:continue的作用3.4跳轉(zhuǎn)語句其它流程控制方式

return:結(jié)束當(dāng)前方式

System.exit(0):關(guān)閉虛擬機

breaklabel:類似于goto云課實驗:循環(huán)的其它流程控制方式云課挑戰(zhàn)趣味補代碼具體需求參見本章3.4小節(jié)下挑戰(zhàn):趣味補代碼。云課挑戰(zhàn)什么時候才能存夠錢具體需求參見本章3.4小節(jié)下挑戰(zhàn):什么時候才能存夠錢。問題解答學(xué)生共性問題解答本章總結(jié)作業(yè)課后作業(yè)教員備課時根據(jù)班級情況在此添加內(nèi)容,應(yīng)區(qū)分必做、選做內(nèi)容,以滿足不同層次學(xué)員的要求。預(yù)習(xí)作業(yè)教員備課時根據(jù)班級情況在此添加預(yù)習(xí)內(nèi)容Java基礎(chǔ)第四章方法與數(shù)組預(yù)習(xí)檢查請老師根據(jù)上節(jié)課布置的預(yù)習(xí)內(nèi)容進行提問問題1:本章目標(biāo)重難點提示重點:掌握一維數(shù)組重點:掌握遞歸重點:掌握二維數(shù)組重點:掌握冒泡排序難點:掌握插入排序難點:掌握快速排序本章任務(wù)數(shù)組的反轉(zhuǎn)成績分析二維數(shù)組的查找實現(xiàn)等腰楊輝三角形打印指定矩形的元素信息5.1一維數(shù)組一維數(shù)組的三步聲明數(shù)組:告訴數(shù)組可以存放什么類型的數(shù)據(jù)。注意:Java語言中聲明數(shù)組的時候不可以指定數(shù)組長度,例如intengNo[100]

是非法的。

數(shù)據(jù)類型數(shù)組名[];或數(shù)據(jù)類型[]數(shù)組名;

5.1一維數(shù)組一維數(shù)組的三步2.分配空間:分配空間主要是告訴計算機分配幾個連續(xù)的內(nèi)存空間給這個數(shù)組。補充:也可以把數(shù)組的聲明和分配空間合并。

數(shù)組名=new數(shù)據(jù)類型[數(shù)組長度];

數(shù)據(jù)類型[]數(shù)組名=new數(shù)據(jù)類型[數(shù)組長度];

5.1一維數(shù)組一維數(shù)組的三步3.操作數(shù)組:創(chuàng)建完數(shù)組之后,就可以給數(shù)組賦值并使用數(shù)組了,主要是通過下標(biāo)訪問數(shù)組元素。給數(shù)組中元素賦值:

獲取數(shù)組中的元素:獲取數(shù)組長度:

數(shù)組名[數(shù)組下標(biāo)]=數(shù)值;

變量=數(shù)組名[數(shù)組下標(biāo)];

數(shù)組名.length;

5.1一維數(shù)組數(shù)組初始化方式一:邊聲明邊賦值或者int[]salary=newint[]{20000,4000,8000};intage[]=newint[]{22,18,25};Stringname[]=newString[]{"小藍","小云","小課"};

int[]salary={20000,4000,8000};intage[]={22,18,25};Stringname[]={"小藍","小云","小課"};

5.1一維數(shù)組數(shù)組初始化方式二:動態(tài)從鍵盤輸入信息并賦值Scannersc=newScanner(System.in);int[]salary=newint[30];for(inti=0;i<30;i++){ salary[i]=sc.nextInt();}云課實驗:Java工程師薪資之高薪查詢數(shù)組常見錯誤分析與數(shù)組的內(nèi)存結(jié)構(gòu)數(shù)組中常見的錯誤沒有明確指明數(shù)組的大小數(shù)組越界數(shù)組初始化錯誤沒有給數(shù)組元素賦值5.1一維數(shù)組云課實驗:數(shù)組內(nèi)存結(jié)構(gòu)2.數(shù)組的內(nèi)存結(jié)構(gòu)int型數(shù)組內(nèi)存演變String型數(shù)組內(nèi)存演變5.1一維數(shù)組基本數(shù)據(jù)類型和引用數(shù)據(jù)類型傳遞基本數(shù)據(jù)類型:傳遞的實質(zhì)是數(shù)值的副本,只是在方法內(nèi)將值的副本的數(shù)據(jù)內(nèi)容進行了交換,其原數(shù)據(jù)本身并沒有發(fā)生變化。傳遞引用數(shù)據(jù)類型:傳遞的實質(zhì)為引用的地址,在調(diào)用使用“引用地址”傳遞交換數(shù)據(jù)的方法時,是對這個地址指向的數(shù)據(jù)進行了交換。云課實驗:交換兩個數(shù)的位置5.1一維數(shù)組使用增強for循環(huán)遍歷數(shù)組增強for循環(huán)的語法:for(數(shù)據(jù)類型變量名:數(shù)組或集合){

循環(huán)代碼塊

}云課實驗:數(shù)組遍歷云課挑戰(zhàn)數(shù)組反轉(zhuǎn)完成5.1小節(jié)下【試一試】數(shù)組反轉(zhuǎn)。云課挑戰(zhàn)成績分析完成5.1小節(jié)下【試一試】成績分析。問題解答學(xué)生共性問題解答5.2遞歸遞歸調(diào)用遞歸:就是指一個方法在它的方法體內(nèi)調(diào)用它自身。Java語言允許方法的遞歸調(diào)用,在遞歸調(diào)用中,主調(diào)方法同時也是被調(diào)方法。??遞歸結(jié)構(gòu)包括兩個重要的部分:遞歸頭:什么時候結(jié)束調(diào)用自身方法,如果沒有頭,將進入死循環(huán)。遞歸體:什么時候需要調(diào)用本身方法。云課實驗:遞歸調(diào)用計算整數(shù)n的階乘5.3簡單排序算法插入排序詳細(xì)分析見下面云課實驗云課實驗:插入排序的實現(xiàn)5.3簡單排序算法快速排序之單向掃描法詳細(xì)分析見下面云課實驗云課實驗:快速排序之單向掃描法的實現(xiàn)5.3簡單排序算法快速排序之雙向掃描法詳細(xì)分析見下面云課實驗云課實驗:快速排序之雙向掃描法的實現(xiàn)問題解答學(xué)生共性問題解答5.4二維數(shù)組二維數(shù)組1.聲明并創(chuàng)建二維數(shù)組的語法?注意:創(chuàng)建的時候,可以同時設(shè)置第一維長度和第二維長度,也可以只設(shè)置第一維長度,但不可以只設(shè)置第二維長度。比如:數(shù)據(jù)類型[][]數(shù)組名=new數(shù)據(jù)類型[第一維長度][第二維長度];或數(shù)據(jù)類型數(shù)組名[][]=new數(shù)據(jù)類型[第一維長度][第二維長度];int[][]arr=newint[3][4];int[][]arr=newint[3][];5.4二維數(shù)組二維數(shù)組2.二維數(shù)組的訪問給數(shù)組中的元素賦值獲取數(shù)組中的元素數(shù)組名[行數(shù)][列數(shù)]=數(shù)值;變量=數(shù)組名[行數(shù)][列數(shù)];5.4二維數(shù)組二維數(shù)組3.數(shù)組的初始化,同一維數(shù)組類似?!纠纭縤nt[][]arr1={{2,3},{1,5},{3,9}};//初始化一個3行2列的整型二維數(shù)組int[][]arr2={{1,2,3},{1,5},{3,9}};//初始化一個3行的整型二維數(shù)組云課實驗:求各科目的平均成績和總平均成績云課挑戰(zhàn)二維數(shù)組的查找完成5.4小節(jié)下【試一試】二維數(shù)組的查找。問題解答學(xué)生共性問題解答本章總結(jié)思維導(dǎo)圖作業(yè)課后作業(yè)教員備課時根據(jù)班級情況在此添加內(nèi)容,應(yīng)區(qū)分必做、選做內(nèi)容,以滿足不同層次學(xué)員的要求。預(yù)習(xí)作業(yè)教員備課時根據(jù)班級情況在此添加預(yù)習(xí)內(nèi)容Java程序設(shè)計基礎(chǔ)第五章String及常用類的使用預(yù)習(xí)檢查請老師根據(jù)上節(jié)課布置的預(yù)習(xí)內(nèi)容進行提問本章目標(biāo)重難點提示重點:掌握String類的創(chuàng)建方式重點:掌握String類的常用方法重點:理解String類的特性重點:掌握StringBuffer類的創(chuàng)建和常用方法重點:掌握正則表達式的使用重點:掌握SimpleDateFormat類的基本使用掌握J(rèn)avaAPI文檔的使用理解String、StringBuffer和StringBuilder類的區(qū)別掌握DecimalFormat類的基本使用掌握J(rèn)DK8中的新日期時間類型工具的基本使用本章任務(wù)Sting類常用方法的基本使用統(tǒng)計子串出現(xiàn)的次數(shù)字符串緩存的使用實現(xiàn)英文單詞的翻轉(zhuǎn)JDK8新日期時間類型使用NumberFormat的基本使用7.1JavaAPI及API文檔簡介Java

給程序員提供了

JavaAPI(ApplicationProgrammingInterface,應(yīng)用程序編程接口)文檔,供

Java

程序員隨時查閱。API

文檔描述了類庫中的類及其方法的輸入、輸出和功能,程序員依據(jù)文檔直接調(diào)用,無須關(guān)注實現(xiàn)細(xì)節(jié)。在使用

JavaAPI

文檔時,需要注意

API

文檔的版本號要和

JDK

的版本號一致,否則可能出現(xiàn)文檔與實際使用的類庫不一致的情況。7.1JavaAPI及API文檔API

文檔7.2String類String類特性String類表示字符串,Java程序中的所有字符串都作為此類的對象。String類不是基本數(shù)據(jù)類型,它是類,屬于引用類型。所有引用類型對象的初始化默認(rèn)值都是null,所以String類對象的初始化默認(rèn)值也是null。String是一種特殊的對象:

(1)String字符串是常量,字符串的值在創(chuàng)建之后不能更改。

(2)String類是final修飾的最終類,因此不能被繼承。7.2String類String對象創(chuàng)建方式一: Stringname="小桃子"; String

name

=

null;方式二: Stringstr=newString(); Stringstr=newString(參數(shù)列表);云課實驗:

【練一練】String類的基本使用7.2String類常用方法-

返回字符串新對象的方法publicStringconcat(Stringstr):將指定的字符串str連接到此字符串的最后。

用法:"hello".concat("World")-->調(diào)用方法后返回新的字符串對象值為「helloWorld」。publicStringtoUpperCase():將此String中的所有字符都轉(zhuǎn)換為大寫。

用法:"hello".toUpperCase()-->調(diào)用方法后返回新的字符串對象值為「HELLO」。publicStringtoLowerCase():將此String中的所有字符都轉(zhuǎn)換為小寫。

用法:"World".toLowerCase()-->調(diào)用方法后返回新的字符串對象值為「world」。

云課實驗:

【練一練】String類常用方法的基本使用7.2String類常用方法-

返回字符串新對象的方法publicStringreplace(charoldChar,charnewChar):返回一個新的字符串,通過用字符newChar替換此字符串中出現(xiàn)的所有字符oldChar得到的。

用法:"helloworld".replace('l','k')-->調(diào)用方法后返回新的字符串對象值為「hekkoworkd」。public

Sting

replace(CharSequence

target,CharSequence

replacement):返回一個新的字符串,通過用字符串replacement替換此字符串中出現(xiàn)的所有字符串target得到的。

用法:"helloworlld".replace("ll","hi")-->調(diào)用方法后返回新的字符串對象值為「hehioworhid」。??注意:String類方法中的索引都是從0開始編號的。云課實驗:

【練一練】String類常用方法的基本使用7.2String類常用方法-

返回字符串新對象的方法publicStringsubstring(intbeginIndex):返回一個從beginIndex開始到結(jié)尾的新的子字符串。

用法:"helloworld".substring(2)-->調(diào)用方法后返回新的字符串對象值為「lloworld」。publicStringsubstring(intbeginIndex,intendIndex):返回一個從beginIndex開始到endIndex結(jié)尾(不含endIndex所指字符)的新的子字符串。

用法:"helloworld".substring(2,9)-->調(diào)用方法后返回新的字符串對象值為「llowor」。publicStringtrim():返回新的字符串,去掉原字符串中前后的空格。

用法:"

helloworld

".trim()-->調(diào)用方法后返回新的字符串對象值為「helloworld」。

??注意:字符串中間的空格該方法是無法去掉的。云課實驗:

【練一練】String類常用方法的基本使用7.2String類常用方法-

字符串查找方法publicbooleanstartsWith(Stringprefix):判斷此字符串是否以prefix指定的前綴開始。

用法:"helloworld".startsWith("h")-->調(diào)用方法后返回「true」。publicbooleanendsWith(Stringsuffix):判斷此字符串是否以suffix指定的后綴結(jié)束。

用法:"helloworld".endsWith("h")-->調(diào)用方法后返回「false」。publicbooleancontains(CharSequences):當(dāng)前字符串包含指定的字符值序列時,返回true。

用法:"helloworld".contains("h")-->調(diào)用方法后返回「true」。

云課實驗:

【練一練】String類常用方法的基本使用7.2String類常用方法-

字符串查找方法publicintindexOf(intch):返回此字符串中指定字符第一次出現(xiàn)的索引。publicintindexOf(intch,intfromIndex):返回此字符串中指定字符第一次出現(xiàn)的索引,從指定的索引fromIndex處開始搜索。publicintindexOf(Stringstr):返回指定子字符串str在此字符串中第一次出現(xiàn)處的索引。publicintindexOf(Stringstr,intfromIndex):返回指定子字符串str在此字符串中第一次出現(xiàn)處的索引,從指定的索引fromIndex處開始搜索。

用法:

"helloworld".indexOf('l')-->調(diào)用方法后返回「2」。

"helloworld".indexOf('l',4)-->調(diào)用方法后返回「9」。

"helloworld".indexOf("ll")-->調(diào)用方法后返回「2」。

"helloworld".indexOf("ll",4)-->調(diào)用方法后返回「-1」。??注意:使用indexOf進行查找,當(dāng)沒有找到指定的字符或字符串時,返回的索引為-1。云課實驗:

【練一練】String類常用方法的基本使用7.2String類常用方法-

字符串查找方法publicintlastIndexOf(intch):返回此字符串中指定字符最后一次出現(xiàn)的索引。publicintlastIndexOf(intch,intfromIndex):返回此字符串中指定字符最后一次出現(xiàn)的索引,從指定的索引fromIndex處開始搜索。publicintlastIndexOf(Stringstr):返回指定子字符串str在此字符串中最后一次出現(xiàn)處的索引。publicintlastIndexOf(Stringstr,intfromIndex):返回指定子字符串str在此字符串中最后一次出現(xiàn)處的索引,從指定的索引fromIndex處開始搜索。

用法:

"helloworld".lastIndexOf('l')-->調(diào)用方法后返回「9」。

"helloworld".lastIndexOf('l',4)-->調(diào)用方法后返回「3」。

"helloworld".lastIndexOf("ll")-->調(diào)用方法后返回「2」。

"helloworld".lastIndexOf("ll",4)-->調(diào)用方法后返回「2」。

云課實驗:

【練一練】String類常用方法的基本使用7.2String類常用方法-

字符串比較方法publicbooleanequals(ObjectanObject):當(dāng)參數(shù)anObject不為null時,進行String對象字符串值的比較。

用法:"hello".equals("hello")-->調(diào)用方法后返回「true」。

??注意: 1.當(dāng)參數(shù)anObject為null時,不作值比較操作,直接返回false。 2.理解==和equals方法的區(qū)別,對于字符串而言: ==是在比較字符串對象是否指向同一個地址空間;

而equals()

方法是在比較字符串值是否相等。

云課實驗:

【練一練】String類常用方法的基本使用7.2String類常用方法-

字符串比較方法publicbooleanequalsIgnoreCase(Stringanother):將此字符串與另一個字符串a(chǎn)nother值比較,比較時忽略內(nèi)容的大小寫。

用法:"hello".equalsIgnoreCase("Hello")-->調(diào)用方法后返回「true」。publicintcompareTo(StringanotherString):按字典順序比較兩個字符串。

用法:"hello".compareTo("hello")-->調(diào)用方法后返回「0」。

云課實驗:

【練一練】String類常用方法的基本使用7.2String類常用方法-

字符串其他方法publiccharcharAt(intindex):返回index指定的索引處的字符。

用法:"hello".charAt(1)-->調(diào)用方法后返回「e」。publicintlength():返回此字符串的長度。

用法:"hello".length()-->調(diào)用方法后返回「5」。

??注意:這里需要和獲取數(shù)組長度區(qū)別開,獲取數(shù)組長度是通過數(shù)組名.length獲取的。publicstaticStringvalueOf(基本數(shù)據(jù)類型參數(shù)):返回基本數(shù)據(jù)類型參數(shù)的字符串表示形式。

用法:String.valueOf(10)-->調(diào)用方法后返回「10」,輸出的10是字符串而不再是整型數(shù)值。

云課實驗:

【練一練】String類常用方法的基本使用云課挑戰(zhàn)統(tǒng)計子串出現(xiàn)的次數(shù)完成7.2小節(jié)下【試一試】統(tǒng)計子串出現(xiàn)的次數(shù)。問題解答學(xué)生共性問題解答7.3

StringBuffer與StringBuilder

字符串緩存的介紹字符串的值在創(chuàng)建之后不能更改。我們平時“改變”字符串值的方式,其實是先產(chǎn)生新的字符串,然后將原引用指向新的字符串,這樣看起來就像改變了字符串一樣。顯然,如果需要頻繁修改字符串的值,使用

String就顯得低效了。因此我們需要引申出“字符串緩存”進行字符串處理。所謂緩存,就在一個臨時空間,可以將需要頻繁處理的數(shù)據(jù)暫存在該空間中,這個空間也可以叫做緩沖區(qū)。JavaAPI中提供了String緩沖區(qū),就是StringBuffer和StringBuilder類來進行字符串緩存處理,解決字符串頻繁修改所帶來的問題。7.3

StringBuffer與StringBuilder

StringBuffer的創(chuàng)建常用的構(gòu)造方法:public

StringBuffer():構(gòu)造一個空白的字符串緩沖區(qū),其初始容量為16個字符。public

StringBuffer(String

str):構(gòu)造一個字符串緩沖區(qū),并將其內(nèi)容初始化為指定的字符串內(nèi)容。

用法: StringBufferbuffer1=newStringBuffer(); StringBufferbuffer2=newStringBuffer("小桃子");云課實驗:

【練一練】字符串緩存的基本使用7.3

StringBuffer與StringBuilder

StringBuffer常用方法public

StringBuffer

append(各種數(shù)據(jù)類型):進行數(shù)據(jù)追加操作,可以追加各種類型的數(shù)據(jù),返回當(dāng)前調(diào)用者StringBuffer對象信息。

用法:buffer1.append(true)-->調(diào)用方法后,打印buffer1對象,輸出「true」。??注意:append追加的數(shù)據(jù),一定是放在當(dāng)前字符串緩沖區(qū)中已存在數(shù)據(jù)的最后。public

StringBuffer

insert(int

offset,各種數(shù)據(jù)類型):添加數(shù)據(jù),可以指定位置來進行各種類型數(shù)據(jù)的添加,返回當(dāng)前調(diào)用者StringBuffer對象信息。

用法:buffer1.insert(2,123.36)-->調(diào)用方法后,打印buffer1對象,輸出「tr123.36ue」。??注意:insert方法添加各種類型數(shù)據(jù),必須指定需要插入數(shù)據(jù)的位置。云課實驗:

【練一練】字符串緩存的基本使用7.3

StringBuffer與StringBuilder

StringBuffer常用方法public

StringBuffer

delete(int

start,int

end):清除緩存中的數(shù)據(jù),返回當(dāng)前調(diào)用者StringBuffer對象信息。

用法:buffer1.delete(2,8)-->調(diào)用方法后,打印buffer1對象,輸出「true」。??注意:delete方法清除指定位置的數(shù)據(jù),start是開始索引(包含在內(nèi)),end是結(jié)束索引(不包含在內(nèi))。public

StringBuffer

reverse():使此字符序列替換為序列的相反方向。

用法:buffer1.reverse()-->調(diào)用方法后,打印buffer1對象,輸出「eurt」。云課實驗:

【練一練】字符串緩存的基本使用7.3

StringBuffer與StringBuilder

String、StringBuffer和StringBuilder區(qū)別String、StringBuffer和StringBuilder類都是在對字符串進行操作,但StringBuffer和StringBuilder類的對象能夠被多次的修改,并且不產(chǎn)生新的未使用對象。區(qū)別在于:進行簡單字符串處理,建議使用String。頻繁進行字符串連接操作,但數(shù)據(jù)量不大的情況下,建議使用StringBuffer。在數(shù)據(jù)量比較大的情況下,進行字符串操作,建議使用StringBuilder。StringBuffer類線程安全的,StringBuilder類非線程安全的。云課實驗:

【練一練】字符串緩存的基本使用云課挑戰(zhàn)實現(xiàn)英文單詞的翻轉(zhuǎn)完成7.3小節(jié)下【試一試】實現(xiàn)英文單詞的翻轉(zhuǎn)。問題解答學(xué)生共性問題解答7.4正則表達式Java自帶正則表達式正則表達式regularexpression,簡稱regex。由一些字母、字符以及特殊字符組成的字符串,通過該字符串去匹配一些子串,或是搜索子串,或是替換子串,來完成一系列的操作。JDKAPI中java.util.regex包,提供了Java自帶的正則表達式的接口、類和異常類。接口:MatchResult類:Pattern和Matcher異常:PatternSyntaxException云課實驗:正則表達式的使用7.4正則表達式Java自帶正則表達式正則中的保留字符:云課實驗:正則表達式的使用保留字符說明()把圓括號內(nèi)外的表達式區(qū)分開。[]方括號內(nèi)的字符之間是“或”的關(guān)系。{}花括號內(nèi)填寫的數(shù)字,表示表達式匹配的次數(shù)。|對豎線前后字符做“或”運算。-橫線前后的字符,表示兩個字符之間的所有連續(xù)字符。\反斜杠對保留字符做轉(zhuǎn)義,保留自身符號。7.4正則表達式Java自帶正則表達式常用的表達式規(guī)則:云課實驗:正則表達式的使用匹配符說明[abc]包含字母a或b或c。[^abc]不包含字母a或b或c的其他字母。[a-zA-Z]包含字母a-z和A-Z范圍內(nèi)的。[0-9]包含0-9數(shù)字的。.表示任意字符(除換行符\n外)。\d等價于[0-9]。\s表示任意空白符,等價于[\t\n\x0B\f\r]這些符號。\S表示除空白符以外的所有字符。\w等價于[a-zA-Z_0-9]。7.4正則表達式Java自帶正則表達式限定符說明:云課實驗:正則表達式的使用符號說明?是否出現(xiàn)。*出現(xiàn)0或多次。+出現(xiàn)1或多次。{n}n表示出現(xiàn)的次數(shù),表達式出現(xiàn)n次。{n,}表達式至少出現(xiàn)n次。{n,m}表達式至少出現(xiàn)n次,最多出現(xiàn)m次。7.4正則表達式Java自帶正則表達式Pattern類沒有提供構(gòu)造方法,需要通過該類中的靜態(tài)方法獲取Pattern類的實例對象。publicstaticPatterncompile(Stringregex)

將給定的正則表達式編譯為指定模式。publicstaticPatterncompile(Stringregex,intflags)

將給定的正則表達式編譯為具有給定標(biāo)志的模式。flags是Pattern類中給出的一些常量值。獲取

Matcher類實例方法:publicMatchermatcher(CharSequenceinput)

該方法不是靜態(tài)方法,必須先獲取到Pattern實例后,才能調(diào)用。云課實驗:正則表達式的使用7.4正則表達式Java自帶正則表達式Matcher類中常用的匹配方法:云課實驗:正則表達式的使用方法說明publicbooleanmatches()提供的正則表達式完成匹配時返回true,否則返回false。publicbooleanfind()提供的正則表達式只要有部分匹配就返回true。publicStringgroup()提取匹配的子串信息。publicintstart()返回匹配子串的開始索引。publicintend()返回匹配子串的結(jié)束索引。7.4正則表達式字符串的匹配、查找、替換和分割正則表達式是匹配字符串的一類邏輯式,通過代表特定含義的保留字符,能夠描述符合規(guī)則的一組字符串,在字符串中運用正則表達式常用于字符串的分割與匹配校驗。String類中提供需要使用正則表達式的方法:云課實驗:正則表達式的使用方法說明publicbooleanmatches(Stringregex)根據(jù)regex進行匹配,能匹配返回true,否則返回false。publicStringreplaceFirst(Stringregex,Stringreplacement)根據(jù)regex進行查找,找到后進行替換第一個匹配的字符串。publicStringreplaceAll(Stringregex,Stringreplacement)根據(jù)regex進行查找,找到后進行替換全部匹配的字符串。publicString[]split(Stringregex)根據(jù)regex分割字符串,將分割后的數(shù)據(jù)存儲在String數(shù)組中。7.4正則表達式字符串的匹配、查找、替換和分割效率較高的字符串分割處理,可以通過StringTikenizer類。StringTokenizer類中空格是默認(rèn)分割符: StringTokenizerst=newStringTokenizer("thisisastring");如果是其他的分割符,則需要指定: StringTokenizerst=newStringTokenizer("this|is|a|string","|");

StringTokenizerst=newStringTokenizer("this,is,a,string",",");通過類中的hasMoreTokens()方法進行判斷是否還有數(shù)據(jù),nextToken()方法進行數(shù)據(jù)信息提取。云課實驗:正則表達式的使用云課挑戰(zhàn)實現(xiàn)字符串分割完成7.4小節(jié)下【試一試】實現(xiàn)字符串分割編寫Java應(yīng)用程序,實現(xiàn)如下效果即可。問題解答學(xué)生共性問題解答7.5其他工具類日期工具類最早出現(xiàn)在Java中的日期類工具是Date類。構(gòu)造方法:public

Date()

獲取當(dāng)前系統(tǒng)時間,默認(rèn)情況下是世界標(biāo)準(zhǔn)時間。 Dated=newDate();??注意:使用Date類需要通過importjava.util.Date導(dǎo)入,才可以使用。Date類中有好多的方法已過時,使用前一定要仔細(xì)查看API。云課實驗:

【練一練】DateFormate的基本使用7.5其他工具類DateFormat日期格式化工具DateFormat類是一個抽象類,提供了一系列的方法來獲取DateFormat類的對象實例。DateFormat.getDateInstance()DateFormat.getDateInstance(intdateStyle)DateFormat.getTimeInstance()DateFormat.getTimeInstance(inttimeStyle)DateFormat.getDateTimeInstance()DateFormat.getDateTimeInstance(intdateStyle,inttimeStyle)格式化方法: publicfinalStringformat(Datedate):將日期格式化為日期/時間字符串。云課實驗:

【練一練】DateFormate的基本使用7.5其他工具類DateFormat日期格式化工具提供樣式如下:常量值樣式說明DateFormat.FULL全型,2021年8月11日星期三上午05時50分24秒UTCDateFormat.LONG長型,2021年8月11日上午05時50分24秒DateFormat.MEDIUM中型,2021-8-115:50:24DateFormat.SHORT短型,21-8-11上午5:50DateFormat.DEFAULT默認(rèn)型,2021-8-115:50:24云課實驗:

【練一練】DateFormate的基本使用7.5其他工具類SimpleDateFormat日期格式化工具類SimpleDateFormat簡化了日期和時間的格式化。常用構(gòu)造方法:

public

SimpleDateFormat(String

pattern)

用法: newSimplateDateFormat("yyyy-MM-dd").format(newDate());云課實驗:

【練一練】DateFormate的基本使用7.5其他工具類SimpleDateFormat日期格式化工具類模板樣式??云課實驗:

【練一練】DateFormate的基本使用7.5其他工具類SimpleDateFormat日期格式化工具類日期模板示例:云課實驗:

【練一練】DateFormate的基本使用問題解答學(xué)生共性問題解答7.5其他工具類本地日期時間工具類全新的本地日期時間類型,不單單是一種類型,而是一個家族。分別有LocalDate、LocalTime和LocalDateTime類。它們都是在java.time包中,需要導(dǎo)入才能使用。本地日期時間類型工具中常用的3個類都是被final修飾的,不能被繼承。類中沒有提供相應(yīng)的構(gòu)造方法,需要通過now()和of()方法獲取相應(yīng)的實例。

云課實驗:

【練一練】JDK8新日期時間類型使用7.5其他工具類本地日期工具類-

LocalDate獲取本地日期類型對象實例,主要有兩種方式:publicstaticLocalDatenow():從默認(rèn)的系統(tǒng)時間中獲取當(dāng)前日期。

用法:LocalDate.now()-->返回當(dāng)前系統(tǒng)日期,顯示格式為2021-08-13publicstaticLocalDat

溫馨提示

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

評論

0/150

提交評論