第4章數(shù)組和字符串_第1頁
第4章數(shù)組和字符串_第2頁
第4章數(shù)組和字符串_第3頁
第4章數(shù)組和字符串_第4頁
第4章數(shù)組和字符串_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第4章數(shù)組和字符串Java語言程序設(shè)計4.1數(shù)組

數(shù)組是一種最簡單的復(fù)合數(shù)據(jù)類型。

數(shù)組是具有一定順序關(guān)系的若干相同類型成員的集合體,組成數(shù)組的成員稱為該數(shù)組的元素。數(shù)組元素可以用一個統(tǒng)一的數(shù)組名和下標(biāo)(序號)來唯一確定。數(shù)組屬于構(gòu)造類型。數(shù)組中的每個元素可以是Java中的基本數(shù)據(jù)類型,也可以是Java中的引用類型(包括類對象、數(shù)組等)。在使用數(shù)組時,會涉及到以下幾個術(shù)語:

數(shù)組名應(yīng)該符合Java語言標(biāo)識符的命名規(guī)則。因為數(shù)組是用來存儲相同類型的數(shù)據(jù),因此數(shù)組的類型就是其所存儲的元素的數(shù)據(jù)類型。數(shù)組的長度指的是數(shù)組中可以容納的元素的個數(shù),而不是數(shù)組所占用的字節(jié)數(shù)。數(shù)組的類型:數(shù)組的長度:數(shù)組名:4.1數(shù)組

一維數(shù)組的使用分兩大步:一維數(shù)組的定義和使用數(shù)組。其中一維數(shù)組的定義又包括數(shù)組聲明和為數(shù)組分配空間、初始化(創(chuàng)建數(shù)組)等內(nèi)容,必要時,還要為數(shù)組元素分配空間或初始化。4.1.1一維數(shù)組

例如:inti[];(或int[]A;)doubledArray[];(或double[]dArray;)StringsArray[];(或String[]sArray;)Buttonbtn[];(或Button[]btn;)int[]a,b,c;(或inta[],b[],c[];)★聲明一維數(shù)組有兩種格式:

格式一:數(shù)組元素類型數(shù)組名[];

格式二:數(shù)組元素類型[]數(shù)組名;數(shù)組名是一個合法的標(biāo)識符,[]指明該變量是一個數(shù)組變量注意:①Java在數(shù)組聲明時并不為數(shù)組分配空間,因此,在聲明的[]中不能指出數(shù)組中元素的個數(shù)(數(shù)組長度)。②數(shù)組聲明之后,尚不能立即被訪問,必須通過初始化、分配存儲空間創(chuàng)建數(shù)組后,才能訪問數(shù)組元素。當(dāng)僅有數(shù)組聲明而尚未分配空間時,數(shù)組變量中只是一個值為null的空引用(指針)。4.1.1一維數(shù)組

①聲明一維數(shù)組可以是Java中任意的基本數(shù)據(jù)類型或引用類型為數(shù)組分配空間有兩種方法:數(shù)組初始化和使用new運算符。為數(shù)組分配空間后,數(shù)組變量中存儲的是數(shù)組存儲空間的引用地址。4.1.1一維數(shù)組

②創(chuàng)建一維數(shù)組(1).一維數(shù)組數(shù)組初始化(靜態(tài)初始化)

類型數(shù)組名[]={初值1[,初值2…]}在數(shù)組聲明的基礎(chǔ)上,在大括號中給出數(shù)組元素的初值,系統(tǒng)將自動按照所給初值的個數(shù)計算出數(shù)組的長度并分配相應(yīng)的存儲空間?;绢愋秃妥址愋偷瓤梢杂眠@種方式創(chuàng)建數(shù)組空間。例如:

intintArray[]={1,2,3,4,5};doubledecArray[]={1.1,2.2,3.3};StringstrArray[]={"Java","BASIC","FORTRAN"};4.1.1一維數(shù)組

②創(chuàng)建一維數(shù)組(2).使用new運算符(動態(tài)初始化)若數(shù)組已經(jīng)聲明,為已聲明數(shù)組分配空間的一般形式如下:

