java4數(shù)組字符串向量(1)_第1頁
java4數(shù)組字符串向量(1)_第2頁
java4數(shù)組字符串向量(1)_第3頁
java4數(shù)組字符串向量(1)_第4頁
java4數(shù)組字符串向量(1)_第5頁
已閱讀5頁,還剩59頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第4章 數(shù)組、字符串、向量與哈希表7/16/20221本章總體綱要數(shù)組字符串字符串緩沖區(qū)向量哈希表7/16/20222數(shù)組由相同類型的若干項(xiàng)數(shù)據(jù)組成例如:public static void main(String args)其中args是String類型的數(shù)組占用連續(xù)的內(nèi)存地址數(shù)組的靜態(tài)性一旦創(chuàng)建就不能修改數(shù)組的長(zhǎng)度類似于動(dòng)態(tài)數(shù)組的類型類Vector長(zhǎng)度可以變大或縮小7/16/20223數(shù)組聲明一維數(shù)組變量的聲明格式有如下兩種:(1)數(shù)組元素的數(shù)據(jù)類型 變量名;(2)數(shù)組元素的數(shù)據(jù)類型 變量名 ;示例:int c; String names; int c ; String names ; 7

2、/16/20224內(nèi)存分配Java數(shù)組實(shí)際上也是對(duì)象,所以可通過new 關(guān)鍵字來創(chuàng)建示例:int c; / 聲明c = new int12; / 創(chuàng)建對(duì)象,并分配內(nèi)存聲明時(shí)不必指定數(shù)組的大小上面的兩個(gè)語句可以簡(jiǎn)化成一個(gè)語句int c = new int12;7/16/20225聲明和初始化數(shù)組聲明數(shù)組 type arrayName ; 或 type arrayName;給數(shù)組分配內(nèi)存(也叫初始化) arrayName =new typesize;可以在同一條語句中對(duì)數(shù)組聲明并初始化 type arrayname =new typesize;如何獲得數(shù)組的長(zhǎng)度? 數(shù)組名.length7/16/2

3、0226數(shù)組元素的初始化基本數(shù)據(jù)類型的元素初始化為0值或false非基本數(shù)據(jù)類型的元素初始化為null 可以采用循環(huán)結(jié)構(gòu)初始化數(shù)組示例:double squares; squares = new double100; for (int i=0; i squares.length; i+) squaresi = i*i; 7/16/20227示例使用數(shù)組可以通過數(shù)組名與下標(biāo)每個(gè)數(shù)組元素類似于普通的變量c 0 = 3;c 0 += 5;7/16/20228下標(biāo)有時(shí)也稱為索引必須是整數(shù)或整數(shù)表達(dá)式, 例如:c11注:表達(dá)式可以是常數(shù)、變量、以及由常數(shù)、變量和運(yùn)算符組成的式子7/16/20229通過初

4、始化語句創(chuàng)建數(shù)組Java語言允許通過數(shù)組的初始化語句創(chuàng)建數(shù)組示例: int n = 10, 20, 30, 40, 50 ;上面語句創(chuàng)建了一個(gè)含有五個(gè)元素的數(shù)組下標(biāo)值分別為0, 1, 2, 3, 4這時(shí)不需要運(yùn)算符new7/16/202210注意事項(xiàng)當(dāng)通過循環(huán)遍歷數(shù)組時(shí)下標(biāo)永遠(yuǎn)不要低于0下標(biāo)永遠(yuǎn)要比數(shù)組元素個(gè)數(shù)小當(dāng)數(shù)組下標(biāo)出錯(cuò),Java 產(chǎn)生 ArrayIndexOutOfBoundsException7/16/202211數(shù)組作為輸入?yún)?shù)數(shù)組可以作為方法的輸入變量(形式參數(shù))和返回值,在聲明它們時(shí)必須用空括號(hào),而且不能指定其大小。數(shù)組是引用類型,將其作為輸入?yún)?shù)(即形參),在方法內(nèi)對(duì)它的數(shù)據(jù)

5、元素所作的改變將影響到方法外7/16/202212public class AaaryParameters public static void changeOrNot(int i, double x) i=-1; x0=-2.0; double y=x; y1=-3.0; double z =-4,-4,-4; x=z; public static void main(String args ) int k=1; double A =1.0, 2.0, 3.0; changeOrNot(k,A); System.out.println(“k: + k); System.out.println

