




已閱讀5頁,還剩43頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
Java中的字符串,一、字符串的表示 Java中的字符串類 String和StringBuffer String的字符串的內(nèi)容是不能改變的 StringBuffer的字符串的內(nèi)容是可以改變的 1字符串常量 字符串常量是用雙引號括住的一串字符。 “Hello World!“,2下面用不同方法生成字符串“abc“: char chars1=a,b,c; char chars2=a,b,c,d,e; String s1=new String(chars1); String s2=new String(chars2,0,3); byte ascii1=97,98,99; String s3=new String(ascii1,0);,String 類的定義和實例的生成 例: String str; str=“this is a string” 或: String str1=new String(“hello”); 或: String str2=“aaaa”;,String類與其它類型的轉(zhuǎn)換 例1:將實型數(shù)轉(zhuǎn)換成字符串 System.out.println(String.valueOf(Math.PI);,String類的比較 有兩個字符串str1,str2 str1=str2為真; 是指兩個引用指向同一個地址 str1.equals(str2)為真,是指兩個字符串內(nèi)容相等,例:s1=“abc”; s2=“abc”; s1=s2; 真?假? s1.equals(s2); 真?假?,字符串“+”操作 運算符+可用來實現(xiàn)字符串的連接: String s = “He is “+age+“ years old.“; 其他類型的數(shù)據(jù)與字符串進行“+“運算時,將自動轉(zhuǎn)換成字符串。具體過程如下: String s=new StringBuffer(“he is“).append(age).append(“years old“).toString(); 注意:除了對運算符“+“進行了重載外,java不支持其它運算符的重載。,3用StringBuffer表示字符串 StringBuffer的字符串的內(nèi)容是可以改變的,創(chuàng)建StringBuffer對象 StringBuffer( ); /*分配16個字符的緩沖區(qū)*/ StringBuffer( int len ); /*分配len個字符的緩沖區(qū)*/ StringBuffer( String s ); /*除了按照s的大小分配空間外,再分配16個字符的緩沖區(qū)*/ StringBuffer str=new Stringbuffer(“hello”);,獲取StringBuffer對象的length()信息 int len=str.length();,例:StringBuffer sb=new StringBuffer(“Drink Java!”); sb.insert(6,”Hot ”); System.out.println(sb.toString();,Drink Hot Java!,思考: String s=“abc”; s=“abcd” String 類型的值是常量,值不能改變,為什么可以重新賦值呢?,數(shù)組,目 標 - 解釋為什么數(shù)組的元素需初始化 - 給出數(shù)組定義并初始化數(shù)組元素 - 確定一個數(shù)組中元素的數(shù)量 - 創(chuàng)建二維數(shù)組 - 聲明并創(chuàng)建數(shù)組 - 編寫從一個數(shù)組類型到另一個數(shù)組類型數(shù)組值的拷貝代碼,數(shù)組的特征: 有序、具有相同類型、通過數(shù)組名和下標確定數(shù)組中的元素。,一、 一維數(shù)組 1 一維數(shù)組的定義 type arrayName ; 類型(type)可以為Java中任意的數(shù)據(jù)類型,包括簡單類型和復(fù)合類型。 例如: int intArray ; int intArray; Date dateArray;,- 為一個引用創(chuàng)建空間:聲明不能創(chuàng)建對象本身,而創(chuàng)建的是一個引用,該引用可被用來引用數(shù)組。 - 注意:int intArray ;聲明數(shù)組時,中括號內(nèi)沒有數(shù)值。 - 數(shù)組是一個對象,而不是為原始類型儲備的存儲器。數(shù)組元素使用的實際存儲器可由new語句或數(shù)組初始化軟件動態(tài)分配。,二、 創(chuàng)建數(shù)組 使用關(guān)鍵字new 創(chuàng)建一個數(shù)組對象: int a=new int8; 等同于: int a; a=new int8;,例:p = new Point 100; p0 = new Point(); p1 = new Point(); 例:一條聲明語句中創(chuàng)建多個數(shù)組: String s1=new String3,s2=new String2; 用來指示單個數(shù)組元素的下標必須總是從0開始,并保持在合法范圍之內(nèi)大于0或等于0并小于數(shù)組長度。,三、一維數(shù)組的初始化, 靜態(tài)初始化 int intArray=1,2,3,4; String stringArray=“abc“, “How“, “you“;, 動態(tài)初始化 1)簡單類型的數(shù)組 說明:(即數(shù)組元素為簡單數(shù)據(jù)類型的數(shù)組) int intArray; intArray = new int5;,注意沒有,2)復(fù)合類型的數(shù)組(也可稱為對象數(shù)組) String stringArray ; String stringArray = new String3;/*為數(shù)組中每個元素開辟引用空間*/ stringArray0= new String(“How“);/為第一個數(shù)組元素開辟空間 stringArray1= new String(“are“);/為第二個數(shù)組元素開辟空間 stringArray2= new String(“you“);/ 為第三個數(shù)組元素開辟空間,數(shù)組的內(nèi)存分配圖,基本數(shù)據(jù)類型一維數(shù)組內(nèi)存分配,棧內(nèi)存,堆內(nèi)存,num,c,0,0,0,0088:4400,0088:4400,new int3產(chǎn)生的對象,數(shù)組的內(nèi)存分配圖,基本數(shù)據(jù)類型一維數(shù)組內(nèi)存分配,棧內(nèi)存,堆內(nèi)存,num,c,0,0,0,null,0088:4400,new int3產(chǎn)生的對象,num=null;,數(shù)組內(nèi)存分配,例子: Class Student int num; String name; Student(int num,String name) this.num=num; =name; public String toString() return “number=“+num+“,“+“name=“+name; ,對象數(shù)組的內(nèi)存分配,棧內(nèi)存,堆內(nèi)存,students,null,Student students;,對象數(shù)組的內(nèi)存分配,堆內(nèi)存,students,c,0088:4400,0088:4400,new students3產(chǎn)生的對象,null,null,Student students; students=new Student3;,null,棧內(nèi)存,對象數(shù)組的內(nèi)存分配,堆內(nèi)存,students,c,0088:4400,0088:4400,new students3產(chǎn)生的對象,null,null,Student students; students=new Student3; students0=new Student(“l(fā)isi”,18);,student0 標識的 Student對象,lisi,18,0088:4660,0088:4660,棧內(nèi)存,四一維數(shù)組元素的引用 數(shù)組元素的引用方式為: arrayNameindex index為數(shù)組下標,它可以為整型常數(shù)或表達式,下標從0開始。 每個數(shù)組都有一個屬性length指明它的長度,例如:intArray.length指明數(shù)組intArray的長度。,問題:intArray的最后一個元素的下標用length怎么表示?,元素最大下標為length1,public class HelloWorld public static void main(String arg) int myArray; myArray=new int10; System.out.println(“index value“); for(int i=0;imyArray.length;i+) System.out.println(i+“ “+myArrayi); /初始化默認值為0,注意所有變量的初始化(包括數(shù)組元素)是保證系統(tǒng)安全的基礎(chǔ),變量絕不能在未初始化狀態(tài)使用。,變量初始化 在Java程序中,任何變量都必須經(jīng)初始化后才能被使用。當一個對象被創(chuàng)建時,實例變量在分配存儲器的同時被下列值初始化: byte 0 short 0 int 0 long 0L float 0.0f double 0.0d char u0000 (NULL) boolean false All reference types Null 注意 一個具有空值的引用不引用任何對象。試圖使用它引用的對象將會引起一個異常。異常是出現(xiàn)在運行時的錯誤,這將在 “異?!敝杏懻摗?在方法外定義的變量被自動初始化。局部變量必須在使用之前做“手工”初始化。如果編譯器能夠確認一個變量在初始化之前可被使用的情形,編譯器將報錯。 public void doComputation() int x = (int)(Math.random() * 100); int y; int z; if (x 50) y = 9; z = y + x; / Possible use before initialization ,Static 怎么用?,class Error String mystring=“hello“; public static void main(String args) System.out.println(mystring); ,為什么不正確? 因為只有對象的方法可以訪問對象的變量。 一個對象的方法可以訪問對象的數(shù)據(jù)成 員,盡管不屬于方法的局部變量;一個類的方 法只能訪問自己的局部變量。 在static方法中不能引用非static的成員方 法和數(shù)據(jù)成員。,關(guān)鍵字static,靜態(tài)方法和靜態(tài)變量是屬于某一個類,而不屬于類的對象。 靜態(tài)方法和靜態(tài)變量的引用直接通過類名引用。 在靜態(tài)方法中不能調(diào)用非靜態(tài)的方法和引用非靜態(tài)的成員變量。反之,則可以。 可以用類的對象obj去調(diào)用靜態(tài)的方法method(),如:obj.method()。,解決的辦法: 1)將變量改稱類變量 class StaticError static String mystring=“hello“; public static void main(String args) System.out.println(mystring); ,2)變?yōu)榫植孔兞?class NoStaticError public static void main(String args) String mystring=“hello“; System.out.println(mystring); ,static: 1)在變量或方法之前,表明它們是屬于類的; 2)靜態(tài)變量在各實例間共享,如果是public靜態(tài)變量,則其它類可以不通過實例化訪問它們; 3)靜態(tài)方法稱為類的方法,因此不用實例化即可調(diào)用(面向過程) 補充: 靜態(tài)存儲:這兒的“靜態(tài)”(Static)是指“位于固定位置”(盡管也在RAM里)。程序運行期間,靜態(tài)存儲的數(shù)據(jù)將隨時等候調(diào)用??捎胹tatic關(guān)鍵字指出一個對象的特定元素是靜態(tài)的。但Java對象本身永遠都不會置入靜態(tài)存儲空間。,五、多維數(shù)組 Java編程語言沒有象其它語言那樣提供多維數(shù)組。因為一個數(shù)組可被聲明為具有任何基礎(chǔ)類型,所以你可以創(chuàng)建數(shù)組的數(shù)組。 1二維數(shù)組的定義 type arrayName ; type arrayName;,2二維數(shù)組的初始化 靜態(tài)初始化 int intArray =1,2,2,3,3,4,5; Java語言中,由于把二維數(shù)組看作是數(shù)組的數(shù)組,數(shù)組空間不是連續(xù)分配的,所以不要求二維數(shù)組每一維的大小相同。, 動態(tài)初始化 1) 直接為每一維分配空間,格式如下: arrayName = new typearrayLength1arrayLength2; 例:int a = new int23;,2) 從最高維開始,分別為每一維分配空間: arrayName = new typearrayLength1 ; arrayName0 = new typearrayLength20; arrayName1 = new typearrayLength21; arrayNamearrayLength1-1 = new typearrayLength2n;,3) 例: 二維簡單數(shù)據(jù)類型數(shù)組的動態(tài)初始化如下, int a = new int2 ; a0 = new int3; a1 = new int5; 因為這種對每個元素的分別初始化,所以有可能創(chuàng)建非矩形數(shù)組的數(shù)組,對二維復(fù)合數(shù)據(jù)類型的數(shù)組,必須首先為最高維分配引用空間,然后再順次為低維分配空間。 例如: new int 4是非法的。 而且,必須為每個數(shù)組元素單獨分配空間。 例如: String s = new String2 ; s0= new String2;/為最高維分配引用空間 s1= new String2; /為最高維分配引用空間 s00= new String(“Good“);/ 為每個數(shù)組元素單獨分配空間 s01= new String(“Luck“);/ 為每個數(shù)組元素單獨分配空間 s10= new String(“to“);/ 為每個數(shù)組元素單獨分配空間 s11= new String(“You“);/ 為每個數(shù)組元素單獨分配空間,例題:面哪個語句正確地聲明一個整型的二維數(shù)組? A int a = new int; B int a1010 = new int; C int a = new int1010; D int a = new int1010; E int a = new int1010; F int10a = new int10,3二維數(shù)組元素的引用 對二維數(shù)組中的每個元素,引用方式為:arrayNameindex1index2 例如: num10;,【例】 public class ArrayExam public static void main(String args) int i,j; int a=new int 23; /動態(tài)初始化一個二維數(shù)組 for (i=0;i2;i+) for (j=0; j3 ;j+) aij=(i+1)*(j+2); ,六、拷貝數(shù)組 數(shù)組一旦創(chuàng)建后,其大小不可調(diào)整。然而,你可使用相同的引用變量來引用一個全新的數(shù)組: int myArray = new int 6; myArray = new int 10; 在這種情況下,第一個數(shù)組被有效地丟失,除非對它的其它引用保留在其它地方。,Java編程語言在System類中提供了一種特殊方法拷貝數(shù)組,該方法被稱作arraycopy()。例如,araycopy可作如下使用: int myArray = 1, 2, 3, 4, 5, 6 ; int hold = 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 ; System.arraycopy(myArray, 0, hold, 0, myArray.length); 在這一點,數(shù)組hold有如下內(nèi)容:1,2,3,4,5,6,4,3,2,1。,數(shù)組的排序:Arrays.sort()。 在已排序的數(shù)組中查找某個元素:Arrays.binarySearch()。 (參見程序),構(gòu)造函數(shù),01: p
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 無人機飛行適應(yīng)性試題及答案
- 航空器維修中的質(zhì)量管理責任試題及答案
- 高級審計師自我提升試題及答案
- 中級審計師考試復(fù)習(xí)計劃的重要性及試題與答案
- 《6.3.1數(shù)據(jù)的表示》教學(xué)設(shè)計
- 《2.2.3有理數(shù)的加減運算》教學(xué)設(shè)計
- 2025年干細胞治療神經(jīng)性視力障礙的臨床應(yīng)用進展報告
- 找到方向的二級消防工程師試題及答案
- 飛機壽命周期管理試題及答案
- 高級審計師考試全析試題及答案
- 南京曉莊學(xué)院輔導(dǎo)員考試試題2024
- 神經(jīng)外科管道的護理
- 自動檢測技術(shù)及儀表控制系統(tǒng)
- 既有建筑幕墻安全性鑒定技術(shù)規(guī)程(征求意見稿)
- 等離子體物理學(xué)導(dǎo)論L課件
- VTE團標解讀-成人住院患者靜脈血栓栓塞癥的預(yù)防護理
- 2021年山東省威海市環(huán)翠區(qū)中考化學(xué)一模試卷
- 電大計算機網(wǎng)絡(luò)技術(shù)專業(yè) 綜合實訓(xùn)報告
- EH系統(tǒng)使用說明書
- 2022毛概學(xué)習(xí)行為表現(xiàn)
- 科學(xué)六年級上教科版45相貌各異的我們
評論
0/150
提交評論