數(shù)組名=new類型[數(shù)組大小];若數(shù)組未聲明,則可在數(shù)組聲明的同時用new運算符為數(shù)組分配空間:類型數(shù)組名[]=new類型[數(shù)組大小];數(shù)組大小是數(shù)組的長度,可以為整型常量或變量例:inta[];a=newint[10];doubleb[]=newdouble[5];Strings[]=newString[2];4.1.1一維數(shù)組

②創(chuàng)建一維數(shù)組注意:使用new運算符創(chuàng)建數(shù)組時,系統(tǒng)會給數(shù)組元素提供默認初始值:數(shù)值型數(shù)組元素的默認初值是0;char類型數(shù)組元素的默認初值是全0代碼字符;布爾類型數(shù)組元素的默認初值是false。所有數(shù)組都有一個成員length,程序可以訪問它,獲得數(shù)組的元素個數(shù),但不能改變它。4.1.1一維數(shù)組

②創(chuàng)建一維數(shù)組一維數(shù)組元素的引用方式為:

數(shù)組名[下標(biāo)]其中:下標(biāo)是一般為int類型的,取值從0開始,直到數(shù)組的長度減1。一維數(shù)組元素的引用與同類型的變量相同。Java對數(shù)組元素要進行越界檢查以保證安全性。若數(shù)組元素下標(biāo)小于0、大于或等于數(shù)組長度將產(chǎn)生下面的異常:ArrayIndexOutOfBoundsExceptionJava語言對于每個數(shù)組都有一個指明數(shù)組長度的屬性length,它與數(shù)組的類型無關(guān)。例如intArray.length等。4.1.1一維數(shù)組

③引用一維數(shù)組元素【例4.1】小應(yīng)用程序先聲明一個數(shù)組a,在方法init()中創(chuàng)建它,指定有5個元素,然后為數(shù)組元素逐一賦值。在方法paint()中輸出各元素的值。通常對數(shù)組的處理與循環(huán)語句結(jié)合在一起,實現(xiàn)對數(shù)組元素依次作某種處理。intmyArray[]=newint[5];//數(shù)組的全部元素初始化為0for(intindex=0;index<myArray.length;index++){ myArray[index]=index+1; System.out.println(myArray[index]);}4.1.1一維數(shù)組

③引用一維數(shù)組元素【例4.2】數(shù)組也是一種引用類型,一個數(shù)組名在不同時間可引用不同的數(shù)組。4.1.1一維數(shù)組

③引用一維數(shù)組元素在Java語言中,多維數(shù)組被看作數(shù)組的數(shù)組。4.1.2多維數(shù)組

聲明二維數(shù)組的一般形式為:

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

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

類型[]數(shù)組名[];數(shù)組聲明中的類型,可以是簡單類型,也可以是復(fù)合類型。與一維數(shù)組時的情況一樣,對數(shù)組的聲明不分配數(shù)組的存儲空間。charc[][]floatf[][]Strings[][]4.1.2多維數(shù)組

①聲明二維數(shù)組(1)二維數(shù)組的初始化二維數(shù)組的初始化也是在聲明數(shù)組的同時就為數(shù)組元素指定初值。

類型數(shù)組名[][]={{初值表1},{初值表2},…,{初值表n}};例如:inta[][]={{1,2},{3,4},{5,6,7}};Java系統(tǒng)將根據(jù)初始化時給出的初始值的個數(shù)自動計算出數(shù)組每一維的大小。4.1.2多維數(shù)組

②創(chuàng)建二維數(shù)組【補充例】定義一個三角形的二維數(shù)組classArrayLengths{publicstaticvoidmain(Stringargs[]){intiarray[][]={{44},{-22,16},{11,-12,-99}};System.out.println("iarray.length="+iarray.length);System.out.println("iarray[0].length="+iarray[0].length);System.out.println("iarray[1].length="+iarray[1].length);System.out.println("iarray[2].length="+iarray[2].length);}}數(shù)組名.length表示二維數(shù)組的行數(shù)數(shù)組名[行號].length表示該行的元素個數(shù)4.1.2多維數(shù)組

②創(chuàng)建二維數(shù)組(2)使用new運算符ⅰ.若數(shù)組已聲明,為已聲明數(shù)組分配空間:數(shù)組名=new類型[數(shù)組長度1][數(shù)組長度2]ⅱ.若數(shù)組未聲明,可在聲明數(shù)組的同時用new運算符為數(shù)組分配空間:

類型數(shù)組名[][]=new類型[數(shù)組長度1][數(shù)組長度2]例:inta[][];a=newint[3][4];doubled[][]=newdouble[2][5];Strings[][]=newString[2][2];4.1.2多維數(shù)組

②創(chuàng)建二維數(shù)組(2)使用new運算符ⅲ.可以從最高維開始,分別為每一維分配空間例:例:inta[][]=newint[2][];a[0]=newint[3];a[1]=newint[5];inta[][]=newint[][2];intb[][]=newint[][];注意:在使用運算符new來分配內(nèi)存時,對于多維數(shù)組至少要給出最高維的大小.4.1.2多維數(shù)組

②創(chuàng)建二維數(shù)組對于二維數(shù)組,要注意以下兩點:(1)二維數(shù)組名.length和二維數(shù)組名[下標(biāo)1].length的區(qū)別。二維數(shù)組名.length是二維數(shù)組的子數(shù)組個數(shù);二維數(shù)組名[下標(biāo)1].length是指定子數(shù)組的元素個數(shù)。(2)二維數(shù)組名[下標(biāo)]是一維數(shù)組?!纠?.3】一個含有三角二維數(shù)組的應(yīng)用程序4.1.2多維數(shù)組

③使用二維數(shù)組要注意的問題字符串是字符的序列,可以包含字母、數(shù)字和其他符號,它是組織字符的基本的數(shù)據(jù)結(jié)構(gòu)。字符串常量是用雙引號括起的一個字符串,是匿名的String類的對象。Java將字符串當(dāng)作對象來處理,它提供了一系列的方法對整個字符串進行操作,使得字符串的處理更加容易和規(guī)范。Java語言中的包java.lang中封裝了final類String和StringBuffer,其中類String對象是字符串常量,建立后不能改變。而類StringBuffer對象類似于一個字符緩沖區(qū),建立后可以修改。"我們贏了^_^""2008奧運加油!\n"4.2字符串

一.定義格式以前使用的每個字符串常量(用雙引號括起來的一串字符)實際上都是String對象,因此,可以用字符串常量直接初始化一個String對象。例如:

Strings="HelloWorld.";注意:String類是字符串常量類,String對象建立后不能修改。由于每個字符串常量對應(yīng)一個String類的對象,所以對一個字符串常量可以直接調(diào)用類String中提供的方法。4.2.2字符串的聲明和創(chuàng)建

Strings="HelloWorld.";Inta=s.length(

);inta="abcd!".length(

);二.類String構(gòu)造方法例如:

Strings=newString();

其他創(chuàng)建String對象的構(gòu)造方法有:String(Stringvalue)用已知串value創(chuàng)建一個字符串對象。String(charchars[])用字符數(shù)組chars創(chuàng)建一個字符串對象。String(charchars[],intstartIndex,intnumChars)用字符數(shù)組chars的startIndex位置開始的numChats個字符,創(chuàng)建一個字符串對象。String(byte[]bytes)構(gòu)造一個新的String,方法是使用平臺的默認字符集解碼字節(jié)的指定數(shù)組。String(byte[]bytes,intoffset,intlength)該方法使用默認字符編碼,用指定字節(jié)數(shù)組的一部分,即從數(shù)組起始位置offset開始取length個字節(jié)構(gòu)造一個字符串對象。此構(gòu)造方法不需要任何參數(shù),它生成一個空字符串。也可以由字符數(shù)組或字節(jié)數(shù)組來生成一個字符串對象?!狙a充例】類String構(gòu)造方法的使用。publicclassStringConstructors{publicstaticvoidmain(Stringargs[]){Strings,s1,s2,s3,s4,s5,s6;bytebyteArray[]={(byte)'J',(byte)'a',(byte)'v',(byte)'a'};charcharArray[]={'程','序','設(shè)','計'};Stringsb=newString("歡迎");;s=newString("Hello!");s1=newString();s2=newString(s);s3=newString(sb);s4=newString(charArray,2,2);s5=newString(byteArray,0);s6=newString(charArray);System.out.println("s="+s);System.out.println("s1="+s1);System.out.println("s2="+s2);System.out.println("s3="+s3);System.out.println("s4="+s4);System.out.println("s5="+s5);System.out.println("s6="+s6);}}結(jié)果為:s=Hello!s1=s2=Hello!s3=歡迎s4=設(shè)計s5=Javas6=程序設(shè)計1、連接運算符:+2、方法:concat(Strings)4.2.3字符串基本操作