6、(“A0: + A0); System.out.println(“A1: + A1); System.out.println(“A2: + A2); 運(yùn)行結(jié)果:A0:-2.0A1:-3.0A3:3.07/16/202213多維數(shù)組最常用的多維數(shù)組是二維數(shù)組 int a = new int34;二維數(shù)組可以理解成如下圖示的表格a 0 0 a 1 0 a 2 0 a 0 1 a 1 1 a 2 1 a 0 2 a 1 2 a 2 2 a 0 3 a 1 3 a 2 3 行的下標(biāo)值列的下標(biāo)值7/16/202214示例 1類似于一維數(shù)組進(jìn)行二維數(shù)組的聲明、創(chuàng)建(內(nèi)存分配)與初始化示例:class J_

7、FillArray public static void main (String args) int matrix = new int45; for (int row=0; row 4; row+) for (int col=0; col 5; col+) matrixrowcol = row + col; / 內(nèi)部for循環(huán)結(jié)束 / 外部for循環(huán)結(jié)束 / 方法main結(jié)束 / 類J_FillArray結(jié)束7/16/202215示例 2通過初始化語句創(chuàng)建數(shù)組示例: double c = 1.0, 2.0, 3.0, 4.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.

8、0, 0.0 ; 7/16/202216注意事項(xiàng)Java的多維數(shù)組實(shí)際上是數(shù)組的數(shù)組即創(chuàng)建以數(shù)組為元素的數(shù)組意味著: 二維數(shù)組的每一行可以具有不同的列數(shù)示例:int a ;a = new int 3 ; / allocate rowsa 0 = new int 3 ; / allocate row 0a 1 = new int 2 ; / allocate row 1a.length 行數(shù)a i .length 第i行列數(shù)7/16/202217三維數(shù)組思維的擴(kuò)展: 一維數(shù)組二維數(shù)組三維數(shù)組示例:class J_Fill3DArray public static void main (Strin

9、g args) int M = new int453; for (int row=0; row 4; row+) for (int col=0; col 5; col+) for (int ver=0; ver 3; ver+) Mrowcolver = row + col + ver; / 內(nèi)部for循環(huán)結(jié)束 / for循環(huán)結(jié)束 / 外部for循環(huán)結(jié)束 / 方法main結(jié)束 / 類J_Fill3DArray結(jié)束7/16/202218注意事項(xiàng)Java允許數(shù)組的維數(shù)為: 三、四、或更大但是,慎用高維數(shù)組甚至三維數(shù)組在實(shí)際的應(yīng)用中也比較少出現(xiàn)7/16/202219本章總體綱要數(shù)組字符串字符串緩沖區(qū)

10、向量哈希表7/16/202220String的基本知識(shí)String與C語言不同: 字符(char)數(shù)組不是字符串(String)String數(shù)值不必以u(píng)0000結(jié)束String aString bString cHello World!7/16/202221String 直接量String 直接量雙引號(hào)括起來的字符序列示例: “Hello” 或 “您好字符串賦值可以在聲明時(shí)賦值String c = blue;c是String類型的變量blue是String直接量7/16/202222String 構(gòu)造類 String共有11個(gè)構(gòu)造方法,其中兩個(gè)不被贊成使用(deprecated)參見docsi

11、ndex.html7/16/202223創(chuàng)建String對(duì)象常用的三種方法String( ): 初始化一個(gè)新的String對(duì)象 String s1=new String( ); s1=“您好”;String(String value):初始化一個(gè)新的String對(duì)象,使其包含與參數(shù)字符串相同的字符序列 String s2; s2=“您好”; 以上兩句常合并為一句: String s2=“您好”;String(char value): 分配一個(gè)新的String對(duì)象,使它代表字符數(shù)組參數(shù)包含的字符序列 char c=您, 好; String s3=new String( c ); 7/16/202

12、224示例/ J_StringConstructors.java; 開發(fā)者: 雍俊海/ 字符串構(gòu)造方法例程public class J_StringConstructors public static void main(String args ) String s1 = null; String s2 = new String( ); String s3 = 您好!; String s4 = new String( s3 ); System.out.println(s1: + s1); System.out.println(s2: + s2); System.out.println(s3:

13、+ s3); System.out.println(s4: + s4); / 方法main結(jié)束 / 類J_StringConstructors結(jié)束s1不指向任何字符串對(duì)象String構(gòu)造方法: 創(chuàng)建空字符串String構(gòu)造方法: 創(chuàng)建新字符串字符串直接量7/16/202225練習(xí):使用數(shù)組存儲(chǔ)一個(gè)英文句子:“Java is an objected oriented programming language”,顯示該句子,并算出每個(gè)單詞的平均字母數(shù)。問題分析:為了算出每個(gè)單詞的平均字母數(shù),需要把字符總數(shù)除以單詞數(shù)7/16/202226public class AverageCharacters

14、public static void main(String args ) String s=“Java ”, “is ” , “an ” , “object ” , “oriented ” , “programming ” , “l(fā)anguage”; int numChars=0; for(int i=0; is.length; i+) System.out.print(si); numChars += si.length(); System.out.println( ); System.out.println(“Total chars: + numChars); System.out.pr

