版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、讓IT教學更簡單,讓IT學習更有效讓IT教學更簡單,讓IT學習更有效第五章 數(shù)組、字符串及容器類String類和StringBuffer類System類和Runtime類Math類和Random類包裝類Date類、Calendar類和DateFormat類讓IT教學更簡單,讓IT學習更有效 目錄5.35.35.3 foreach語句語句5.55.5java.util.Arrays類類5.15.1一維數(shù)組一維數(shù)組5.25.2多維數(shù)組多維數(shù)組5.45.4數(shù)組的運用數(shù)組的運用5.65.65.75.7容器容器字符串字符串讓IT教學更簡單,讓IT學習更有效 數(shù)組是指一組數(shù)據(jù)的集合,數(shù)組中的每個數(shù)據(jù)被稱作
2、元素。在數(shù)組中可以存放恣意類型的元素,但同一個數(shù)組里存放的元素類型必需一致。 數(shù)組變量屬援用類型,數(shù)組也可以看成是對象,數(shù)組中的每 個元素相當于該對象的成員變量。 數(shù)組中的元素可以是可以任何數(shù)據(jù)類型,包括根本類型和引 用類型。5.1 一維數(shù)組讓IT教學更簡單,讓IT學習更有效5.1 一維數(shù)組5.1.1 一維數(shù)組的定義一維數(shù)組的定義在在Java中,可以運用以下格式來定義一個數(shù)組。中,可以運用以下格式來定義一個數(shù)組。上述語句就相當于在內(nèi)存中定義了上述語句就相當于在內(nèi)存中定義了100個個int類型的變量,類型的變量,第一個變量的稱號為第一個變量的稱號為x0,第二個變量的稱號為,第二個變量的稱號為x1
3、,以,以此類推,第此類推,第100個變量的稱號為個變量的稱號為x99,這些變量的初始,這些變量的初始值都是值都是0。讓IT教學更簡單,讓IT學習更有效5.1一維數(shù)組 5.1.1 一維數(shù)組的定義一維數(shù)組的定義 接下來,經(jīng)過兩張內(nèi)存圖來詳細地闡明數(shù)組接下來,經(jīng)過兩張內(nèi)存圖來詳細地闡明數(shù)組在創(chuàng)建過程中內(nèi)存的分配情況。在創(chuàng)建過程中內(nèi)存的分配情況。讓IT教學更簡單,讓IT學習更有效留意:留意: 數(shù)據(jù)類型可以是數(shù)據(jù)類型可以是8種根本數(shù)據(jù)類型,也可以是援用類型種根本數(shù)據(jù)類型,也可以是援用類型 例如:例如:int a; int b; Animal dog; Java言語中聲明數(shù)組時不能指定其長度數(shù)組中元素的個
4、言語中聲明數(shù)組時不能指定其長度數(shù)組中元素的個數(shù),數(shù), int a10; /錯誤錯誤5.1 一維數(shù)組讓IT教學更簡單,讓IT學習更有效留意:元素為援用數(shù)據(jù)類型的數(shù)組中的每一個元素都需求實例化。public class TestArry public static void main(String args) Date days; days = new Date3; for(int i = 0; i 3; i+) daysi = new Date(2019,10,i+1); class Date int year;int month; int day; Date(int y,int m,int d
5、) year = y; month = m; day = d; Days:nullDays:xxxnullnullnullxxxxxxxxx2019101201910220191035.1.1 5.1.1 一維數(shù)組的定義一維數(shù)組的定義-元素為援用數(shù)據(jù)類型的數(shù)組元素為援用數(shù)據(jù)類型的數(shù)組5.1 一維數(shù)組讓IT教學更簡單,讓IT學習更有效5.1 一維數(shù)組 5.1.1 一維數(shù)組的定義一維數(shù)組的定義-默許值默許值讓IT教學更簡單,讓IT學習更有效5.1.2 一維數(shù)組的初始化一維數(shù)組的初始化 Java中數(shù)組的初始化分為兩種方式:靜態(tài)初始化和動態(tài)初始化。 動態(tài)初始化:為數(shù)組元素分配空間和賦值的操作分開進展,
6、例如:5.1 數(shù)組讓IT教學更簡單,讓IT學習更有效5.1 數(shù)組 5.1.1 一維數(shù)組的初始化一維數(shù)組的初始化再例如:再例如:讓IT教學更簡單,讓IT學習更有效5.1 一維數(shù)組 5.1.2 一維數(shù)組的初始化一維數(shù)組的初始化 在初始化數(shù)組時還有一種方式叫做靜態(tài)初始在初始化數(shù)組時還有一種方式叫做靜態(tài)初始化,就是在定義數(shù)組的同時就為數(shù)組的每個化,就是在定義數(shù)組的同時就為數(shù)組的每個元素賦值。數(shù)組的靜態(tài)初始化有兩種方式:元素賦值。數(shù)組的靜態(tài)初始化有兩種方式: 但是為了簡便,建議采用第二種方式。但是為了簡便,建議采用第二種方式。讓IT教學更簡單,讓IT學習更有效5.1 一維數(shù)組 5.1.2 一維數(shù)組的初始
7、化一維數(shù)組的初始化 數(shù)組靜態(tài)初始化的效果:數(shù)組靜態(tài)初始化的效果:讓IT教學更簡單,讓IT學習更有效5.1 一維數(shù)組 5.1.2 一維數(shù)組的初始化一維數(shù)組的初始化 數(shù)組靜態(tài)初始化的效果:數(shù)組靜態(tài)初始化的效果:值得留意的是,例程中的第3行代碼千萬不可寫成int x = new int41,2,3,4;,這樣寫編譯器會報錯。緣由在于編譯器會以為數(shù)組限定的元素個數(shù)4與實踐存儲的元素1,2,3,4個數(shù)有能夠不一致,存在一定的平安隱患。讓IT教學更簡單,讓IT學習更有效腳下留心 1、每個數(shù)組的索引都有一個范圍,即0length-1。在訪問數(shù)組的元素時,索引不能超出這個范圍,否那么程序會報錯:運轉結果中所提
8、示的錯誤信息是數(shù)組越界異常ArrayIndexOutOfBoundsException,出現(xiàn)這個異常的緣由是數(shù)組的長度為4,其索引范圍為03,例程中的第4行代碼運用索引4來訪問元素時超出了數(shù)組的索引范圍。所謂異常指程序中出現(xiàn)的錯誤,它會報告出錯的異常類型、出錯的行號以及出錯的緣由,關于異常在后面的章節(jié)會有詳細地講解。讓IT教學更簡單,讓IT學習更有效腳下留心 2、在運用變量援用一個數(shù)組時,變量必需指向一個有效的數(shù)組對象,假設該變量的值為null,那么意味著沒有指向任何數(shù)組,此時經(jīng)過該變量訪問數(shù)組的元素會出現(xiàn)空指針異常:讓IT教學更簡單,讓IT學習更有效5.1 一維數(shù)組 5.1.3 數(shù)組的常見操
9、作數(shù)組的常見操作 1、一維數(shù)組遍歷、一維數(shù)組遍歷 在操作數(shù)組時,經(jīng)常需求依次訪問數(shù)組中的在操作數(shù)組時,經(jīng)常需求依次訪問數(shù)組中的每個元素,這種操作稱作數(shù)組的遍歷。每個元素,這種操作稱作數(shù)組的遍歷。讓IT教學更簡單,讓IT學習更有效2.8 數(shù)組 2.7.2 數(shù)組的常見操作數(shù)組的常見操作 2、數(shù)組最值、數(shù)組最值 在操作數(shù)組時,經(jīng)常需求獲取數(shù)組中元素的在操作數(shù)組時,經(jīng)常需求獲取數(shù)組中元素的最值。最值。讓IT教學更簡單,讓IT學習更有效5.1一維數(shù)組 5.1.3 數(shù)組的常見操作數(shù)組的常見操作 3、一維數(shù)組排序、一維數(shù)組排序 在操作數(shù)組時,經(jīng)常需求對數(shù)組中元素進展在操作數(shù)組時,經(jīng)常需求對數(shù)組中元素進展排序
10、。排序。 冒泡排序:在排序過程中,不斷地比較數(shù)組冒泡排序:在排序過程中,不斷地比較數(shù)組中相鄰的兩個元素,較小者向上浮,較大者中相鄰的兩個元素,較小者向上浮,較大者往下沉:往下沉: 第一步,從第一個元素開場,將相鄰的兩個元素依次進展比較,直到最后兩個元素完成比較。假設前一個元素比后一個元素大,那么交換它們的位置。整個過程完成后,數(shù)組中最后一個元素自然就是最大值,這樣也就完成了第一輪比較。 第二步,除了最后一個元素,將剩余的元素繼續(xù)進展兩兩比較,過程與第一步類似,這樣就可以將數(shù)組中第二大的數(shù)放在了倒數(shù)第二個位置。 第三步,以此類推,繼續(xù)對越來越少的元素反復上面的步驟,直到?jīng)]有任何一對元素需求比較為
11、止。讓IT教學更簡單,讓IT學習更有效5.1 一維數(shù)組 5.1.3 數(shù)組的常見操作數(shù)組的常見操作 3、數(shù)組排序、數(shù)組排序 在操作數(shù)組時,經(jīng)常需求對數(shù)組中元素進展在操作數(shù)組時,經(jīng)常需求對數(shù)組中元素進展排序。排序。讓IT教學更簡單,讓IT學習更有效5.1 一維數(shù)組 5.1.3 數(shù)組的常見操作數(shù)組的常見操作 3、數(shù)組排序、數(shù)組排序 在操作數(shù)組時,經(jīng)常需求對數(shù)組中元素進展在操作數(shù)組時,經(jīng)常需求對數(shù)組中元素進展排序。排序。bubbleSort ()方法中經(jīng)過一個嵌套for循環(huán)實現(xiàn)了冒泡排序。讓IT教學更簡單,讓IT學習更有效5.1 數(shù)組 5.1.3 數(shù)組的常見操作數(shù)組的常見操作 3、數(shù)組排序、數(shù)組排序
12、在操作數(shù)組時,經(jīng)常需求對數(shù)組中元素進展在操作數(shù)組時,經(jīng)常需求對數(shù)組中元素進展排序。排序。2628行代碼實現(xiàn)了數(shù)組中兩個元素的交換。讓IT教學更簡單,讓IT學習更有效練習題練習題 定義一個對象數(shù)組 Student stus=new Student5;每個元素中存儲學生信息 姓名(String) ,年齡(int),成果(int)然后按成果給這個數(shù)組排序。讓IT教學更簡單,讓IT學習更有效5.2 多維數(shù)組 5.2.1 二維數(shù)組的聲明二維數(shù)組的聲明 多維數(shù)組可以簡單地了解為在數(shù)組中嵌套數(shù)多維數(shù)組可以簡單地了解為在數(shù)組中嵌套數(shù)組。在程序中比較常見的就是二維數(shù)組。二組。在程序中比較常見的就是二維數(shù)組。二維
13、數(shù)組的定義有很多方式:維數(shù)組的定義有很多方式:讓IT教學更簡單,讓IT學習更有效5.2.1 二維數(shù)組的聲明二維數(shù)組的聲明二維數(shù)組可以看成以數(shù)組為元素的數(shù)組。例如:二維數(shù)組可以看成以數(shù)組為元素的數(shù)組。例如:Int a = 1,3,3,5,6,7,2,6,3;Java中多維數(shù)組的聲明和初始化應從最左邊維數(shù)進展,例中多維數(shù)組的聲明和初始化應從最左邊維數(shù)進展,例如:如:int a = new int3;a0 = new int2;a1 = new int3;a2 = new int4;int b = new int3;/非法非法也可以同時指定一切的維數(shù):也可以同時指定一切的維數(shù):int a = new
14、 int35;5.2 多維數(shù)組讓IT教學更簡單,讓IT學習更有效5.2 多維數(shù)組 5.2.1 二維數(shù)組的聲明二維數(shù)組的聲明 所以,二維數(shù)組也可以如下定義:所以,二維數(shù)組也可以如下定義:讓IT教學更簡單,讓IT學習更有效5.2 多維數(shù)組 5.2.2 二維數(shù)組的初始化二維數(shù)組的初始化靜態(tài)初始化:適用于數(shù)組元素個數(shù)較少的情況int intArray=1,2,2,3,3,4;String22 stringArray = “Hello,“world,“java,“test;/錯誤,不能指定維數(shù)。讓IT教學更簡單,讓IT學習更有效動態(tài)初始化:1直接為每一維分配空間,其語法格式為: 數(shù)據(jù)類型 數(shù)組名 = n
15、ew數(shù)據(jù)類型行數(shù)列數(shù); 如: int a= new int34;a:xxx5.2.2 二維數(shù)組的初始化二維數(shù)組的初始化5.2 多維數(shù)組讓IT教學更簡單,讓IT學習更有效AS:xxx再如:String AS = new String34;5.2.2 二維數(shù)組的初始化二維數(shù)組的初始化5.2 多維數(shù)組讓IT教學更簡單,讓IT學習更有效(2) 從最高維開場而且必需從最高維開場,分別為每一維 分配空間,此時二維數(shù)值中每行的元素個數(shù)可以不相等。如:int a = new int3 ;a0= new int2;a1 = new int3; 5.2.2 二維數(shù)組的初始化二維數(shù)組的初始化5.2 多維數(shù)組讓IT教
16、學更簡單,讓IT學習更有效a:xxxint a = new int3 ;a0= new int2; a1 = new int3; 5.2.2 二維數(shù)組的初始化二維數(shù)組的初始化5.2 多維數(shù)組讓IT教學更簡單,讓IT學習更有效例例1:讓IT教學更簡單,讓IT學習更有效統(tǒng)計一個公司三個銷售小組三個季度中每個小組的總銷售額以及整個公司的銷售額。例例2:讓IT教學更簡單,讓IT學習更有效例例3:讓IT教學更簡單,讓IT學習更有效留意:二維數(shù)組名.length方式前往的將是該二維數(shù)值的行數(shù),運用“二維數(shù)組名index1.length前往的是該二維數(shù)組第index1行的元素數(shù)即該行的列數(shù)?!緯?.2】M
17、ultiMatrixDemo.java5.2.3 二維數(shù)組的訪問二維數(shù)組的訪問5.2 多維數(shù)組讓IT教學更簡單,讓IT學習更有效u foreach語句用于循環(huán)遍歷數(shù)組或集合中的各個元素。語法格式為:語法格式為:for(數(shù)據(jù)類型變量數(shù)據(jù)類型變量:數(shù)組集合數(shù)組集合) 如:int intArray = 1,2,3,4,5; /聲明變量 i 的類型要與數(shù)組或集合的數(shù)據(jù)類型一致;for(int i : intArray) /系統(tǒng)自動幫我們完成循環(huán)的循環(huán)條件、迭代語句。 System.out.println(i);5.3 foreach語句讓IT教學更簡單,讓IT學習更有效循環(huán)變量是暫時變量,不是數(shù)組元素
18、,系統(tǒng)會把數(shù)組中的 值依次賦給這個暫時變量。雖然允許為此暫時變量賦值,但是 無法來修正數(shù)組的值,而且極易出錯。5.3 foreach語句【書例5.3】ForeachDemo.java讓IT教學更簡單,讓IT學習更有效5.5 Arrays工具類 java.util包中還提供了一個專門用于操作數(shù)組的工具類Arrays。Arrays工具類提供了大量的靜態(tài)方法。 1、運用Arrays的sort()方法排序 在前面學習數(shù)組時,要想對數(shù)組進展排序就需求自定義一個排序方法,其實也可以運用Arrays工具類中的靜態(tài)方法sort()來實現(xiàn)這個功能,接下來經(jīng)過一個案例來學習sort()方法的運用。讓IT教學更簡單
19、,讓IT學習更有效5.5 Arrays工具類 2、運用、運用Arrays的的binarySearch(Object a, Object key)方法查找元素方法查找元素 程序開發(fā)中,經(jīng)常會在數(shù)組中查找某些特定的元素,假設程序開發(fā)中,經(jīng)常會在數(shù)組中查找某些特定的元素,假設數(shù)組中元素較多時查找某個元素就會非常繁瑣,為此,數(shù)組中元素較多時查找某個元素就會非常繁瑣,為此,Arrays類中提供還了一個方法類中提供還了一個方法binarySearch(Object a, Object key)用于查找元素,接下來經(jīng)過一個案例來學習用于查找元素,接下來經(jīng)過一個案例來學習該方法的運用。該方法的運用。讓IT教學
20、更簡單,讓IT學習更有效5.5 Arrays工具類 2、運用、運用Arrays的的binarySearch(Object a, Object key)方法查找元素方法查找元素 所謂二分法查找就是每次將指定元素和數(shù)組中間位置的元素進展比較,從而排除掉其中的一半元素,這樣的查找是非常高效的。接下來經(jīng)過一個圖例來演示二分法查找元素的過程。讓IT教學更簡單,讓IT學習更有效5.5 Arrays工具類 3、運用、運用Arrays的的copyOfRange(int original, int from, int to)方法拷貝元素方法拷貝元素 在程序開發(fā)中,經(jīng)常需求在不破壞原數(shù)組的情況下運用數(shù)在程序開發(fā)中
21、,經(jīng)常需求在不破壞原數(shù)組的情況下運用數(shù)組中的部分元素,這時可以運用組中的部分元素,這時可以運用Arrays工具類的工具類的copyOfRange(int original,int from,int to)方法將數(shù)組方法將數(shù)組中指定范圍的元素復制到一個新的數(shù)組中,該方法中參數(shù)中指定范圍的元素復制到一個新的數(shù)組中,該方法中參數(shù)original表示被復制的數(shù)組,表示被復制的數(shù)組,from表示被復制元素的初始表示被復制元素的初始索引包括,索引包括,to表示被復制元素的最后索引不包括表示被復制元素的最后索引不包括,接下來經(jīng)過一個案例來學習如何拷貝數(shù)組。,接下來經(jīng)過一個案例來學習如何拷貝數(shù)組。讓IT教學更
22、簡單,讓IT學習更有效5.5 Arrays工具類 4運用運用Arrays的的fill(Object a, Object val)方法填充元方法填充元素素 程序開發(fā)中,經(jīng)常需求用一個值交換數(shù)組中的一切元素,程序開發(fā)中,經(jīng)常需求用一個值交換數(shù)組中的一切元素,這時可以運用這時可以運用Array的的fill(Object a, Object val)方法,方法,該方法可以將指定的值賦給數(shù)組中的每一個元素,接下來該方法可以將指定的值賦給數(shù)組中的每一個元素,接下來經(jīng)過一個案例來演示如何填充元素。經(jīng)過一個案例來演示如何填充元素。讓IT教學更簡單,讓IT學習更有效5.5 Arrays工具類 5運用運用Arra
23、ys的的toString(int arr)方法把數(shù)組轉換為字方法把數(shù)組轉換為字符串符串 在程序開發(fā)中,經(jīng)常需求把數(shù)組以字符串的方式輸出,這在程序開發(fā)中,經(jīng)常需求把數(shù)組以字符串的方式輸出,這時就可以運用時就可以運用Arrays工具類的另一個方法工具類的另一個方法toString(int arr)。需求留意的是,該方法并不是對。需求留意的是,該方法并不是對Object類類toString()方法的重寫,只是用于前往指定數(shù)組的字符串方法的重寫,只是用于前往指定數(shù)組的字符串方式,接下來經(jīng)過一個案例來演示如何將數(shù)組轉換為字符方式,接下來經(jīng)過一個案例來演示如何將數(shù)組轉換為字符串。串。讓IT教學更簡單,讓I
24、T學習更有效練習:練習:給定數(shù)組9,3,5,6,2,11,5,6,進展如下操作1排序,并輸出排序后的結果2再定義一個數(shù)組9,3,5,6,2,11,5,6 ,比較這兩個數(shù)組能否一樣。3查找數(shù)字5,并前往其下標4運用數(shù)字8填充數(shù)組中的第3-5元素,并輸出結果。5拷貝數(shù)組中的前5個值到另外一個數(shù)組。并輸出該數(shù)組中的值。讓IT教學更簡單,讓IT學習更有效5.5 Arrays工具類 留意:留意: Arrays類為我們提供了大量操作數(shù)組的方法,實踐工程開類為我們提供了大量操作數(shù)組的方法,實踐工程開發(fā)中,引薦運用發(fā)中,引薦運用Arrays類的靜態(tài)方法來完成數(shù)組的操作,類的靜態(tài)方法來完成數(shù)組的操作,這樣既快捷
25、又不會發(fā)生錯誤,但是面試的時候,假設出現(xiàn)這樣既快捷又不會發(fā)生錯誤,但是面試的時候,假設出現(xiàn)對數(shù)組操作的標題,就絕不允許是用對數(shù)組操作的標題,就絕不允許是用Arrays類提供的方法類提供的方法,由于面試官調(diào)查的是我們對數(shù)組的操作才干,而不是對,由于面試官調(diào)查的是我們對數(shù)組的操作才干,而不是對Arrays類的運用。類的運用。讓IT教學更簡單,讓IT學習更有效u 字符串是字符的序列,它是組織字符的根本數(shù)據(jù)構造, 從 u 某種程度上來說有些類似于字符的數(shù)組。u 在Java中,字符串被當作對象來處置。u 程序中需求用到的字符串可以分為兩大類,一類是創(chuàng)建之后不會再做修正和變動的字符串常量;另一類是創(chuàng)建之后
26、允許再做更改和變化的字符串變量。u 在Java中,存放字符串常量的對象用String類,對于字符串變量,由于程序中經(jīng)常需求對它做添加,插入,修正等操作,普通存放在StringBuffer類的對象中。它們都位于java.lang包中,因此不需求導包就可以直接運用。5.6 字符串讓IT教學更簡單,讓IT學習更有效String字符串常量運用雙引號括住的一串字符,比如:字符串常量運用雙引號括住的一串字符,比如: Hello world! Java編譯器自動為每一個字符串常量生成一個編譯器自動為每一個字符串常量生成一個String類的實例,因此可以用字符串類的實例,因此可以用字符串常量直接初始化一個常量
27、直接初始化一個String對象,如:對象,如: String s=Hello world! ;5.6 字符串讓IT教學更簡單,讓IT學習更有效要創(chuàng)建類String的一個對象并進展初始化,需求調(diào)用類String的構造方法。類String中提供了下面的一些構造方法:String( ):無參數(shù)的缺省的構造方法用來創(chuàng)建一個空串。 String s = new String( ); String( String value):利用曾經(jīng)存在的字符串常量創(chuàng)建一個新的String對象,該對象的內(nèi)容與給出的字符串常量一致。 String s=new String(“hello);String( char val
28、ue ):經(jīng)過給構造方法傳送一個字符數(shù)組可以創(chuàng)建一個非空串。char chars = a , b , c ; String s = new String( chars ) ; String5.6 字符串讓IT教學更簡單,讓IT學習更有效String( char , int startIndex, int numChars ):這種方法用來創(chuàng)建一個非空串,并且指明所創(chuàng)建的字符串在字符數(shù)組中的起始地址以及所包含的字符個數(shù)。char chars = a , b , c , d , e , f ;String s = new String ( chars , 2 , 3 ); 該方法生成的串s為“cd
29、e。(留意數(shù)組的下標從0開場)String5.6 字符串讓IT教學更簡單,讓IT學習更有效String( byte mybyte):從byte型數(shù)組進展初始化的構造方法。byte mybyte = 97 , 98 , 99 ; String s = new String( mybyte);該方法構造的字符串s是“abc。String(StringBuffer buffer):這個構造函數(shù)利用一個曾經(jīng)存在的StringBuffer對象為新建的String對象初始化。String5.6 字符串讓IT教學更簡單,讓IT學習更有效 1. length public int length( ) 此方法前
30、往字符串的字符個數(shù),如:String s = abc; System.out.println( s.length( ) ); 那么將顯示字符個數(shù)為3。StringString根本方法根本方法5.6 字符串讓IT教學更簡單,讓IT學習更有效2. charAt public char charAt (int index )該方法前往字符串中index位置上的字符。String s1 = here it is; System.out.println(s1.charAt(3);運轉結果:e3. getCharspublic void getchars (int srcbegin,int end,cha
31、r buf,int dstbegin)將字符從此字符串復制到目的字符數(shù)組。StringString根本方法根本方法5.6 字符串讓IT教學更簡單,讓IT學習更有效4. indexOf和lastIndexOf int indexOf ( int ch) int lastIndexOf ( int ch) 前往字符ch在字符串中出現(xiàn)的第一個和最后一個位置。String s1 = I am a student;System.out.println(s1.indexOf(a); /或aSystem.out.println(s1.lastIndexOf(a); 運轉結果:2 5StringString根
32、本方法根本方法5.6 字符串讓IT教學更簡單,讓IT學習更有效int indexOf(String str)int lastindexOf(String str)前往子串str中第一個字符在字符串中出現(xiàn)的始末位置。int indexOf ( int ch, int fromIndex) int lastIndexOf ( int ch, int fromIndex)前往字符ch在字符串中位置fromIndex以后出現(xiàn)的始末位置。int indexOf (String str,int fromIndex) int lastIndexOf (String str , int fromIndex)前
33、往子串str中的第一個字符在字符串中位置fromIndex以后出現(xiàn)的始末位置。StringString根本方法根本方法5.6 字符串讓IT教學更簡單,讓IT學習更有效5. public boolean startsWith(Stringprefix) public boolean startsWith(String prefix,int toffset) 測試字符串能否以指定前綴開場。第二個重載函數(shù)是以 指定索引開場,如字符串以prefix為前綴前往true,否那么 前往false public boolean endsWith(String suffix) 測試該字符串能否以suffix后綴
34、終了,如是前往true,否 那么前往falseString s1 = I am a student;System.out.println(s1.startsWith(I);System.out.println(s1.endsWith(student);運轉結果:true trueStringString根本方法根本方法5.6 字符串讓IT教學更簡單,讓IT學習更有效6. 在Java中,運算符“可以用來實現(xiàn)字符串的銜接,如:String s = “He is + age + “years old.假設整數(shù)型變量age的值為15,那么,s的值為“He is 15 yearsOld。7. compa
35、reTopublic int compareTo ( String str ) 該方法按字典次序比較兩個字符串的大小,假設源串較小,那么前往一個小于0的值,如相等那么前往0,否那么前往一個大于0的值。StringString根本方法根本方法5.6 字符串讓IT教學更簡單,讓IT學習更有效8. regionMatchesboolean regionMatches( int toffset , String other , int ooffset , int len ) boolean regionMatches( boolean ignoreCase , int toffset , String
36、 other , int ooffset , int len ) 上述兩個方法都是用來進展方式匹配的,匹配勝利那么前往true,否那么前往false。其中,toffset和ooffset分別指明當前字符串和參數(shù)字符串中所要比較的子串的起始索引位置,len指明比較的長度,而ignoreCase指明比較時能否區(qū)分大小寫。對于第一種方法,比較是區(qū)分大小寫的。StringString根本方法根本方法5.6 字符串讓IT教學更簡單,讓IT學習更有效例如:String s4 = tsinghua; String s5 = it is TsingHua; System.out.println(s4.regi
37、onMatches(0,s5,6,7);System.out.println(s4.regionMatches(true,0,s5,6,7);StringString根本方法根本方法5.6 字符串讓IT教學更簡單,讓IT學習更有效 9. equals和equalsIgnoreCasepublic boolean equals( object str) public boolean equalsIgnoreCase( object str )判別兩個字符串能否相等,那么可以用此方法。相等那么前往 true,不等那么前往false,兩種方法的區(qū)別在于 equalsIgnoreCase不區(qū)分字母大小
38、寫,而equals那么須區(qū)分。10.其他方法public String replace(char oldChar,char newChar)將串中出現(xiàn)的特定字符用新的字符替代。StringString根本方法根本方法5.6 字符串讓IT教學更簡單,讓IT學習更有效public String substring(int beginIndex)public String substring(int beginIndex)The substring begins with the character at the The substring begins with the character at
39、the specified index and extends to the end of this string. specified index and extends to the end of this string. public String substring(int beginIndex,int endIndex)public String substring(int beginIndex,int endIndex)returns a new string that is a substring of this string. returns a new string that
40、 is a substring of this string. The substring begins at the specified beginIndex The substring begins at the specified beginIndex and extends to the character at index endIndex - 1.and extends to the character at index endIndex - 1.StringString根本方法根本方法5.6 字符串讓IT教學更簡單,讓IT學習更有效public String toLowerCas
41、e()把串中的一切字符轉換成小寫public String toUpperCase()把串中的一切字符轉換成大寫public String trim()去除字符串兩端的空白public char toCharArray()前往字符串的字符數(shù)組方式StringString根本方法根本方法5.6 字符串讓IT教學更簡單,讓IT學習更有效 String s1 = henan university;String s2 = s1.toUpperCase();System.out.println(s2);System.out.println(s2.toLowerCase();String s3 = zha
42、nglin 1987 ;System.out.println(s3.trim();char s4 = s3.toCharArray();System.out.println(Arrays.toString(s3.toCharArray();System.out.println(s3.length(); /s4.lengthSystem.out.println(s1.equals(s2);System.out.println(s3.replace(zhanglin,zhaojing);System.out.println(s1.substring(2,8); /包括beginIndex,不包括e
43、ndIndexHENAN UNIVERSITYhenan universityzhanglin 1987 , z, h, a, n, g, l, i, n, , 1, 9, 8, 7, 15 false zhaojing 1987 nan un讓IT教學更簡單,讓IT學習更有效public String concat(String str);將當前字符串對象與給定的字符串str銜接起來。public String split(String regex)將字符串根據(jù)給定的正那么表達式進展拆分,舉例如下:The string boo:and:foo, for example, yields the
44、 following results with these expressions: Regex Result : boo, and, foo o b, , :and:f public static String valueOf(type types)該前往types的字符串方式StringString根本方法根本方法5.6 字符串讓IT教學更簡單,讓IT學習更有效public static void main(String args) String str = cares.concat(s); String St = to.concat(get).concat(her); System.ou
45、t.println(str+ + St); int t = 341435; float f = 23.4f; String sNumber = String.valueOf(t);System.out.println(String.valueOf(f)+“,t的位數(shù) +sNumber.length(); String S = boo:is:foo; String sPlit = S.split(:); for(int i = 0 ; i sPlit.length;i+) System.out.println(sPliti); 讓IT教學更簡單,讓IT學習更有效String name = ray
46、“; name.concatlong“; /字符串銜接System.out.printlnname; /輸出name,還是ray“name = name.concatlong“; /把字符串對象銜接的結果賦給了name援用System.out.printlnname; /輸出name,oh!,變成了raylong“分析輸出結果分析輸出結果讓IT教學更簡單,讓IT學習更有效腳下留心 String字符串在獲取某個字符時,會用到字符的索引,當訪問字符串中的字符時,假設字符的索引不存在,那么會發(fā)生StringIndexOutOfBoundsException字符串角標越界異??梢钥闯?,訪問字符串中的字
47、符時,不能超出字符的索引范圍,否那么會出可以看出,訪問字符串中的字符時,不能超出字符的索引范圍,否那么會出現(xiàn)異常,這與數(shù)組中的角標越界異常非常類似?,F(xiàn)異常,這與數(shù)組中的角標越界異常非常類似。讓IT教學更簡單,讓IT學習更有效1給定字符串“abcde,將該字符串轉換為字符數(shù)組,并將其輸出,輸出的格式為:a,b,c,d,e.2給定字符串“籃球-足球-乒乓球,將字符串進展分割,最后得到輸出格式為:籃球,足球,乒乓球。3對給定的10個國家名,按其字母的順序輸出。 4求輸入英文句子單詞的平均長度。 5從文件途徑中提取出文件名(包含后綴) 。比如從c:ab.txt中提取出b.txt這個文件名出來。練習題練
48、習題讓IT教學更簡單,讓IT學習更有效 5.6.2 StringBuffer類類 為了便于對字符串的修正,在為了便于對字符串的修正,在JDK中提供了一個中提供了一個StringBuffer類也稱字符串緩沖區(qū)。類也稱字符串緩沖區(qū)。StringBuffer類和類和String類最大的區(qū)別在于它的內(nèi)容和長度都是可以改動的類最大的區(qū)別在于它的內(nèi)容和長度都是可以改動的。StringBuffer類似一個字符容器,當在其中添加或刪除字類似一個字符容器,當在其中添加或刪除字符時,并不會產(chǎn)生新的符時,并不會產(chǎn)生新的StringBuffer對象。對象。5.6 字符串字符串StringBuffer讓IT教學更簡單,
49、讓IT學習更有效5.6 字符串 5.6.2 StringBuffer類類例程中涉及到例程中涉及到StringBuffer類的很多方法,其中類的很多方法,其中append()和和insert()方法是方法是最常用的,并且這兩個方法有很多重載方式,它們都用于添加字符。不同的最常用的,并且這兩個方法有很多重載方式,它們都用于添加字符。不同的是,是,append()方法一直將這些字符添加到緩沖區(qū)的末尾,而方法一直將這些字符添加到緩沖區(qū)的末尾,而insert()方法那方法那么可以在指定的位置添加字符。么可以在指定的位置添加字符。讓IT教學更簡單,讓IT學習更有效 5.6.2 StringBuffer類類
50、 StringBuffer類和類和String類有很多類似之處,初學者運用時類有很多類似之處,初學者運用時容易混淆。容易混淆。 1、String類表示的字符串是常量,一旦創(chuàng)建后,內(nèi)容和長度類表示的字符串是常量,一旦創(chuàng)建后,內(nèi)容和長度都是無法改動的。都是無法改動的。StringBuffer表示字符容器,其內(nèi)容和長表示字符容器,其內(nèi)容和長度都可以隨時修正。在操作字符串時,假設該字符串僅用于度都可以隨時修正。在操作字符串時,假設該字符串僅用于表示數(shù)據(jù)類型,那么運用表示數(shù)據(jù)類型,那么運用String類即可,但是假設需求對字類即可,但是假設需求對字符串中的字符進展增刪操作,那么運用符串中的字符進展增刪操
51、作,那么運用StringBuffer類。類。 2、String類覆蓋了類覆蓋了Object類的類的equals()方法,而方法,而StringBuffer類沒有覆蓋類沒有覆蓋Object類的類的equals()方法方法 3、String類對象可以用操作符類對象可以用操作符“+進展銜接,而進展銜接,而StringBuffer類對象之間不能類對象之間不能5.6 字符串讓IT教學更簡單,讓IT學習更有效常用類一: System類與 Runtime類 1、System類類 System類對大家來說并不陌生,由于之前在打印結果時類對大家來說并不陌生,由于之前在打印結果時,運用的都是,運用的都是“Syst
52、em.out.println()語句。這句代碼中語句。這句代碼中就運用了就運用了System類。類。 System類定義了一些與系統(tǒng)相關的屬性和方法,它所提類定義了一些與系統(tǒng)相關的屬性和方法,它所提供的屬性和方法都是靜態(tài)的,因此,想要援用這些屬性和供的屬性和方法都是靜態(tài)的,因此,想要援用這些屬性和方法,直接運用方法,直接運用System類調(diào)用即可。類調(diào)用即可。讓IT教學更簡單,讓IT學習更有效 1、 System類類 1getProperties()方法方法 System類的類的getProperties()方法用于獲取當前系方法用于獲取當前系統(tǒng)的全部屬性,該方法會前往一個統(tǒng)的全部屬性,該方法
53、會前往一個Properties對象,其中對象,其中封裝了系統(tǒng)的一切屬性,這些屬性是以鍵值對的方式存在封裝了系統(tǒng)的一切屬性,這些屬性是以鍵值對的方式存在常用類一: System類 與Runtime類讓IT教學更簡單,讓IT學習更有效 1、 System類類 2currentTimeMillis() currentTimeMillis()方法前往一個方法前往一個long類型的值類型的值,該值表示當前時間與,該值表示當前時間與1970年年1月月1日日0點點0分分0秒之間的時秒之間的時間差,單位是毫秒,習慣性地被稱作時間戳。間差,單位是毫秒,習慣性地被稱作時間戳。例程例程6-10中,演示了數(shù)字的求和操
54、作,程序在求和開場和終了時,分別調(diào)用中,演示了數(shù)字的求和操作,程序在求和開場和終了時,分別調(diào)用了了currentTimeMillis()方法分別獲得了兩個時間戳,兩個時間戳之間的差值方法分別獲得了兩個時間戳,兩個時間戳之間的差值便是求和操作耗費的時間。便是求和操作耗費的時間。常用類一: System類 與Runtime類讓IT教學更簡單,讓IT學習更有效 1、System類類 3arraycopy(Object src,int srcPos,Object dest,int destPos,int length) arraycopy()方法用于將一個數(shù)組中的元素快速拷方法用于將一個數(shù)組中的元素快
55、速拷貝到另一個數(shù)組。其中的參數(shù)詳細作用如下:貝到另一個數(shù)組。其中的參數(shù)詳細作用如下: src:表示源數(shù)組:表示源數(shù)組 dest:表示目的數(shù)組:表示目的數(shù)組 srcPos:表示源數(shù)組中拷貝元素的起始位置:表示源數(shù)組中拷貝元素的起始位置 destPos:表示拷貝到目的數(shù)組的起始位置:表示拷貝到目的數(shù)組的起始位置 length:表示拷貝元素的個數(shù):表示拷貝元素的個數(shù) 需求留意的是,在進展數(shù)組復制時,目的數(shù)組必需有需求留意的是,在進展數(shù)組復制時,目的數(shù)組必需有足夠的空間來存放拷貝的元素,否那么會發(fā)生角標越界異足夠的空間來存放拷貝的元素,否那么會發(fā)生角標越界異常。常。常用類一: System類 與Run
56、time類讓IT教學更簡單,讓IT學習更有效 1、 System類類 3arraycopy(Object src,int srcPos,Object dest,int destPos,int length) 例程例程6-11中,創(chuàng)建了兩個數(shù)組中,創(chuàng)建了兩個數(shù)組fromArray和和toArray,分別代表源數(shù)組和目的,分別代表源數(shù)組和目的數(shù)組,當調(diào)用數(shù)組,當調(diào)用arraycopy()方法進展元素拷貝時,由于指定了從源數(shù)組中索方法進展元素拷貝時,由于指定了從源數(shù)組中索引為引為2的元素開場拷貝,并且拷貝的元素開場拷貝,并且拷貝4個元素存放在目的數(shù)組中索引為個元素存放在目的數(shù)組中索引為3的位置的位置
57、,因此,在打印目的數(shù)組的元素時,程序首先打印的是數(shù)組,因此,在打印目的數(shù)組的元素時,程序首先打印的是數(shù)組toArray的前三的前三個元素個元素201、202、203,然后打印的是從,然后打印的是從fromArray中拷貝的四個元素。中拷貝的四個元素。常用類一: System類 與Runtime類讓IT教學更簡單,讓IT學習更有效 2、 Runtime類類 Runtime類用于表示虛擬機運轉時的形狀,它用于封裝類用于表示虛擬機運轉時的形狀,它用于封裝JVM虛擬機進程。每次運用虛擬機進程。每次運用java命令啟動虛擬機都對應一命令啟動虛擬機都對應一個個Runtime實例,并且只需一個實例,因此該類
58、采用單例實例,并且只需一個實例,因此該類采用單例方式進展設計,對象不可以直接實例化。假想象在程序中方式進展設計,對象不可以直接實例化。假想象在程序中獲得一個獲得一個Runtime實例,只能經(jīng)過以下方式:實例,只能經(jīng)過以下方式: 由于由于Runtime類封裝了虛擬機進程,因此,在程序中通常類封裝了虛擬機進程,因此,在程序中通常會經(jīng)過該類的實例對象來獲取當前虛擬機的相關信息。會經(jīng)過該類的實例對象來獲取當前虛擬機的相關信息。常用類一: System類 與Runtime類讓IT教學更簡單,讓IT學習更有效 2、Runtime類類 例程例程6-12中,經(jīng)過中,經(jīng)過“Runtime.getRuntime(
59、)方式創(chuàng)建了一個方式創(chuàng)建了一個Runtime的實的實例對象,并分別調(diào)用該對象的例對象,并分別調(diào)用該對象的availableProcessors()方法、方法、freeMemory()方方法和法和maxMemory()方法,將當前虛擬機的處置器個數(shù)、空閑內(nèi)存數(shù)和可用最方法,將當前虛擬機的處置器個數(shù)、空閑內(nèi)存數(shù)和可用最大內(nèi)存數(shù)的信息打印出來。大內(nèi)存數(shù)的信息打印出來。常用類一: System類 與Runtime類讓IT教學更簡單,讓IT學習更有效 2、 Runtime類類 Runtime 類中提供了一個類中提供了一個exec()方法,該方法用于執(zhí)行一方法,該方法用于執(zhí)行一個個dos命令,從而實現(xiàn)和在
60、命令行窗口中輸入命令,從而實現(xiàn)和在命令行窗口中輸入dos命令同命令同樣的效果。樣的效果。例程例程6-13中,調(diào)用了中,調(diào)用了Runtime對象的對象的exec()方法,并將系統(tǒng)命令方法,并將系統(tǒng)命令notepad.exe作為參數(shù)傳送給方法。運轉程序會在桌面上翻開一個記事本作為參數(shù)傳送給方法。運轉程序會在桌面上翻開一個記事本常用類一: System類 與Runtime類讓IT教學更簡單,讓IT學習更有效 2、 Runtime類類 接下來經(jīng)過一個案例來實現(xiàn)翻開的記事本并在接下來經(jīng)過一個案例來實現(xiàn)翻開的記事本并在3秒后自動秒后自動封鎖封鎖例程例程6-14中,經(jīng)過調(diào)用中,經(jīng)過調(diào)用Process對象的對
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 專業(yè)化真石漆工程承包協(xié)議模板版B版
- 2025年度體育賽事組織安全責任連帶責任保證合同3篇
- 2025年度綠色建筑承債式股權收購合同3篇
- 2024電力公司與電網(wǎng)運營公司之間的電力供應合同
- 2024年緊急資金借款質押合同
- 2024版石材安裝合同
- 2024政工程勞務分包協(xié)議范本:二零二四年度綠色建筑節(jié)能檢測合同3篇
- 2024年聚苯板物流配送合同
- 一鍵報警設備安裝工程協(xié)議樣本2024版版
- 造林知識培訓課件下載
- 醫(yī)院感染監(jiān)測清單
- 社區(qū)老年人項目計劃書
- 《1.我又長大了一歲》教學課件∣泰山版
- 斷裂力學-1緒論課件
- 深基坑工程驗收表
- 醫(yī)學交流課件:RCT的基本概念及原則(PPT 37頁)
- SLZ 549-2012 用水審計技術導則(試行)
- qes三體系審核培訓ppt課件
- CASS文字編緝
- JJF 1406-2013 地面激光掃描儀校準規(guī)范(原版-高清)
- 轉爐系統(tǒng)機械設備概述
評論
0/150
提交評論