①字符串連接publicclassExample4_4{staticpublicvoidmain(Stringagrs[]){Strings1="ABC";Strings2="DEFG";System.out.println(s1+s2);s1="ABC";s2="XYZ";s1=s1.concat(s2);System.out.println(s1);}}length()方法可以獲取一個字符串的長度。

Strings=“我是學(xué)生”;

intstrlen=s.length();

strlen的值是4。字符串常量也可以使用length()獲得長度?!拔沂呛脤W(xué)生”.length()的值是5。4.2.3字符串基本操作

②獲取字符串長度booleanstartsWith(Strings)方法:

判斷一個字符串的前綴是否是字符串s。如:

Stringstr1=“220302620629021”;

Stringstr2=“21079670924022” str1.startsWith(“220”)的值是true;

str2.startsWith(“220”)的值是false。booleanendsWith(Strings)方法:判斷一個字符串的后綴是否是字符串s。如:

Stringstr1=“220302620629021”;

Stringstr2=“21079670924022”;

str1.endsWith(“021”)的值是true;

str2.endsWith(“021”)的值是false。

4.2.3字符串基本操作

③字符串前綴和后綴(1)booleanequals(ObjectanObject)和booleanequalsIgnoreCase(StringanotherString)例System.out.println("abc".equals("abc"));System.out.println("abc".equalsIgnoreCase("ABC"));注意:它們與運算符“==”實現(xiàn)的比較是不同的運算符“==”比較兩個字符串對象是否引用同一個實例對象,而equals()和equalsIgnoreCase()則比較兩個字符串中對應(yīng)的每個字符是否相同。比較兩個字符串的值是否相等,后者忽略字母的大小寫。4.2.3字符串基本操作

④比較兩個字符串是否相同Strings=newString("abc");Strings1=newString("abc");//s,s1是兩個不同的對象System.out.println(s==s1);System.out.println(s.equals(s1));System.out.println("abc"=="abc");falsetruetrue(2)intcompareTo(StringanotherString)通過返回的整數(shù)值指明當(dāng)前字符串與參數(shù)字符串的大小關(guān)系。若比較的兩個字符串有不同的字符,則從左邊數(shù)起的第一個不同字符的大小即兩個字符串的大小。publicclassStringConstructors{publicstaticvoidmain(Stringargs[]){System.out.println("this".compareTo("that"));System.out.println("abcd".compareTo("abcfg"));System.out.println("abcd".compareTo("abcd"));System.out.println("abc".compareTo("abcgdr"));

System.out.println("abc".compareTo("ab"));System.out.println("this".compareToIgnoreCase("THIS"));

}}若比較的兩個字符串各個位置的字符都相同,僅長度不同,則方法的返回值為:

this.length()-anotherString.length()忽略字母大小寫8-20-3104.2.3字符串基本操作

④比較兩個字符串是否相同intindexOf(intch)有重載:intindexOf(Stringstr)intindexOf(Stringstr,intfromIndex)

實現(xiàn)字符串檢索。前一個方法是從指定字符串的頭開始檢索參數(shù)字符串s,返回字符串s首次出現(xiàn)的位置。后一個方法則在指定字符串中從某個位置開始檢索參數(shù)字符串s,返回字符串s首次出現(xiàn)的位置。如果沒有檢索到,則返回-1。4.2.3字符串基本操作

⑤字符串檢索Strings=“ABCDEFGHIJABC”;s.indexOf(“C”);//值是2s.indexOf(“EFG”,2);//值是4s.indexOf(“A”,7);//值是10s.indexOf(“D”,4);//值是-1

Stringsubstring(intbeginindex)和

Stringsubstring(intbeginindex,intendindex)

方法的功能是返回子字符串。前者返回從位置beginindex開始處到串尾的子字符串;后者是返回從beginindex開始到endindex-1為止的子字符串。【例】"abcd".substring(2)"abcd".substring(1,2)"abcd".substring(2,4)結(jié)果為:"cd""b""cd"4.2.3字符串基本操作

⑥取字符串的子串

Stringreplace(charoldChar,charnewChar)