15、intln (“Total words: + s.length); System.out.println(“Avg.chars: + (double)numChars/s.length);7/16/202227String 方法:length( ), charAt( ) 和 getChars( )方法 length( )返回 String 的長(zhǎng)度與數(shù)組不同之處: Strings不含有 length成員域方法charAt(int index) 獲得字符串指定位置的字符方法getChars(int srcBegin, int srcEnd, char dst, int dstBegin) 拷貝字符

16、串的部分字符序列到指定的字符數(shù)組的指定位置7/16/202228字符串比較字符串(String)比較字符類型的數(shù)據(jù)也是數(shù)值類型數(shù)據(jù)比較字符串大小,實(shí)際上就是依次比較其所包含的字符的數(shù)值大小小寫字母與大小字母是不相同的7/16/202229= 運(yùn)算符當(dāng)用于基本數(shù)據(jù)類型時(shí),用于判別是否相等當(dāng)用于引用數(shù)據(jù)類型時(shí),用來判別引用是否指向相同的對(duì)象Java虛擬機(jī)中含有字符串池(直接量在此池內(nèi)),相同內(nèi)容的字符串直接量相同的對(duì)象s1 = “hello”; / 字符串直接量s2 = new String( hello );s1 = hello; / trues2 = hello; / false7/16/20

17、2230字符串(String)比較方法boolean equals(Object anObject)比較當(dāng)前的字符串與指定的對(duì)象比較結(jié)果為真當(dāng)且僅當(dāng)給定的參數(shù)不為空,并且具有完全相同的字符序列 例如: s1.equals( Hi );boolean equalsIgnoreCase(String anotherString)判別相等,但不區(qū)分大小寫例如: 在不區(qū)分大小寫情況下, “hello”與“HELLO”相等7/16/202231字符串(String)比較方法int compareTo(String anotherString) 比較兩個(gè)字符串的內(nèi)容返回: 0 : 如果字符串內(nèi)容完全相同小

18、于0的值: 如果在比較第一個(gè)不相同字符,當(dāng)前字符串的字符的值小于anotherString對(duì)應(yīng)的字符的值大于0的值: 如果在比較第一個(gè)不相同字符,當(dāng)前字符串的字符的值大于anotherString對(duì)應(yīng)的字符的值int compareToIgnoreCase(String str) 比較兩個(gè)字符串的內(nèi)容,但不區(qū)分大小寫7/16/202232查找字符串中的字符或子串查找字符串(String)中的字符或子串方法indexOf四種重載方法 indexOf返回第一次找到的時(shí)下標(biāo)如果沒有找到,則返回-1示例:String name = CoolTools;System.out.println (name.

19、indexOf(oo);7/16/202233查找字符串中的字符或子串方法 lastIndexOf public int lastIndexOf(int ch, int fromIndex) 從指定位置往回查找,返回找到的最大的字符下標(biāo)位置即返回滿足下面條件的最大值:(this.charAt(k) = ch) & (k = 0; c-) dest.append(source.charAt(c); return dest.toString();7/16/202249insert 和 delete 方法方法insert允許將各種數(shù)據(jù)插到StringBuffer對(duì)象的指定位置方法 delete(in

20、t start, int end) 和 deleteCharAt(int index) 允許刪除StringBuffer對(duì)象中的指定字符7/16/202250本章總體綱要數(shù)組字符串字符串緩沖區(qū)向量哈希表7/16/202251向量向量所對(duì)應(yīng)的類是類java.util.Vector向量變量的聲明格式Vector 變量名;示例Vector vs;7/16/202252創(chuàng)建向量實(shí)例對(duì)象Vector vs = new Vector( );Vector vo = new Vector( );7/16/202253增加元素public boolean add(E o)public void addEleme

21、nt(E obj)示例vs.add(Tom);7/16/202254修改元素public E set(int index, E element)public void setElementAt(E obj, int index)7/16/202255刪除元素public void clear( )public void removeAllElements( )public E remove(int index)public void removeElementAt(int index)7/16/202256通過迭代器(iterator)獲取向量對(duì)象的各個(gè)元素類java.util.Vector的成員方法public Iterator iterator( )接口java.util.Iterator的成員方法boolean hasNext( )接口java.util.Iterator的成員方法E next( )7/16/202257本章總體綱要數(shù)組字符串字符串緩沖區(qū)向量哈希表7/16/202258哈希函數(shù)或散列函數(shù)示例h1(s)=s0*31(n-1)+s1*31(n-2)+. . +sn-1哈希碼(hash code)或散列索引由哈希函數(shù)計(jì)算出來的數(shù)值7/16/2

溫馨提示

  • 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)論