高中教育02java語言基礎(chǔ)數(shù)組向量字符串2課件_第1頁
高中教育02java語言基礎(chǔ)數(shù)組向量字符串2課件_第2頁
高中教育02java語言基礎(chǔ)數(shù)組向量字符串2課件_第3頁
高中教育02java語言基礎(chǔ)數(shù)組向量字符串2課件_第4頁
高中教育02java語言基礎(chǔ)數(shù)組向量字符串2課件_第5頁
已閱讀5頁,還剩115頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第二章Java 語言基礎(chǔ)第二章Java 語言基礎(chǔ)Contents1.數(shù)組 3.向量 2.字符串NCEPUContents1.數(shù)組 3.向量 2.字符串NCEPU復(fù)合數(shù)據(jù)類型 復(fù)合數(shù)據(jù)類型 復(fù)合數(shù)據(jù)類型早期的程序設(shè)計(jì)語言把變量看作是孤立的東西,例如我們往往用三個(gè)整數(shù)變量day,month和year來表示日期 int day, month, year; 雖然這種方法容易理解,但是有兩個(gè)明顯的缺點(diǎn): NCEPU復(fù)合數(shù)據(jù)類型早期的程序設(shè)計(jì)語言把變量看作是孤立的東西,例如我復(fù)合數(shù)據(jù)類型程序若要處理多個(gè)日期,則需要更多的說明,例如要保存兩個(gè)生日,則需要: birthday1, birthmonth1, b

2、irthyear1 birthday2, birthmonth2, birthyear2該程序因使用了多個(gè)變量而變得混亂,并且占用了過多的命名空間。 每個(gè)變量都是獨(dú)立的,而其實(shí)它們應(yīng)當(dāng)是某一個(gè)日期的組成部分,這樣定義無法體現(xiàn)整體的聯(lián)系。 NCEPU復(fù)合數(shù)據(jù)類型程序若要處理多個(gè)日期,則需要更多的說明,例如要保復(fù)合數(shù)據(jù)類型復(fù)合數(shù)據(jù)類型由程序員在源程序中定義,把描述整個(gè)對(duì)象各個(gè)不同方面的變量放到一個(gè)定義中,建立該模型。一旦有了定義,就可以使用該類型名來創(chuàng)建變量。 Java是面向?qū)ο蟮某绦蛟O(shè)計(jì)語言,它為用戶提供的復(fù)合數(shù)據(jù)類型即類 和 接口。NCEPU復(fù)合數(shù)據(jù)類型復(fù)合數(shù)據(jù)類型由程序員在源程序中定義,把描