用參數(shù)newChar指定的字符替換s中由oldChar指定的所有字符,產(chǎn)生一個新的字符串?!纠?Strings1=“1234567788”;

Strings2=s1.replace(‘7’,‘A’);結(jié)果:創(chuàng)建兩個String對象:

s1為“1234567788”,s2為”123456AA88”4.2.3字符串基本操作

⑦字符串替換

Stringtrim()

該方法的功能是截去字符串兩端的空白字符?!纠?.2.3字符串基本操作

⑧字符串去空格publicclassExample4_5{staticpublicvoidmain(Stringargs[]){Strings="1234567788",str;str=s.replace('7','A');System.out.println("s="+s+"str="+str);Strings2="1234567788",str2;str2=s2.trim();System.out.println("s2="+s2+"|str2="+str2+"|");}}方法trim()不能改變字符串自己,而是產(chǎn)生一個新的字符串(1)staticStringvalueOf(Objectobj)該方法的功能是將其他類的參數(shù)轉(zhuǎn)換為字符串對象返回。為了方便起見,類String中提供了重載的靜態(tài)方法valueOf(),用來把其他類型的對象轉(zhuǎn)換為字符串對象。注:其他類也提供了方法valueOf()把一個字符串轉(zhuǎn)換為相應(yīng)的類對象。4.2.3字符串基本操作

⑨類String與其他類的轉(zhuǎn)換System.out.println(String.valueOf(Math.PI));StringpiStr="3.14159";Floatpi=Float.valueOf(piStr);String對象轉(zhuǎn)換為Float對象用法總結(jié):類型.valueOf(某類的對象)作用:把某類的對象所代表的內(nèi)容轉(zhuǎn)換為相應(yīng)的類型(2)toString()java.lang.Object中提供了方法toString()把對象轉(zhuǎn)換為字符串,這一方法通常被重寫以適合子類的需要。例如:在實際應(yīng)用中,也經(jīng)常需要將字符串轉(zhuǎn)換為其他類型的數(shù)據(jù)。例如:4.2.3字符串基本操作

⑨類String與其他類的轉(zhuǎn)換Strings=Integer.toString(123);System.out.println(s);//輸出為123Strings="125";Integerobj=

Integer.valueOf(s);inti=Value();//上兩行也可合寫為://inti=Integer.valueOf(s).intValue();教材p79【例4.8】程序獲取Date對象的小時、分和秒,獲得Date對象的字符串表示,并測試一個循環(huán)所消耗的時間。4.2.3字符串基本操作

⑨類String與其他類的轉(zhuǎn)換importjava.util.*;publicclassExample4_8{publicstaticvoidmain(Stringargs[]){Datedate1=newDate();System.out.println("日期及時間是:"+date1);Stringt=date1.toString();t=t.substring(11,t.indexOf('C'));//截取時、分、秒部分。System.out.println("現(xiàn)在時間是:"+t);doublesum=0.0;for(doublei=0;i<80000000;i++){sum=sum+i;}System.out.println(""+sum);Datedate2=newDate();//循環(huán)結(jié)束后的時間。t=date2.toString();t=t.substring(11,t.indexOf('C'));//字符C之前為時分秒System.out.println("現(xiàn)在時間是:"+t);}}

字符串轉(zhuǎn)化為整型

用Integer.parseInt(Strings)方法 intx;Strings=“6542”; x=Integer.parseInt(s);

字符串轉(zhuǎn)化為long型數(shù)據(jù)

用Long.parseLong(Strings)方法 longx;Strings=“46046542”; x=Long.parseLong(s);4.2.3字符串基本操作

⑩字符串轉(zhuǎn)換為基本類型

字符串轉(zhuǎn)化為float型

用Float.parseFloat(Strings)方法floatf=Float.parseFloat("12.35"),使f的值為12.35。

字符串轉(zhuǎn)化為double型

用Double.parseDouble(Strings)方法doubled=Double.parseDouble("12.35"),使d的值為12.354.2.3字符串基本操作

⑩字符串轉(zhuǎn)換為基本類型是java.util包中的類,用于語言符號(單詞)分析。如:字符串“WearelearningJavaprogramming”,如果把空格作分隔符,那么該串有5個單詞。

4.2.4StringTokenizer類

一、構(gòu)造方法

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論