版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第二章Java 語言基礎(chǔ)第二章Java 語言基礎(chǔ)Contents1.數(shù)組 3.向量 2.字符串NCEPUContents1.數(shù)組 3.向量 2.字符串NCEPU復(fù)合數(shù)據(jù)類型 復(fù)合數(shù)據(jù)類型 復(fù)合數(shù)據(jù)類型早期的程序設(shè)計語言把變量看作是孤立的東西,例如我們往往用三個整數(shù)變量day,month和year來表示日期 int day, month, year; 雖然這種方法容易理解,但是有兩個明顯的缺點: NCEPU復(fù)合數(shù)據(jù)類型早期的程序設(shè)計語言把變量看作是孤立的東西,例如我復(fù)合數(shù)據(jù)類型程序若要處理多個日期,則需要更多的說明,例如要保存兩個生日,則需要: birthday1, birthmonth1, b
2、irthyear1 birthday2, birthmonth2, birthyear2該程序因使用了多個變量而變得混亂,并且占用了過多的命名空間。 每個變量都是獨立的,而其實它們應(yīng)當(dāng)是某一個日期的組成部分,這樣定義無法體現(xiàn)整體的聯(lián)系。 NCEPU復(fù)合數(shù)據(jù)類型程序若要處理多個日期,則需要更多的說明,例如要保復(fù)合數(shù)據(jù)類型復(fù)合數(shù)據(jù)類型由程序員在源程序中定義,把描述整個對象各個不同方面的變量放到一個定義中,建立該模型。一旦有了定義,就可以使用該類型名來創(chuàng)建變量。 Java是面向?qū)ο蟮某绦蛟O(shè)計語言,它為用戶提供的復(fù)合數(shù)據(jù)類型即類 和 接口。NCEPU復(fù)合數(shù)據(jù)類型復(fù)合數(shù)據(jù)類型由程序員在源程序中定義,把描
3、述整個對復(fù)合數(shù)據(jù)類型引用類型(reference type即復(fù)合類型)引用型變量的值與基本類型(簡單類型)變量不同,變量值是指向內(nèi)存空間的引用(地址)。所指向的內(nèi)存中保存著變量所表示的一個值或一組值。 引用在其他語言中稱為指針或內(nèi)存地址。Java不支持顯式使用內(nèi)存地址,而必須通過變量名對某個內(nèi)存空間地址進(jìn)行訪問。NCEPU復(fù)合數(shù)據(jù)類型引用類型(reference type即復(fù)合類型兩種類型變量的不同處理int a;a=12;MyDate today;today.day=14;引用型變量在聲明后必須通過實例化開辟數(shù)據(jù)空間,才能對變量所指向的對象進(jìn)行訪問.MyDate today;today=ne
4、w MyDate ();today.day=14;NCEPU兩種類型變量的不同處理int a;MyDate toda關(guān)于對象和對象的“引用”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)于對象和對象的“引
5、用”String s=new Strin 數(shù)組和字符串 數(shù)組和字符串 第一節(jié) 數(shù)組 數(shù)組概述 一維數(shù)組 二維數(shù)組NCEPU第一節(jié) 數(shù)組 數(shù)組概述 NCEPU數(shù)組概述 數(shù)組,是由數(shù)目固定的、相同類型的元素組成的有序集合,每個元素相當(dāng)于一個變量。 在Java中,數(shù)組是最簡單的復(fù)合數(shù)據(jù)類型NCEPU數(shù)組概述 數(shù)組,是由數(shù)目固定的、相同類型的元素組成的有序集合數(shù)組概述 數(shù)組元素可以是任意類型,可以是簡單類型,也可以是引用類型。 訪問數(shù)組中的某個元素,可以通過數(shù)組名加下標(biāo)的形式,例如:a4。 數(shù)組下標(biāo)的個數(shù)就是數(shù)組的維數(shù): 有一個下標(biāo)就是一維數(shù)組,有兩個下標(biāo)就是二維數(shù)組,依次類推。 NCEPU數(shù)組概述
6、數(shù)組元素可以是任意類型,可以是簡單類型,也可以是引一維數(shù)組 一個一維數(shù)組實際上是一列相同類型的變量 一維數(shù)組的聲明 一維數(shù)組的創(chuàng)建 一維數(shù)組初始化 數(shù)組邊界NCEPU一維數(shù)組 一個一維數(shù)組實際上是一列相同類型的變量 NCEPUa null 一維數(shù)組的聲明聲明一維數(shù)組的格式是: ;或 ; 例如:int a 或:Date d 例如:int a 或:Date dint a 5 是不正確的要聲明成:int a 或:int a 此時的數(shù)組a中的元素個數(shù)沒有確定,系統(tǒng)沒有創(chuàng)建具體的數(shù)組對象,而是聲明了一個指向數(shù)組的引用NCEPUa null 一維數(shù)組的聲明聲明一維數(shù)組的格式是: 一維數(shù)組的聲明將表示數(shù)組的
7、跟隨在數(shù)組類型之后java特有這種格式中,在數(shù)組標(biāo)志”后出現(xiàn)的所有變量都是數(shù)組類型的引用。如:char s,m,n; /聲明了三個字符數(shù)組的引用NCEPU一維數(shù)組的聲明將表示數(shù)組的跟隨在數(shù)組類型之后java特 所有的引用類型都需要用new來初始化一維數(shù)組的創(chuàng)建 創(chuàng)建一維數(shù)組的格式為: = new ; Java中沒有靜態(tài)定義的數(shù)組,數(shù)組的內(nèi)存都是通過new動態(tài)分配的。 例如: a = new int 5;此時系統(tǒng)創(chuàng)建了具體的數(shù)組對象,為每個數(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)建可以同時進(jìn)行: = new ;或 = new ; 例如: int a = new int 5; 或:int a = new int 5;NCEPU一維數(shù)組的創(chuàng)建數(shù)組的聲明和創(chuàng)建可以同時進(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ù)組分配了存儲空間,程序中就不能改變數(shù)組的長度,但是可以再次使用new生成新的數(shù)組對象,分配新的存儲空間。例如:int a = new int5;a = new int 6; 0 x03456789a0a00a10a20a30a40 x07654321a0a00a10a20a30a40a5數(shù)組創(chuàng)建后就不能改變其大小,但是可以使用相同的引用變量指向一個全新的數(shù)組。本例中,第一個數(shù)組實際上丟失了,除非還有其他引用指向它
11、NCEPU一維數(shù)組的創(chuàng)建一旦為數(shù)組分配了存儲空間,程序中就不能改變數(shù)組 注意:元素為引用類型的數(shù)組中的每一個元素都需要實例化。設(shè)已定義了Date類包括三個成員變量:year, month, day一維數(shù)組的創(chuàng)建當(dāng)創(chuàng)建的數(shù)組元素是一個類的對象的時候,這些對象必須要單獨創(chuàng)建。 Date d ; /Date是一個類d = new Date 5; /初始化,用new為數(shù)組分配空間d 1 = new Date( ); nulld 0 x01234567dnulld0nulld1nulld2nulld3nulld4 0 x01234567dnulld00 x02345678 d1nulld2nulld3n
12、ulld40d1.year0d1.month0d1.dayNCEPU 注意:元素為引用類型的數(shù)組中的每一個元素都需要實例化一維數(shù)組的初始化當(dāng)創(chuàng)建一個數(shù)組對象時,每個數(shù)組元素都會被自動初始化。 int a = new int 5; 0 x01234567a0a00a10a20a30a4char c = new char 5; Date d = new Date 5; 0 x03456789dnulld0nulld1nulld2nulld3nulld4引用為null,表示不指向任何存儲單元0 x02345678cnullc0nullc1nullc2nullc3nullc4字符 u0000(null
13、)NCEPU一維數(shù)組的初始化int a = new int 5一維數(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ù)組時進(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ù)組元素賦初值。 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)建了一個對象時,系統(tǒng)為對象中的變量進(jìn)行了初始化,即不但為變量分配了相應(yīng)的存儲單元,還設(shè)置了變量所屬類型的相應(yīng)初值,這樣就避免發(fā)生變異錯誤。類型初值類型初值類型 初值整型0booleanfalsefloat0.0f引用類型nullcharu0000double0.0復(fù)合數(shù)據(jù)類型(引用類型):聲明時并未創(chuàng)建具體對象,而是聲明了一個
15、指向復(fù)合數(shù)據(jù)類型的引用,引用類型都需要用new來初始化一維數(shù)組的初始化NCEPU當(dāng)用new創(chuàng)建了一個對象時,系統(tǒng)為對象中的變量進(jìn)行了初始化,一維數(shù)組的初始化根據(jù)輸入的數(shù)據(jù)來定義數(shù)組長度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ù)組類中有唯一的一個成員變量:length,用來表示數(shù)組的長度,即數(shù)組元素的個數(shù)。 在Java中,數(shù)組的下標(biāo)從0開始,到length-1結(jié)束,即數(shù)組a的第一個元素是a0,最后一個元
17、素是alength-1。 另外,與C、C+中不同,Java對數(shù)組元素要進(jìn)行越界檢查以保證安全性。NCEPU數(shù)組邊界數(shù)組類中有唯一的一個成員變量:length,用來表示數(shù)組邊界使用new創(chuàng)建數(shù)組對象時,自動給length賦值,數(shù)組一旦創(chuàng)建完畢,length就確定下來,除非重新使用new創(chuàng)建新的數(shù)組對象。 程序在運(yùn)行過程中會對length進(jìn)行檢查,若發(fā)生越界訪問,則會拋出一個異常。 NCEPU數(shù)組邊界使用new創(chuàng)建數(shù)組對象時,自動給length賦值,數(shù)數(shù)組邊界例 求一組數(shù)中的最大值和最小值。 在本例中,使用一維數(shù)組來存放Math.random( )方法產(chǎn)生的一組099之間的隨機(jī)數(shù)。 Math.ra
18、ndom( )方法: public static double random( ) Math類屬于java.lang包,在程序中直接使用即可。該方法返回一個0.01.0之間的小數(shù) 想得到一個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( );為每一個num數(shù)組元素賦一個099之間的隨機(jī)值 可能的輸出為:nums:15 68 19 78 22 85 32 59 75 91 NCEPUclass ArrayMax 為每一個num數(shù)組元素賦一個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è),計,課,程; 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è)計課程設(shè)計課程JavaJNCEPUString構(gòu)造方法的使用舉例 public staticString類 - 2String類的常用方法 Java為String類定義了許多方法,可以通過下述格式調(diào)用Java定義的方法: .; NCEPUString
25、類 - 2String類的常用方法 Java為常用方法-字符串比較方法方法說明boolean equalsIgnoreCase (String value)比較兩個字符串,忽略大小寫int compareTo(String value)比較兩個字符串,返回兩者之間的差值。如果兩個字符串相等,則返回 0。boolean startsWith(String value)檢查一個字符串是否以另一個字符串開始boolean endsWith(String value)檢查一個字符串是否以另一個字符串結(jié)束NCEPU常用方法-字符串比較方法方法說明boolean equal方法說明int indexOf
26、( int ch)返回字符ch在字符串中出現(xiàn)的第一個位置int lastIndexOf ( int ch)返回字符ch在字符串中出現(xiàn)的最后一個位置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) 從指定位置提取單個字符,該位置由索引指定,索引中的值必須為非負(fù)
27、public String substring(int index) 提取從位置索引開始的字符串部分public String substring(int beginindex, int endindex) 提取 beginindex 和 endindex 位置之間的字符串部分public String concat(String str) 連接兩個字符串,并新建一個包含調(diào)用字符串的字符串對象public String replace(char old, char new) 將調(diào)用字符串中出現(xiàn)某個字符的所有位置都替換為另一個字符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 ( ) 返回字符串的長度 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)前字符串僅長度不同,則返回兩者長度的差值 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)前字符串不相等,則返回第一個不同字符的差值 System.out.println ( pareTo (Hillo); 4 NCEPU0 若str和當(dāng)前字符串僅長度不同,則返回兩者長度的差String類 - 3= = 與 equals( )方法 equals ( )是判斷兩個String對象內(nèi)容是否相同 = = 是判斷兩個String對象是否為同一實例,即在內(nèi)存中的存儲空
35、間是否一致。 NCEPUString類 - 3= = 與 equals( )方法 字符串變量 1字符串變量 2字符串變量 1字符串變量 2由 equals() 方法確定檢查字符串變量指向的字符串是否相等同一個對象用 = 運(yùn)算符檢查檢查字符串變量是否指向同一個字符串對象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)修改一個StringBuffer類的字符串對象時,不會再產(chǎn)生新的實例,而是直接操作原字符串。系統(tǒng)為StringBuffer類對象分配內(nèi)存時,除去字符所占空間外,再另加16個字符大小的緩沖區(qū)。 NCEPUStringBuffer類StringBuffer類處理可變StringBuffer類構(gòu)造方法說明public Stri
40、ngBuffer()分配長16字節(jié)的字符緩沖區(qū) public StringBuffer (int length)分配長度為length的空緩沖區(qū)public StringBuffer(Stringvalue)接收字符串作為初值,后面再留 16 個字符的空緩沖區(qū)。 StringBuffer 用于表示可以修改的字符串 使用連接運(yùn)算符 (+) 的字符串會自動創(chuàng)建字符串緩沖對象NCEPUStringBuffer類構(gòu)造方法說明public StriStringBuffer類 創(chuàng)建StringBuffer s1 = new StringBuffer ( ); / 創(chuàng)建一個大小為16個字符的空StringB
41、uffer對象 StringBuffer s2 = new StringBuffer(40) ;/ 創(chuàng)建一個大小為40個字符的空StringBuffer對象StringBuffer s3 = new StringBuffer(Hello);/ 創(chuàng)建一個大小為21個字符的StringBuffer對象NCEPUStringBuffer類 創(chuàng)建StringBufferStringBuffer 類的方法方法說明int length( )確定 StringBuffer 對象的長度public void setLength(int newLength)明確地定義字符緩沖區(qū)的長度。如果newlength大于
42、現(xiàn)在的長度,串尾將補(bǔ)0,如果小于,那么newlength后的字符將丟失。int capacity() 返回字符串緩沖區(qū)的長度,即總的可供分配的字符個數(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(對象類型 對象名)將指定的參數(shù)對象轉(zhuǎn)化成
43、字符串,附加在原來的字符串對象之后。StringBuffer reverse()將此字符序列用其反轉(zhuǎn)形式取代 StringBuffer delete(int start, int end)刪除調(diào)用對象中從 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對象中字符的長度System.out.println(s1.length(); 例如:StringBuffer s1 = new StringBuffer(Hello) 5int capacity() 返回StringBuffer對象緩沖區(qū)的容量System.out.println(s1.capacity(); 21NCEPUStringBuffer類 - 常用的方法int lengtStringBuffer類 -
45、 常用的方法void ensureCapacity(int size) 設(shè)置StringBuffer對象的緩沖區(qū)容量 s1.ensureCapacity(50);System.out.println(s1.capacity(); 例如:StringBuffer s1 = new StringBuffer(Hello) 50NCEPUStringBuffer類 - 常用的方法void ensuStringBuffer類 - 常用的方法void setLength(int len) 設(shè)置StringBuffer對象字符長度 s1.setLength(2); System.out.println(s
46、1); 例如:StringBuffer s1 = new StringBuffer(Hello) HeNCEPUStringBuffer類 - 常用的方法void setLStringBuffer類 - 常用的方法StringBuffer append (Object obj) 連接StringBuffer對象 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)生一個內(nèi)容與String對象str相同的StringBufffer對象:StringBuffer sb = new StringBuffer(str); 產(chǎn)生一個內(nèi)容與StringBuffer對象sb相同的String對象:String sb = sb.toSting();NCEPUString與StringBuffer的轉(zhuǎn)換產(chǎn)生一個內(nèi)容與S向量(Vector)是java.util類包提供的一個工具類。它對應(yīng)于類似數(shù)組的順序存儲的數(shù)據(jù)結(jié)構(gòu),但是具有比數(shù)組更強(qiáng)大的功能。它是允許不同類型元素共存的變長數(shù)組。每
48、個Vector類的對象可以表達(dá)一個完整的數(shù)據(jù)序列。第三節(jié) 向量NCEPU向量(Vector)是java.util類包提供的一個工具類Vector類的對象不但可以保存順序的一列數(shù)據(jù),而且還提供了許多有用的方法來操作和處理這些數(shù)據(jù)。 Vector類對象所表達(dá)的序列中元素的個數(shù)是可變的,即Vector實現(xiàn)了變長數(shù)組。Vector類NCEPUVector類的對象不但可以保存順序的一列數(shù)據(jù),而且還提供了Java中的數(shù)組只能保存固定數(shù)目的元素,且必須把所有需要的內(nèi)存單元一次性的申請出來,而不能先創(chuàng)建數(shù)組再追加數(shù)組元素數(shù)量。為了解決這個問題Java中引入了向量類Vector。Vector也是一組對象的集合,
49、但相對于數(shù)組,Vector可以追加對象元素數(shù)量,可以方便的修改和維護(hù)序列中的對象。Vector類NCEPUJava中的數(shù)組只能保存固定數(shù)目的元素,且必須把所有需要的內(nèi)向量比較適合在如下情況下使用: 1. 需要處理的對象數(shù)目不定,序列中的元素都是對象或可以表示為對象 2. 需要將不同類的對象組合成一個數(shù)據(jù)序列 3. 需要做頻繁的對象序列中元素的插入和刪除 Vector類NCEPU向量比較適合在如下情況下使用:Vector類NCEPU向量比較適合在如下情況下使用: 4. 經(jīng)常需要定位序列中的對象和其他查找操作 5. 在不同的類之間傳遞大量的數(shù)據(jù) Vector類的方法相對于數(shù)組要多一些,但是使用這個
50、類也有一定的局限性,例如其中的對象不能是簡單數(shù)據(jù)類型等。Vector類NCEPU向量比較適合在如下情況下使用:Vector類NCEPU(1) 創(chuàng)建向量類的對象 Vector類有三個構(gòu)造方法:Vector():構(gòu)造一個空的向量。Vector(int capacity):以指定的存儲容量構(gòu)造一個空的向量。Vector(int capacity, int capacityIncrement):以指定的存儲容量和容量增量構(gòu)造一個空的Vector。Vector類Vector MyVector=new Vector(100,50); 在創(chuàng)建Vector序列時,不需要指明序列中元素的類型,可以在使用時確定。
51、 這樣創(chuàng)建的MyVector向量序列初始有100個元素的空間,以后一旦使用殆盡則以50為單位遞增,使序列中元素的個數(shù)變化成150,200,。NCEPU(1) 創(chuàng)建向量類的對象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位置處的對象元素設(shè)置成為obj,如果這個位置原來有元素,則被覆蓋。 2. removeElement(Object obj) 刪除向量序列中第一個與指定的obj對象相同的元素,同時將后面的元素前提,補(bǔ)上空位。這個方法返回的是布爾值。 3. removeElementAt(int index) 刪除index指定位置處的元素,同時將后面的元素前提。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) 返回指定位置處的元素。 一個要注意的問題:由于返回
55、的是Object類型的對象,在使用之前通常需要進(jìn)行強(qiáng)制類型轉(zhuǎn)換,將返回的對象引用轉(zhuǎn)換成Object類的某個具體子類的對象。例如: String str=(String)MyVector.elementAt(0);2. boolean contains(Object obj) 檢查向量序列中是否包含指定的對象元素obj。Vector類NCEPU(4)查找向量序列中的元素Vector類NCEPU 3. int indexOf (Object obj,int start_index) 從指定的start_index位置開始向后搜索,返回所找到的第一個與指定對象obj相同的元素的下標(biāo)位置。若指定的對象
56、不存在,則返回1。 4. int lastIndexOf(Object obj,int start_index) 從指定的start_index位置開始向前搜索,返回所找到的第一個與指定對象obj相同的元素的下標(biāo)位置。若指定的對象不存在,則返回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中的元素拷貝到一個數(shù)組中firstElement():返回第一個元素lastElement():返回最后一個元素isEmpty():判斷是否為空setSize(int size):設(shè)置Vector的大小size():返回Vector中元素的數(shù)量trimToSize():將Vector的容量下調(diào)至最小值 Vector類NCEPU(5)Vector中的其他方法Vector類NCEPU使用Vector時,一個需要特別注意的問題就是要先創(chuàng)建后使用。如果不先使用new運(yùn)算符利用構(gòu)造方法創(chuàng)建Vector類的對象,而直接使用Vector的方法,如:add()等
58、方法,則可能造成堆棧溢出或使用null指針等異常,妨礙程序的正常運(yùn)行。Vector類NCEPU使用Vector時,一個需要特別注意的問題就是要先創(chuàng)建后使用例題:用向量實現(xiàn),創(chuàng)建3個學(xué)生對象(學(xué)號、姓名、年齡)和4個教師對象(教工號、姓名、系別),并且輸出。Vector類NCEPU例題:用向量實現(xiàn),創(chuàng)建3個學(xué)生對象(學(xué)號、姓名、年齡)和4個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ī)); st.add(new Tech(10101,熊平,計算機(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等.壓縮文件請下載最新的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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 水域使用權(quán)房產(chǎn)交易附加協(xié)議
- 火車站綠化苗木采購施工合同
- 二零二五年度車輛物流運(yùn)輸智能化升級合同3篇
- 2025年廉政教育合同3篇
- 網(wǎng)絡(luò)支付在農(nóng)村地區(qū)的普及與應(yīng)用-洞察分析
- 2025年餐廳租賃合同范本附帶菜品研發(fā)服務(wù)3篇
- 胃受納與幽門螺旋桿菌耐藥性-洞察分析
- 魚糜制品加工廢棄物資源化-洞察分析
- 設(shè)備廠房轉(zhuǎn)讓合同范本
- 食品原料購銷合同書
- 分期還款協(xié)議書
- 小區(qū)住戶手冊范本
- 海康威視-視頻監(jiān)控原理培訓(xùn)教材課件
- 《鄭伯克段于鄢》-完整版課件
- 土壤肥料全套課件
- 畢業(yè)生延期畢業(yè)申請表
- 學(xué)校6S管理制度
- 肽的健康作用及應(yīng)用課件
- T.C--M-ONE效果器使用手冊
- 8小時等效A聲級計算工具
- 人教版七年級下冊數(shù)學(xué)計算題300道
評論
0/150
提交評論