3、述整個(gè)對(duì)復(fù)合數(shù)據(jù)類型引用類型(reference type即復(fù)合類型)引用型變量的值與基本類型(簡(jiǎn)單類型)變量不同,變量值是指向內(nèi)存空間的引用(地址)。所指向的內(nèi)存中保存著變量所表示的一個(gè)值或一組值。 引用在其他語言中稱為指針或內(nèi)存地址。Java不支持顯式使用內(nèi)存地址,而必須通過變量名對(duì)某個(gè)內(nèi)存空間地址進(jìn)行訪問。NCEPU復(fù)合數(shù)據(jù)類型引用類型(reference type即復(fù)合類型兩種類型變量的不同處理int a;a=12;MyDate today;today.day=14;引用型變量在聲明后必須通過實(shí)例化開辟數(shù)據(jù)空間,才能對(duì)變量所指向的對(duì)象進(jìn)行訪問.MyDate today;today=ne

4、w MyDate ();today.day=14;NCEPU兩種類型變量的不同處理int a;MyDate toda關(guān)于對(duì)象和對(duì)象的“引用”String s=new String(“a String”);An object of String is createdThe object is initialized w/”a String”A variable as handle to String is createdThe value of the handle variable is assign to the objectString s;sa StringNCEPU關(guān)于對(duì)象和對(duì)象的“引

5、用”String s=new Strin 數(shù)組和字符串 數(shù)組和字符串 第一節(jié) 數(shù)組 數(shù)組概述 一維數(shù)組 二維數(shù)組NCEPU第一節(jié) 數(shù)組 數(shù)組概述 NCEPU數(shù)組概述 數(shù)組,是由數(shù)目固定的、相同類型的元素組成的有序集合,每個(gè)元素相當(dāng)于一個(gè)變量。 在Java中,數(shù)組是最簡(jiǎn)單的復(fù)合數(shù)據(jù)類型NCEPU數(shù)組概述 數(shù)組,是由數(shù)目固定的、相同類型的元素組成的有序集合數(shù)組概述 數(shù)組元素可以是任意類型,可以是簡(jiǎn)單類型,也可以是引用類型。 訪問數(shù)組中的某個(gè)元素,可以通過數(shù)組名加下標(biāo)的形式,例如:a4。 數(shù)組下標(biāo)的個(gè)數(shù)就是數(shù)組的維數(shù): 有一個(gè)下標(biāo)就是一維數(shù)組,有兩個(gè)下標(biāo)就是二維數(shù)組,依次類推。 NCEPU數(shù)組概述

6、數(shù)組元素可以是任意類型,可以是簡(jiǎn)單類型,也可以是引一維數(shù)組 一個(gè)一維數(shù)組實(shí)際上是一列相同類型的變量 一維數(shù)組的聲明 一維數(shù)組的創(chuàng)建 一維數(shù)組初始化 數(shù)組邊界NCEPU一維數(shù)組 一個(gè)一維數(shù)組實(shí)際上是一列相同類型的變量 NCEPUa null 一維數(shù)組的聲明聲明一維數(shù)組的格式是: ;或 ; 例如:int a 或:Date d 例如:int a 或:Date dint a 5 是不正確的要聲明成:int a 或:int a 此時(shí)的數(shù)組a中的元素個(gè)數(shù)沒有確定,系統(tǒng)沒有創(chuàng)建具體的數(shù)組對(duì)象,而是聲明了一個(gè)指向數(shù)組的引用NCEPUa null 一維數(shù)組的聲明聲明一維數(shù)組的格式是: 一維數(shù)組的聲明將表示數(shù)組的

7、跟隨在數(shù)組類型之后java特有這種格式中,在數(shù)組標(biāo)志”后出現(xiàn)的所有變量都是數(shù)組類型的引用。如:char s,m,n; /聲明了三個(gè)字符數(shù)組的引用NCEPU一維數(shù)組的聲明將表示數(shù)組的跟隨在數(shù)組類型之后java特 所有的引用類型都需要用new來初始化一維數(shù)組的創(chuàng)建 創(chuàng)建一維數(shù)組的格式為: = new ; Java中沒有靜態(tài)定義的數(shù)組,數(shù)組的內(nèi)存都是通過new動(dòng)態(tài)分配的。 例如: a = new int 5;此時(shí)系統(tǒng)創(chuàng)建了具體的數(shù)組對(duì)象,為每個(gè)數(shù)組元素分配了具體的內(nèi)存單元,并進(jìn)行了默認(rèn)的初始化0 x03456789a0a00a10a20a30a4a = new int 5;NCEPU 所有的引用類型

8、都需要用new來初始化一維數(shù)組的創(chuàng)建 創(chuàng)建一維數(shù)組的創(chuàng)建數(shù)組的聲明和創(chuàng)建可以同時(shí)進(jìn)行: = new ;或 = new ; 例如: int a = new int 5; 或:int a = new int 5;NCEPU一維數(shù)組的創(chuàng)建數(shù)組的聲明和創(chuàng)建可以同時(shí)進(jìn)行: 例如: ipublic class Test public static void main(String args) int s; s=new int 5; for (int i=0;i5;i+) si=i; 一維數(shù)組NCEPUpublic class Test一維數(shù)組NCEPU一維數(shù)組public class Test publi

9、c static void main(String args) int s; s=new int 5; for (int i=0;i5;i+) si=i; NCEPU一維數(shù)組public class TestNCEPU一維數(shù)組public class Test public static void main(String args) int s; s=new int 5; for (int i=0;i5;i+) si=i; NCEPU一維數(shù)組public class TestNCEPU一維數(shù)組public class Test public static void main(String ar

10、gs) int s; s=new int 5; for (int i=0;i5;i+) si=i; NCEPU一維數(shù)組public class TestNCEPU一維數(shù)組的創(chuàng)建一旦為數(shù)組分配了存儲(chǔ)空間,程序中就不能改變數(shù)組的長(zhǎng)度,但是可以再次使用new生成新的數(shù)組對(duì)象,分配新的存儲(chǔ)空間。例如:int a = new int5;a = new int 6; 0 x03456789a0a00a10a20a30a40 x07654321a0a00a10a20a30a40a5數(shù)組創(chuàng)建后就不能改變其大小,但是可以使用相同的引用變量指向一個(gè)全新的數(shù)組。本例中,第一個(gè)數(shù)組實(shí)際上丟失了,除非還有其他引用指向它

11、NCEPU一維數(shù)組的創(chuàng)建一旦為數(shù)組分配了存儲(chǔ)空間,程序中就不能改變數(shù)組 注意:元素為引用類型的數(shù)組中的每一個(gè)元素都需要實(shí)例化。設(shè)已定義了Date類包括三個(gè)成員變量:year, month, day一維數(shù)組的創(chuàng)建當(dāng)創(chuàng)建的數(shù)組元素是一個(gè)類的對(duì)象的時(shí)候,這些對(duì)象必須要單獨(dú)創(chuàng)建。 Date d ; /Date是一個(gè)類d = new Date 5; /初始化,用new為數(shù)組分配空間d 1 = new Date( ); nulld 0 x01234567dnulld0nulld1nulld2nulld3nulld4 0 x01234567dnulld00 x02345678 d1nulld2nulld3n

12、ulld40d1.year0d1.month0d1.dayNCEPU 注意:元素為引用類型的數(shù)組中的每一個(gè)元素都需要實(shí)例化一維數(shù)組的初始化當(dāng)創(chuàng)建一個(gè)數(shù)組對(duì)象時(shí),每個(gè)數(shù)組元素都會(huì)被自動(dòng)初始化。 int a = new int 5; 0 x01234567a0a00a10a20a30a4char c = new char 5; Date d = new Date 5; 0 x03456789dnulld0nulld1nulld2nulld3nulld4引用為null,表示不指向任何存儲(chǔ)單元0 x02345678cnullc0nullc1nullc2nullc3nullc4字符 u0000(null

13、)NCEPU一維數(shù)組的初始化int a = new int 5一維數(shù)組的初始化 可以在聲明數(shù)組的同時(shí),為數(shù)組元素賦初值。 int a = 1, 2, 3, 4, 5; 0 x01234567a1a02a13a24a35a4靜態(tài)初始化相當(dāng)于:int a = new int 5;a 0 = 1;a 1 = 2;a 2 = 3;a 3 = 4;a 4 = 5;注意:靜態(tài)初始化必須在聲明數(shù)組時(shí)進(jìn)行,而不能寫成如下形式:int a ; a =1,2,3,4,5或 int a = new int 5; a=1,2,3,4,5NCEPU一維數(shù)組的初始化int a = 1, 2, 3, 4一維數(shù)組的初始化 可

14、以在聲明數(shù)組的同時(shí),為數(shù)組元素賦初值。 Date days=new Date(17,3,2010), new Date(17,3,2010), new Date(17,3,2010) ;靜態(tài)初始化NCEPU一維數(shù)組的初始化 Date days=new Date當(dāng)用new創(chuàng)建了一個(gè)對(duì)象時(shí),系統(tǒng)為對(duì)象中的變量進(jìn)行了初始化,即不但為變量分配了相應(yīng)的存儲(chǔ)單元,還設(shè)置了變量所屬類型的相應(yīng)初值,這樣就避免發(fā)生變異錯(cuò)誤。類型初值類型初值類型 初值整型0booleanfalsefloat0.0f引用類型nullcharu0000double0.0復(fù)合數(shù)據(jù)類型(引用類型):聲明時(shí)并未創(chuàng)建具體對(duì)象,而是聲明了一個(gè)

15、指向復(fù)合數(shù)據(jù)類型的引用,引用類型都需要用new來初始化一維數(shù)組的初始化NCEPU當(dāng)用new創(chuàng)建了一個(gè)對(duì)象時(shí),系統(tǒng)為對(duì)象中的變量進(jìn)行了初始化,一維數(shù)組的初始化根據(jù)輸入的數(shù)據(jù)來定義數(shù)組長(zhǎng)度int size;size= System.in.read();int number = new intsize;NCEPU一維數(shù)組的初始化int size;NCEPU一維數(shù)組的初始化public class Test public static void main (String args) int a =new int5; Date days=new Date3; System.out.println(a3)

16、; System.out.println(days2); class Date int year, month, day; Date (int y, int m, int d) year=y; month=m; day=d; 0nullNCEPU一維數(shù)組的初始化public class Test0NCE一維數(shù)組NCEPU一維數(shù)組NCEPU一維數(shù)組NCEPU一維數(shù)組NCEPU一維數(shù)組NCEPU一維數(shù)組NCEPU數(shù)組邊界數(shù)組類中有唯一的一個(gè)成員變量:length,用來表示數(shù)組的長(zhǎng)度,即數(shù)組元素的個(gè)數(shù)。 在Java中,數(shù)組的下標(biāo)從0開始,到length-1結(jié)束,即數(shù)組a的第一個(gè)元素是a0,最后一個(gè)元

17、素是alength-1。 另外,與C、C+中不同,Java對(duì)數(shù)組元素要進(jìn)行越界檢查以保證安全性。NCEPU數(shù)組邊界數(shù)組類中有唯一的一個(gè)成員變量:length,用來表示數(shù)組邊界使用new創(chuàng)建數(shù)組對(duì)象時(shí),自動(dòng)給length賦值,數(shù)組一旦創(chuàng)建完畢,length就確定下來,除非重新使用new創(chuàng)建新的數(shù)組對(duì)象。 程序在運(yùn)行過程中會(huì)對(duì)length進(jìn)行檢查,若發(fā)生越界訪問,則會(huì)拋出一個(gè)異常。 NCEPU數(shù)組邊界使用new創(chuàng)建數(shù)組對(duì)象時(shí),自動(dòng)給length賦值,數(shù)數(shù)組邊界例 求一組數(shù)中的最大值和最小值。 在本例中,使用一維數(shù)組來存放Math.random( )方法產(chǎn)生的一組099之間的隨機(jī)數(shù)。 Math.ra

18、ndom( )方法: public static double random( ) Math類屬于java.lang包,在程序中直接使用即可。該方法返回一個(gè)0.01.0之間的小數(shù) 想得到一個(gè)099之間的數(shù),可以使用: int num = (int) (100* Math.random( ) ); NCEPU數(shù)組邊界例 求一組數(shù)中的最大值和最小值。 Math類屬于class ArrayMax public static void main (String args ) final int SIZE = 10;int num = new int SIZE;int i, max, min;Syste

19、m.out.print ( nums: );for ( i = 0; i num.length; i+ ) num i =(int)(100*Math.random( ); System.out.print ( +num i ); System.out.println( );為每一個(gè)num數(shù)組元素賦一個(gè)099之間的隨機(jī)值 可能的輸出為:nums:15 68 19 78 22 85 32 59 75 91 NCEPUclass ArrayMax 為每一個(gè)num數(shù)組元素賦一個(gè)class ArrayMax public static void main (String args ) max = nu

20、m 0 ;min = num 0 ;for ( i = 1; i max) max = num i ; if (num i min) min = num i ;System.out.println(Max is: +max ); System.out.println(Min is: +min );輸出為: Max is: 91 Min is: 15 之前的輸出為:nums : 15 68 19 78 22 85 32 59 75 91NCEPUclass ArrayMax 輸出為:之前的輸出為:NCE增強(qiáng)的for循環(huán)語句-在數(shù)組中的應(yīng)用for (Type value : array) expr

21、ession value; for(int i=0; ib) t=a; a=b; b=t; if (bc) t=b; b=c; c=t; if (ab) t=a; a=b; b=t; System.out.println(The order is+a+,+b+,+c); The order is 21,27,34NCEPUclass Order The order is 21class Order public static void main (String args )int a=34, b=21, c=27, t;if (ab) t=a; a=b; b=t; if (bc) t=b; b

22、=c; c=t; if (ab) t=a; a=b; b=t; System.out.println (a + b + c); The order is 82NCEPUclass Order The order is 82class Order public static void main (String args )int a=34, b=21, c=27, t;if (ab) t=a; a=b; b=t; if (bc) t=b; b=c; c=t; if (ab) t=a; a=b; b=t; System.out.println(The order is + a + b + c);

23、The order is 212734NCEPUclass Order The order is 21String構(gòu)造方法的使用舉例 public static void main(String args) String s,s1,s2,s3,s4,s5,s6,s7; byte byteArray =(byte)J,(byte)a,(byte)v,(byte)a; char charArray = 程,序,設(shè),計(jì),課,程; StringBuffer sb = new StringBuffer(歡迎); s = new String(Hello!); s1 = new String(); s2

24、= new String(s); s3 = new String(sb); s4 = new String(charArray); s5 = new String(charArray,2,4); s6 = new String(byteArray); s7 = new String(byteArray,0,1); Hello!Hello!歡迎程序設(shè)計(jì)課程設(shè)計(jì)課程JavaJNCEPUString構(gòu)造方法的使用舉例 public staticString類 - 2String類的常用方法 Java為String類定義了許多方法,可以通過下述格式調(diào)用Java定義的方法: .; NCEPUString

25、類 - 2String類的常用方法 Java為常用方法-字符串比較方法方法說明boolean equalsIgnoreCase (String value)比較兩個(gè)字符串,忽略大小寫int compareTo(String value)比較兩個(gè)字符串,返回兩者之間的差值。如果兩個(gè)字符串相等,則返回 0。boolean startsWith(String value)檢查一個(gè)字符串是否以另一個(gè)字符串開始boolean endsWith(String value)檢查一個(gè)字符串是否以另一個(gè)字符串結(jié)束NCEPU常用方法-字符串比較方法方法說明boolean equal方法說明int indexOf

26、( int ch)返回字符ch在字符串中出現(xiàn)的第一個(gè)位置int lastIndexOf ( int ch)返回字符ch在字符串中出現(xiàn)的最后一個(gè)位置int indexOf(String str)返回子串str首字符在字符串中第一次出現(xiàn)的位置int lastindexOf(String str)返回子串str首字符在字符串中最后出現(xiàn)的位置常用方法-搜索字符和字符串NCEPU方法說明int indexOf ( int ch)返回字符c常用方法-字符串提取、連接、替換等方法方法說明public char charAt(int index) 從指定位置提取單個(gè)字符,該位置由索引指定,索引中的值必須為非負(fù)

27、public String substring(int index) 提取從位置索引開始的字符串部分public String substring(int beginindex, int endindex) 提取 beginindex 和 endindex 位置之間的字符串部分public String concat(String str) 連接兩個(gè)字符串,并新建一個(gè)包含調(diào)用字符串的字符串對(duì)象public String replace(char old, char new) 將調(diào)用字符串中出現(xiàn)某個(gè)字符的所有位置都替換為另一個(gè)字符public String trim() 將調(diào)用字符串的前后空格刪

28、掉public String toLowerCase()把串中的所有字符轉(zhuǎn)換成小寫。public String toUpperCase()把串中的所有字符轉(zhuǎn)換成大寫。String split(Stringregex) 根據(jù)給定正則表達(dá)式的匹配拆分此字符串。NCEPU常用方法-字符串提取、連接、替換等方法方法說明publicString類 - 2String類的常用方法 int length ( ) 返回字符串的長(zhǎng)度 System.out.println (s1.length();例如:String s1 = Hello;5char charAt ( int index ) 返回字符串中inde

29、x位置的字符System.out.println ( s1.charAt (1) ); eNCEPUString類 - 2String類的常用方法 int lString類 - 2String類的常用方法 String toLowerCase ( ) 將當(dāng)前字符串中所有字符轉(zhuǎn)換成小寫形式 System.out.println(s1.toLowerCase (); 例如:String s1 = Hello;hello String toUpperCase ( ) 將當(dāng)前字符串中所有字符轉(zhuǎn)換成大寫形式 System.out.println(s1.toUpperCase (); HELLO NCEP

30、UString類 - 2String類的常用方法 StrinString類 - 2String類的常用方法 String substring (int beginIndex ) 返回從beginIndex開始的子串 System.out.println ( s1.substring ( 2 ) ); 例如:String s1 = Hello;llo String substring (int beginIndex, int endIndex) 返回從beginIndex開始到endIndex之前的子串 System.out.println ( s1.substring(2, 4) ); ll

31、NCEPUString類 - 2String類的常用方法 StrinString類 - 2String類的常用方法 String replace ( char oldChar, char newChar ) 將字符串中所有的oldChar轉(zhuǎn)換為newChar System.out.println ( s1.replace ( l, t); 例如:String s1 = Hello;Hetto int indexOf(String str) 返回str在字符串中第一次出現(xiàn)的位置 System.out.println ( s1.indexOf ( ell) ); 1 NCEPUString類 -

32、2String類的常用方法 StrinString類 - 2String類的常用方法 String concat (String str) 將str連接在當(dāng)前字符串的尾部 System.out.println ( s1.concat( World!); 例如:String s1 = Hello;Hello World! NCEPUString類 - 2String類的常用方法 StrinString類 - 2String類的常用方法 boolean equals (String str ) 比較str與當(dāng)前字符的內(nèi)容是否相同 System.out.println ( s1.equals ( h

33、ello ) ); 例如:String s1 = Hello;false boolean equalsIgnoreCase (String str ) 比較str與當(dāng)前字符的內(nèi)容是否相同,并且忽略字符大小寫 System.out.println(s1.equalsIgnoreCase (hello); true NCEPUString類 - 2String類的常用方法 boole0 若str和當(dāng)前字符串僅長(zhǎng)度不同,則返回兩者長(zhǎng)度的差值 System.out.println(pareTo(Hello World); String類 - 2String類的常用方法 int compareTo (S

34、tring str ) 比較str和當(dāng)前字符串的內(nèi)容,返回差值例如:String s1 = Hello; 若str和當(dāng)前字符串相等,則返回0 System.out.println (pareTo (s1) ); 6 若str和當(dāng)前字符串不相等,則返回第一個(gè)不同字符的差值 System.out.println ( pareTo (Hillo); 4 NCEPU0 若str和當(dāng)前字符串僅長(zhǎng)度不同,則返回兩者長(zhǎng)度的差String類 - 3= = 與 equals( )方法 equals ( )是判斷兩個(gè)String對(duì)象內(nèi)容是否相同 = = 是判斷兩個(gè)String對(duì)象是否為同一實(shí)例,即在內(nèi)存中的存儲(chǔ)空

35、間是否一致。 NCEPUString類 - 3= = 與 equals( )方法 字符串變量 1字符串變量 2字符串變量 1字符串變量 2由 equals() 方法確定檢查字符串變量指向的字符串是否相等同一個(gè)對(duì)象用 = 運(yùn)算符檢查檢查字符串變量是否指向同一個(gè)字符串對(duì)象String類 - 3= = 與 equals( )方法 NCEPU字符串變量 1字符串變量 2字符串變量 1字符串變量 2由 class StringTest2 public static void main (String args ) String s1 = This is the second string.;String

36、 s2 = This is the second string.;String s3 = new String (This is the second string.);String s4 = new String ( s1 );String s5 = s1; 0 x01234567s1This is the second string. 0 x01234567s1This is the second string.0 x01234567s2 0 x01234567s1This is the second string.0 x01234567s20 x02345678s3This is the

37、 second string. 0 x01234567s1This is the second string.0 x01234567s20 x02345678s3This is the second string.0 x03456789s4This is the second string. 0 x01234567s1This is the second string.0 x02345678s3This is the second string.0 x03456789s4This is the second string.0 x01234567s50 x01234567s2Boolean re

38、sult21 = s1.equals(s2); result21 = true Boolean result22 = s1= = s2; result22 = true Boolean result31 = s1.equals(s3); result31 = true Boolean result32 = s1= = s3; result32 = false result41 = true Boolean result41 = s1.equals(s4); result42 = false Boolean result42 = s1= = s4; result51 = true Boolean

39、 result51 = s1.equals(s5); result52 = true Boolean result52 = s1= = s5; NCEPUclass StringTest2 0 x012345StringBuffer類StringBuffer類處理可變字符串,當(dāng)修改一個(gè)StringBuffer類的字符串對(duì)象時(shí),不會(huì)再產(chǎn)生新的實(shí)例,而是直接操作原字符串。系統(tǒng)為StringBuffer類對(duì)象分配內(nèi)存時(shí),除去字符所占空間外,再另加16個(gè)字符大小的緩沖區(qū)。 NCEPUStringBuffer類StringBuffer類處理可變StringBuffer類構(gòu)造方法說明public Stri

40、ngBuffer()分配長(zhǎng)16字節(jié)的字符緩沖區(qū) public StringBuffer (int length)分配長(zhǎng)度為length的空緩沖區(qū)public StringBuffer(Stringvalue)接收字符串作為初值,后面再留 16 個(gè)字符的空緩沖區(qū)。 StringBuffer 用于表示可以修改的字符串 使用連接運(yùn)算符 (+) 的字符串會(huì)自動(dòng)創(chuàng)建字符串緩沖對(duì)象NCEPUStringBuffer類構(gòu)造方法說明public StriStringBuffer類 創(chuàng)建StringBuffer s1 = new StringBuffer ( ); / 創(chuàng)建一個(gè)大小為16個(gè)字符的空StringB

41、uffer對(duì)象 StringBuffer s2 = new StringBuffer(40) ;/ 創(chuàng)建一個(gè)大小為40個(gè)字符的空StringBuffer對(duì)象StringBuffer s3 = new StringBuffer(Hello);/ 創(chuàng)建一個(gè)大小為21個(gè)字符的StringBuffer對(duì)象NCEPUStringBuffer類 創(chuàng)建StringBufferStringBuffer 類的方法方法說明int length( )確定 StringBuffer 對(duì)象的長(zhǎng)度public void setLength(int newLength)明確地定義字符緩沖區(qū)的長(zhǎng)度。如果newlength大于

42、現(xiàn)在的長(zhǎng)度,串尾將補(bǔ)0,如果小于,那么newlength后的字符將丟失。int capacity() 返回字符串緩沖區(qū)的長(zhǎng)度,即總的可供分配的字符個(gè)數(shù)。void setCharAt(int pos, char ch)使用 ch 指定的新值設(shè)置 pos 指定的位置上的字符String toString( )轉(zhuǎn)換為字符串形式NCEPUStringBuffer 類的方法方法說明int lengt方法說明StringBuffer insert(int offset,String s)在指定位置插入指定的字符串public StringBuffer append(對(duì)象類型 對(duì)象名)將指定的參數(shù)對(duì)象轉(zhuǎn)化成

43、字符串,附加在原來的字符串對(duì)象之后。StringBuffer reverse()將此字符序列用其反轉(zhuǎn)形式取代 StringBuffer delete(int start, int end)刪除調(diào)用對(duì)象中從 start 位置開始直到 end 指定的索引 1 位置的字符序列。StringBuffer deleteCharAt(int pos)刪除 pos 指定的索引處的字符StringBuffer replace(int start, int end, String s)使用一組字符替換另一組字符。將用替換字符串從 start 指定的位置開始替換,直到 end 指定的位置結(jié)束。StringBuff

44、er 類的方法NCEPU方法說明StringBuffer insert(int ofStringBuffer類 - 常用的方法int length ( )返回StringBuffer對(duì)象中字符的長(zhǎng)度System.out.println(s1.length(); 例如:StringBuffer s1 = new StringBuffer(Hello) 5int capacity() 返回StringBuffer對(duì)象緩沖區(qū)的容量System.out.println(s1.capacity(); 21NCEPUStringBuffer類 - 常用的方法int lengtStringBuffer類 -

45、 常用的方法void ensureCapacity(int size) 設(shè)置StringBuffer對(duì)象的緩沖區(qū)容量 s1.ensureCapacity(50);System.out.println(s1.capacity(); 例如:StringBuffer s1 = new StringBuffer(Hello) 50NCEPUStringBuffer類 - 常用的方法void ensuStringBuffer類 - 常用的方法void setLength(int len) 設(shè)置StringBuffer對(duì)象字符長(zhǎng)度 s1.setLength(2); System.out.println(s

46、1); 例如:StringBuffer s1 = new StringBuffer(Hello) HeNCEPUStringBuffer類 - 常用的方法void setLStringBuffer類 - 常用的方法StringBuffer append (Object obj) 連接StringBuffer對(duì)象 System.out.println(s1.append( World);System.out.println(s1); 例如:StringBuffer s1 = new StringBuffer(Hello) Hello World Hello World NCEPUStringBu

47、ffer類 - 常用的方法StringBufString與StringBuffer的轉(zhuǎn)換產(chǎn)生一個(gè)內(nèi)容與String對(duì)象str相同的StringBufffer對(duì)象:StringBuffer sb = new StringBuffer(str); 產(chǎn)生一個(gè)內(nèi)容與StringBuffer對(duì)象sb相同的String對(duì)象:String sb = sb.toSting();NCEPUString與StringBuffer的轉(zhuǎn)換產(chǎn)生一個(gè)內(nèi)容與S向量(Vector)是java.util類包提供的一個(gè)工具類。它對(duì)應(yīng)于類似數(shù)組的順序存儲(chǔ)的數(shù)據(jù)結(jié)構(gòu),但是具有比數(shù)組更強(qiáng)大的功能。它是允許不同類型元素共存的變長(zhǎng)數(shù)組。每

48、個(gè)Vector類的對(duì)象可以表達(dá)一個(gè)完整的數(shù)據(jù)序列。第三節(jié) 向量NCEPU向量(Vector)是java.util類包提供的一個(gè)工具類Vector類的對(duì)象不但可以保存順序的一列數(shù)據(jù),而且還提供了許多有用的方法來操作和處理這些數(shù)據(jù)。 Vector類對(duì)象所表達(dá)的序列中元素的個(gè)數(shù)是可變的,即Vector實(shí)現(xiàn)了變長(zhǎng)數(shù)組。Vector類NCEPUVector類的對(duì)象不但可以保存順序的一列數(shù)據(jù),而且還提供了Java中的數(shù)組只能保存固定數(shù)目的元素,且必須把所有需要的內(nèi)存單元一次性的申請(qǐng)出來,而不能先創(chuàng)建數(shù)組再追加數(shù)組元素?cái)?shù)量。為了解決這個(gè)問題Java中引入了向量類Vector。Vector也是一組對(duì)象的集合,

49、但相對(duì)于數(shù)組,Vector可以追加對(duì)象元素?cái)?shù)量,可以方便的修改和維護(hù)序列中的對(duì)象。Vector類NCEPUJava中的數(shù)組只能保存固定數(shù)目的元素,且必須把所有需要的內(nèi)向量比較適合在如下情況下使用: 1. 需要處理的對(duì)象數(shù)目不定,序列中的元素都是對(duì)象或可以表示為對(duì)象 2. 需要將不同類的對(duì)象組合成一個(gè)數(shù)據(jù)序列 3. 需要做頻繁的對(duì)象序列中元素的插入和刪除 Vector類NCEPU向量比較適合在如下情況下使用:Vector類NCEPU向量比較適合在如下情況下使用: 4. 經(jīng)常需要定位序列中的對(duì)象和其他查找操作 5. 在不同的類之間傳遞大量的數(shù)據(jù) Vector類的方法相對(duì)于數(shù)組要多一些,但是使用這個(gè)

50、類也有一定的局限性,例如其中的對(duì)象不能是簡(jiǎn)單數(shù)據(jù)類型等。Vector類NCEPU向量比較適合在如下情況下使用:Vector類NCEPU(1) 創(chuàng)建向量類的對(duì)象 Vector類有三個(gè)構(gòu)造方法:Vector():構(gòu)造一個(gè)空的向量。Vector(int capacity):以指定的存儲(chǔ)容量構(gòu)造一個(gè)空的向量。Vector(int capacity, int capacityIncrement):以指定的存儲(chǔ)容量和容量增量構(gòu)造一個(gè)空的Vector。Vector類Vector MyVector=new Vector(100,50); 在創(chuàng)建Vector序列時(shí),不需要指明序列中元素的類型,可以在使用時(shí)確定。

51、 這樣創(chuàng)建的MyVector向量序列初始有100個(gè)元素的空間,以后一旦使用殆盡則以50為單位遞增,使序列中元素的個(gè)數(shù)變化成150,200,。NCEPU(1) 創(chuàng)建向量類的對(duì)象Vector類Vector MyV(2) 向向量序列中添加元素: addElement( Object obj) 將新元素添加到序列尾部。 add(Object obj)將新元素添加到序列尾部。 insertElementAt(Object obj, int index) 將新元素插入到指定位置。Vector類NCEPU(2) 向向量序列中添加元素:Vector類NCEPUVector類import java.util.*

52、; class Test public static void main(String arg) Vector MyVector=new Vector(); for (int i=1;i=10;i+) MyVector.addElement(new Integer(i); MyVector.insertElementAt(middle,5); for (int i=0;i=10;i+) System.out.println(MyVector.elementAt(i); 運(yùn)行結(jié)果:12345middle678910NCEPUVector類import java.util.*; 運(yùn)行(3) 修改或

53、刪除向量序列中的元素 1. setElementAt(Object obj,int index) 將向量序列index位置處的對(duì)象元素設(shè)置成為obj,如果這個(gè)位置原來有元素,則被覆蓋。 2. removeElement(Object obj) 刪除向量序列中第一個(gè)與指定的obj對(duì)象相同的元素,同時(shí)將后面的元素前提,補(bǔ)上空位。這個(gè)方法返回的是布爾值。 3. removeElementAt(int index) 刪除index指定位置處的元素,同時(shí)將后面的元素前提。Vector類Vector MyVector=new Vector(100);for (int i=0;i10;i+) MyVecto

54、r.addElement(“welcome”); MyVector.addElement(“to”); MyVector.addElement(“beijing”);while (MyVector.removeElement(“to”);NCEPU(3) 修改或刪除向量序列中的元素Vector類Vector4. removeAllElements() 清除向量序列中的所有元素。Vector類NCEPU4. removeAllElements()Vector類N(4)查找向量序列中的元素1.Object elementAt(int index) 返回指定位置處的元素。 一個(gè)要注意的問題:由于返回

55、的是Object類型的對(duì)象,在使用之前通常需要進(jìn)行強(qiáng)制類型轉(zhuǎn)換,將返回的對(duì)象引用轉(zhuǎn)換成Object類的某個(gè)具體子類的對(duì)象。例如: String str=(String)MyVector.elementAt(0);2. boolean contains(Object obj) 檢查向量序列中是否包含指定的對(duì)象元素obj。Vector類NCEPU(4)查找向量序列中的元素Vector類NCEPU 3. int indexOf (Object obj,int start_index) 從指定的start_index位置開始向后搜索,返回所找到的第一個(gè)與指定對(duì)象obj相同的元素的下標(biāo)位置。若指定的對(duì)象

56、不存在,則返回1。 4. int lastIndexOf(Object obj,int start_index) 從指定的start_index位置開始向前搜索,返回所找到的第一個(gè)與指定對(duì)象obj相同的元素的下標(biāo)位置。若指定的對(duì)象不存在,則返回1。int i=0;While(i=MyVector.indexOf(“welcome”,i)!=-1) System.out.println(i); i+;Vector類NCEPU 3. int indexOf (Object obj,in(5)Vector中的其他方法capacity():返回Vector的容量 clone():建立Vector的備份

57、copyInto(Object):把Vector中的元素拷貝到一個(gè)數(shù)組中firstElement():返回第一個(gè)元素lastElement():返回最后一個(gè)元素isEmpty():判斷是否為空setSize(int size):設(shè)置Vector的大小size():返回Vector中元素的數(shù)量trimToSize():將Vector的容量下調(diào)至最小值 Vector類NCEPU(5)Vector中的其他方法Vector類NCEPU使用Vector時(shí),一個(gè)需要特別注意的問題就是要先創(chuàng)建后使用。如果不先使用new運(yùn)算符利用構(gòu)造方法創(chuàng)建Vector類的對(duì)象,而直接使用Vector的方法,如:add()等

58、方法,則可能造成堆棧溢出或使用null指針等異常,妨礙程序的正常運(yùn)行。Vector類NCEPU使用Vector時(shí),一個(gè)需要特別注意的問題就是要先創(chuàng)建后使用例題:用向量實(shí)現(xiàn),創(chuàng)建3個(gè)學(xué)生對(duì)象(學(xué)號(hào)、姓名、年齡)和4個(gè)教師對(duì)象(教工號(hào)、姓名、系別),并且輸出。Vector類NCEPU例題:用向量實(shí)現(xiàn),創(chuàng)建3個(gè)學(xué)生對(duì)象(學(xué)號(hào)、姓名、年齡)和4個(gè)Vector類import java.util.*;class Stu String xh; String xm; int nl; Stu(String xh1,String xm1,int nl1) xh=xh1;xm=xm1;nl=nl1; void di

59、sp() System.out.println(學(xué)生:+xh+ +xm+ +nl);NCEPUVector類import java.util.*;NCEPVector類class TechString zh;String xm;String xb; Tech(String zh1,String xm1,String xb1) zh=zh1;xm=xm1;xb=xb1; void disp() System.out.println(教師:+zh+ +xm+ +xb);NCEPUVector類class TechNCEPUVector類public class StuTerpublic stati

60、c void main(String s) Vector st=new Vector(); st.add(new Stu(101,李明,18); st.add(new Stu(102,王大力,20); st.add(new Stu(103,劉萍,19); st.add(new Tech(10100,林小利,計(jì)算機(jī)); st.add(new Tech(10101,熊平,計(jì)算機(jī)); st.add(new Tech(10102,戴紅兵,電力); st.add(new Tech(10103,曲小軍,電力);NCEPUVector類public class StuTerNCEfor(int i=0;is

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論