




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第6章基礎類庫和工具類庫1第6章基礎類庫和工具類庫引言我們很少見到一個家具廠要自己種樹、伐木來提供木材,也很少見五金廠自己通過冶煉來提供鋼材,但在以往的程序設計中,這種一切從頭開始的做法卻是常見的。這種做法會帶來大量的重復工作,解決這一問題的方法是軟件重用。面向對象技術是迄今為止提高軟件可重用性的最有效途徑,其中類和類的繼承機制為提高程序的可重用性提供了強有力的支持。Java有一個功能強大的資源庫,通過類和類的繼承機制將資源庫中的資源組織起來,Java將功能相關的類組織成包,使程序員可以很方便地使用資源庫。Java資源庫中類的繼承層次和包的組織呈樹型結構,Java資源庫的這種組織方式使程序員進行Java編程時有“背靠大樹好乘涼”的感覺。2第6章基礎類庫和工具類庫6.1Java基礎類Java的類庫是系統提供的已實現的標準類的集合,是Java編程的API(ApplicationProgramInterface),它可以幫助開發者方便、快捷地開發Java程序。這些系統定義好的類根據實現的功能不同,可以劃分成不同的集合,每個集合是一個包,合稱為類庫。
Java的類庫大部分是由它的發明者——SUN公司提供的,這些類庫稱為基礎類庫(JFC)。API應用程序編程接口面向過程語言–函數庫(子程序包)面向對象語言–類庫3第6章基礎類庫和工具類庫6.1.1基礎類庫類庫的結構java.lang語言基礎類庫(System、Math、Thread、基本數據類型類)java.utilJava的工具類庫(向量、棧、日期)java.ioJava的標準輸入輸出類庫java.applet用于實現JavaApplet小程序的類庫java.awt用于構建圖形用戶界面的類庫java.awt.event界面用戶交互控制和事件響應類庫java.awt.image用于處理和操縱來自網上的圖片Java的用于實現網絡功能的類庫java.sql用于訪問數據庫的類庫使用JDKDocument查看類庫4第6章基礎類庫和工具類庫6.1.2語言基礎類庫-Object類Java程序中所有類的直接或間接父類,也是類庫中所有類的的父類,所有的其他類都是從Object類派生。構造方法:Object()一般方法:方法說明equals()比較兩個對象是否相同,結果為一布爾值getClass()
返回一個對象在運行時所對應的類的表示toString()返回描述當前對象的字符串信息Clone()生成并返回當前對象的一個拷貝finalize()定義回收當前對象時所需完成的清理工作5第6章基礎類庫和工具類庫例6-1Object中定義的方法的使用publicclassBasicObjectDemo{ publicstaticvoidmain(String[]args){ Aa1=newA(); Aa2=newA(); Aa3=a1; Bb=newB(); System.out.println(a1.equals(a2)); System.out.println(a3.equals(a1)); System.out.println(a1.hashCode()); System.out.println(a1.toString()); }}classA{}classB{}falsetrueA@35ce366第6章基礎類庫和工具類庫6.1.3語言基礎類庫:數據類型類Java的數據類型及其對應的基本數據類型基本數據類型數據類型包裝類byteByteshortShortintIntegerlongLongfloatFloatdoubleDoublecharCharacterbooleanBoolean在Java中,數據類型包裝類用于封裝基本數據類型的有關信息和操作。數據類型包裝類是由多個類組成的一個集合,每種基本數據類型均存在相應的對象封裝類7第6章基礎類庫和工具類庫1.Character類構造方法:publicCharacher(charvalue)例:Characherch=newCharacher('a');常用方法及說明方法說明isLowerCase(charch)判斷ch是否為小寫isUpperCase(charch)判斷ch是否為大寫isDigit(charch)判斷ch是否為數字isLetter(charch)判斷ch是否為字母toLowerCase(charch)返回小寫toUpperCase(charch)返回大寫Digit(charch,intradix)根據radix指定的進制,返回ch所對應的值8第6章基礎類庫和工具類庫2.Integer類構造方法:publicInteger(intvalue) publicInteger(Strngs)throwsNumberFormatException
例:Integera=newInteger(1); Integera1=newInteger("1");方法說明parseInt(Strings)將s轉換為帶符號十進制整數valueOf(Strings)將s轉換為一個Integer對象,該對象對應的int數值與字符串表示的數值一致類變量說明MAX_VALUE規定了int類型的最大值MIN_VALUE規定了int類型的最小值常用類變量及說明常用方法及說明inti=Integer.parseInt(“888”);intj=Integer.valueOf(“111”).intValue();字符串與整形數據的轉化9第6章基礎類庫和工具類庫數據類型類IntegerInteger類的公用屬性方法。10第6章基礎類庫和工具類庫數據類型類IntegerInteger類的公用屬性常用方法。可進行進制轉換11第6章基礎類庫和工具類庫例子:2進制轉換!publicclassIntegerApp{publicstaticvoidmain(String[]arg){inti=Integer.valueOf("1234").intValue();System.out.println("十進制數"+i+"對應的二進制數是:"+Integer.toBinaryString(i));System.out.println("十進制數"+i+"對應的十六進制數是:"+Integer.toHexString(i));System.out.println("Integer對應的基本類型是:"+Integer.TYPE.toString());System.out.println("Integer最大值為:"+Integer.MAX_VALUE);System.out.println("Integer最小值為:"+Integer.MIN_VALUE);}}12第6章基礎類庫和工具類庫運行結果:十進制數1234對應的二進制數是:10011010010十進制數1234對應的十六進制數是:4d2Integer對應的基本類型是:intInteger最大值為:2147483647Integer最小值為:-214748364813第6章基礎類庫和工具類庫6.1.4語言基礎類庫:System類java.io包中提供了多種輸入/輸出流,但是Java把最基本的輸入/輸出流類放在了java.lang.System類中。這個類提供了一個很重要的內容——標準輸入/輸出流。標準輸入流用于從標準輸入設備輸入數據;標準輸出流用于向標準輸出設備輸出數據。System類在聲明時使用了final關鍵字,而且該類中的所有方法和變量都是靜態的,因此該類不能被實例化或派生子類。要使用類變量。如:System.out。調用類的方法。如:System.getProperty(參數)14第6章基礎類庫和工具類庫System類中保存了重要的全局函數和變量:System.err是標準錯誤輸出流,用于輸出錯誤信息。System.in是標準輸入流,其read方法提供了一種簡便的數據讀取手段。這個方法可讀取用戶在鍵盤上輸入的字符。System.out是標準輸出流,它是java.io包中PrintStream類的一個對象,其println方法用于輸出數據。System.out.println(“HelloWorld!”)System.out.printlnSystem.out.print15第6章基礎類庫和工具類庫例6-2:System類
classUserNameTest{publicstaticvoidmain(String[]args){ Stringname; name=System.getProperty("");
//調用getProperty方法,獲取機器的用戶名
System.out.println("用戶名:"+name);
//屏幕顯示用戶名
}}16第6章基礎類庫和工具類庫System類屬性publicstaticInputStreaminpublicstaticPrintStreamoutpublicstaticPrintStreamerr獲取系統信息、完成系統操作的方法publicstaticlongcurrentTimeMillis();
獲取自1970年1月1日零時至當前系統時刻的微秒數
972370687290publicstaticvoidexit(intstatus);
強制Java虛擬機退出運行狀態,并把狀態信息status
返回給運行虛擬機的操作系統。System.exit(0);publicstaticvoidgc();
強制調用Java虛擬機的垃圾回收功能。17第6章基礎類庫和工具類庫6.1.5語言基礎類庫:Math類java.lang.Math類是標準的數學類,封裝了一些數學函數和常量。在這個類中,數的大小范圍跟具體的操作平臺有關。與System類相似,java.lang.Math類也不能被子類化或實例化,因為它的所有方法和變量也都是靜態的。二個類變量:類變量說明E最接近自然對數的底(e)的double值PI最接近圓周率()的double值18第6章基礎類庫和工具類庫三角函數下面的三個方法接受一個double類型的且以弧度為單位的角度值,并返回相應的運算結果:sin(doublea)返回角度a的sin值。cos(doublea)返回角度a的cos值。tan(doublea)返回角度a的tan值。這些方法以double類型的值作為參數并返回相應的三角運算結果。下面的方法是反三角函數:asin(doubler)返回sin值為r的角度值。acos(doubler)返回cos值為r的角度值。atan(doubler)返回tan值為r的角度值。19第6章基礎類庫和工具類庫pow(doubley,doublex)返回y的x次方例如,Math.pow(2.0,3.0)返回結果為8.0exp(doublex)返回x的底數log
(doublex)返回x的自然對數sqrt
(doublex)返回x的平方根Random()產生0-1之間隨機數舍入ceil(doublea)返回大于或等于a的最小整數值floor(doublea)返回小于或等于a的最大整數值round(floata)返回舍入尾數后最接近a的整型值20第6章基礎類庫和工具類庫多態方法:abs、min和max下面是幾個應用于int、long、float和double類型的多態方法:abs(a)返回a的絕對值。max(a,b)返回a和b的最大值。min(a,b)返回a和b的最小值。21第6章基礎類庫和工具類庫例6-3:math類的方法使用
importjava.lang.*;importjava.io.*;publicclassMathDemo{publicstaticvoidmain(Stringargs[]){System.out.println("Math.E="+Math.E);//輸出常量eSystem.out.println("Math.PI="+Math.PI);//輸出常量
System.out.println("ceil(E)="+Math.ceil(Math.E)); //輸出大于等于e的最小雙精度數
System.out.println("floor(E)="+Math.floor(Math.E)); //輸出小于等于e的最大雙精度數
System.out.println("rint(PI)="+Math.rint(Math.PI)); //將雙精度值
轉化為一個整數值
System.out.println("lnE="+Math.log(Math.E)); //計算e的自然對數值
System.out.println("sin(pi/4)="+Math.sin(Math.PI/4)); //計算
/4的正弦值22第6章基礎類庫和工具類庫例6-3:math類的方法使用try{doublerand=Math.random();doublerand2=-Math.random();System.out.println("power("+rand+","+rand2+")="+Math.pow(rand,rand2));}//求冪
catch(ArithmeticExceptionex){System.out.println("ArithmeticExceptionoccured!");}}}
Math.E=2.7045Math.PI=3.1493ceil(E)=3.0floor(E)=2.0rint(PI)=3.0lnE=1.0sin(pi/4)=0.75475power(0.9726179323562354,-0.12166141769193639)=1.1202223第6章基礎類庫和工具類庫6.2字符串相關類6.2.1String類String類的特性是:字符串創建之后,字符的內容就不能再變動。1String有五個構造方法:String();//生成一個空串。String(charchars[]);//從字符數組chars[]生成一個字符串。String(charchars[],intstartIndex,intnumChars);//從chars[]數組的startIndex位置開始提取字符,共提取numChars個字符組成一個字符串。String(Stringvalue);//利用一個已存在的字符串常量生成一個字符串。String(StringBufferbuffer);//利用一個已存在的StringBuffer對象進行初始化,生成一個字符串24第6章基礎類庫和工具類庫2生成字符串⑴charchars1[]={‘b’,’c’,’d’};⑵charchars2[]={‘a’,’b’,’c’,’d’,’e’};
⑶StringString1=newString(chars1);
⑷StringString2=newString(chars2,1,3);
語句1、2定義了2個字符數組;語句3從字符數組chars1[]生成一個字符串String1,其值為“bcd”;語句4從字符數組chars2[]生成一個字符串String2,其值為“bcd”(即從字符數組chars2的下標為1的元素b開始提取共3個字符組成字符串)。StringS=newString();//生成一個空字符串25第6章基礎類庫和工具類庫3創建對象(1)Strings3=newString("bcd");(2)Strings4=newString(s3);(3)StringBufferst=newStringBuffer("bcd");(4)Strings5=newString(st);直接定義字符串:StringaString=“Thisisastring.”;StringaString3=aString;采取這種方式定義的aString3和aString指向同一對象,即字符串“Thisisastring.”。采用new定義字符串:
StringaString4=newString(aString);這樣寫法將創建一個新的對象實體,其內容和aString一模一樣。因此aString4所引用的字符串內容雖然和aString相同,但是,實際上卻指向不同的對象實體。26第6章基礎類庫和工具類庫4String類處理字符串的方法字符串的合并:用操作符+實現比較兩個字符串的前綴或后綴是否相等的方法⑴
startsWith(StringPrefix);
//判斷當前字符串是否是Prefix的前綴;
⑵ startsWith(StringPrefix,inttoffset);
//判斷當前字符串的子串是否與Prefix相同;⑶ endsWith(Stringsuffix);
//判斷當前字符串是否是Prefix的后綴。Strings1=“appletree”;s1.startsWith(“apple”);s1.startsWith(“tree”,5);s1.endsWith(“tree”);s1.endsWith(“Tree”);truefalse27第6章基礎類庫和工具類庫⑴indexOf(charch)//在當前字符串中檢索指定字符首次出現的位置。⑵indexOf(charch,intfromIndex)//在當前字符串中從指定位置開始檢索指定字符首次出現的位置用indexOf方法來檢索指定的字符串。檢索方法的返回值均為字符所在位置的序號或所檢索的字符串首字符所在位置的序號,如沒有檢索到,則返回值為-1。比如:Strings1=“WearestudingJava.”;s1.indexOf(’a’);s1.indexOf(’a’,5);s1.indexOf(“are”,1);方法lastIndexOf(charch)是在指定字符串中檢索某個指定字符最后出現的位置,用法和indexOf類似。字符串檢索的方法316328第6章基礎類庫和工具類庫例:String類的toCharArray方法的使用。
classtoCharArray{publicstaticvoidmain(Stringargs[]){Strings1="Welikeapple.";char[]s2=s1.toCharArray();System.out.println(String.valueOf(s2,8,5));}}程序說明:第3行定義了一個字符串s1;第4行使用toCharArray方法將字符串s1轉換為字符數組s2[];第5行使用valueOf方法將字符數組s2中的第8個字符開始的5個字符即“apple”取出并打印輸出。
將字符串轉換成字符數組
結果為:apple29第6章基礎類庫和工具類庫6.2.2StringBuffer類
StringBuffer類用于處理可變的字符串,提供修改字符串的方法。生成StringBuffer對象后,可通過調用toString()方法將其轉換為String對象。StringBuffer有三個構造方法:⑴
StringBuffer();⑵
StringBuffer(intlength);⑶
StringBuffer(Stringstr);示例:⑴
StringBuffers0=newStringBuffer();⑵StringBuffers1=newStringBuffer(512);⑶StringBuffers2=newStringBuffer(“Happynewyear!”);緩沖區尺寸byte16lengthStr長度+1630第6章基礎類庫和工具類庫StringBuffer提供的方法實現對字符串的修改,包括字符替換、插入字符、在末尾添加一個子串等。原因就是它使用了緩沖區。從StringBuffer類創建的對象都分配比給定字符串還多16個字節長度的緩沖區。StringBuffer類提供了方法來檢測和獲得緩沖區容量,在對字符修改過程中,如果緩沖區不夠用,那么,系統會自動擴大緩沖區。31第6章基礎類庫和工具類庫StringBuffer提供的主要方法:
字符設置和替換setCharAt(intindex,charch);此方法將指定的字符ch放到index指出的位置。例:StringBuffers=newStringBuffer(“stadents”);s.setCharAt(2,‘u’);上述語句將字符串s中第2個字符‘a’替換為‘u’。字符的插入insert(intoffset,charch);insert方法用來在字符串的指定位置插入字符ch。32第6章基礎類庫和工具類庫例6-4:StringBuffer的insert方法的使用1
publicclassMyString{publicstaticvoidmain(Stringarg[]){Strings1="Wecome";StringBuffersb1=newStringBuffer(s1);sb1.insert(2,'l');System.out.println(sb1);}}程序結果:打印“Welcome”。33第6章基礎類庫和工具類庫StringBuffer的insert方法的使用2insert方法還允許插入字符串、布爾量、數組和各種類型的數據,甚至插入一個對象。即按照入口參數的不同,StringBuffer提供了以下insert方法:insert(intoffset,charc);insert(intoffset,booleanb);insert(intoffset,charstr[]);insert(intoffset,doubled);insert(intoffset,floatf);insert(intoffset,inti);insert(intoffset,longl);insert(intoffset,Objectobj);insert(intoffset,Stringstr);
34第6章基礎類庫和工具類庫例6-5:StringBuffer的insert方法實現多種插入
publicclassStringModify{publicstaticvoidmain(Stringstr[]){
StringBuffers=newStringBuffer("eacher!");booleanb=true;charc='T';doubled=3.14159;chare=',';charf[]={'W','e','l','c','o','m','e','!'};charg='!';System.out.println("insertachar:"+s.insert(0,c));s.insert(0,e);System.out.println("insertadouble:"+s.insert(0,d));s.insert(0,g);System.out.println("insertaArray:"+s.insert(0,f)); }}insertachar:Teacher!insertadouble:3.14159,Teacher!insertaArray:Welcome!!3.14159,Teacher!在第0個位置35第6章基礎類庫和工具類庫用append方法在字符串末尾添加內容
隨著入口參數的不同,append方法可以用來添加字符串、各種類型的數據和數組等:append(booleanb);append(charc);append(charstr[]);append(charstr[],intoffset,intlen);append(doubled);append(floatf);append(inti);append(longl);append(Objectobj);append(Stringstr);36第6章基礎類庫和工具類庫classStringAppend{publicstaticvoidmain(Stringstr[]){StringBuffers=newStringBuffer("students");booleanb=true;charc=',';chard[]={'t','h','i','s','M','i','s','M'};System.out.println("appendachar:"+s.append(c));System.out.println("appendaarray:"+s.append(d));System.out.println("appendaboolean:"+s.append(b));}}例6-6:StringBuffer的append方法使用
程序運行結果:Appendachar:students,Appendachar:students,thisisAppendachar:students,thisistrue37第6章基礎類庫和工具類庫toString
()方法將可變字符串轉化為不變字符串下面的程序段中用了append方法和toString方法,將字符串修改后轉化為字符串常量。charc='e';StringBuffers=newStringBuffer("Wear");s.append(c);s.append("students.");s.toString();結果:S成為字符串常量,其值為Wearestudent38第6章基礎類庫和工具類庫StringBuffer類提供了length()方法檢查緩沖區中字符串的長度用charAt
(intindex)方法得到入口參數所指位置的字符用capacity()方法獲取緩沖區長度。
publicclassMyString{publicstaticvoidmain(Stringargs[]){Strings1="Ilikeapple.";StringBuffersb1=newStringBuffer(s1);System.out.println(sb1.length());System.out.println(sb1.capacity());}}
程序說明:由于s1字符串共含13個字符,所以,第4行語句將s1送到字符串緩沖區sb1后,由第5行打印語句打出的字符串長度為13。實際上,sb1緩沖區長度為13+16=29,因為用new關鍵字創建對象時,為其分配的緩沖區長度比實際字符數多16個字符長度結果:132939第6章基礎類庫和工具類庫例6-7:StringBuffer的length、capacity、charAt方法使用
publicclassMyString{publicstaticvoidmain(Stringargs[]){Strings1="beautiful";StringBuffersb1=newStringBuffer(s1);System.out.println("第四個字符為:"+sb1.charAt(4));//取出對象第4個字符
System.out.println("length="+sb1.length());//返回對象的當前長度
System.out.println("capacity:"+sb1.capacity());//返回對象的整個容量}}結果:第四個字符為:tlength=9capacity:2540第6章基礎類庫和工具類庫6.2.3StringTokenizer作用:對字符串的解析和分割例6-8StringTokenizerimportjava.util.StringTokenizer;publicclassStringTokenizerDemo{ publicstaticvoidmain(String[]args){ Strings="demoofStringTokenizer"; StringTokenizertokenizer=newStringTokenizer(s,""); while(tokenizer.hasMoreTokens()){ System.out.println(tokenizer.nextToken()); } }}demoofStringTokenizer41第6章基礎類庫和工具類庫6.3日期和時間6.3.1日期類—Date構造方法Date() //構造一個系統時間的Data實例 Date(longdate) //構造指定時間的Data實例方法getTime()//獲取自1970.1.1零時至當前系統時刻的微秒數 setTime() //設置新的時間intgetDate() //獲取系統當前日期 after(Date) //比較是否遲于參數指定的日期 brfore(Date) //比較是否早于參數指定的日期42第6章基礎類庫和工具類庫6.3.2工具類庫:CalendarCalendar(表示日期和時間)getInstance():得到表示當前時間的實例get(int):獲取相應信息,如get(Calendar.YEAR)set(int,int):如set(Calendar.YEAR,1999)set(year,month,date……):set用來設置信息Calendar.getTime():得到當前時間的Date對象GregorianCalendar有不同的構造方法,用來創建實例。如:GregorianCalender(year,month,date,…)43第6章基礎類庫和工具類庫日期類—Calendar抽象類,在Date對象和一組整數域之間進行轉換:YEAR,MONTH,DAY,HOUR,…Calendarc=Calendar.getInstance();intc.get(Calendar.YEAR)intc.get(Calendar.MONTH)(1月為0)intc.get(Calendar.DATE)intc.get(Calendar.HOUR)intc.get(Calendar.MINUTE)intc.get(Calendar.SECOND)Datec.getTime()44第6章基
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- DB32/T 3861-2020麥棉輪作兩熟全程機械化生產技術規程
- DB32/T 3659-2019櫻桃番茄電商銷售貯運技術規程
- DB32/T 3637-2019土地綜合整治工程建設規范
- DB31/T 699-2013政府系統值守應急管理要求
- DB31/T 378-2018旅館服務質量要求
- DB31/T 1386-2022穴位貼敷服務規范
- DB31/T 1110.2-2018食品和食用農產品信息追溯第2部分:數據元
- CAB 1018-2013汽車皮革類方向盤套
- CAB 1001-2013水性聚氨酯(PU)合成革
- 2025股票發行合同范本下載
- 家具供貨結算協議書
- 2025屆湖南省邵陽市高三下學期第三次聯考物理試卷(含答案)
- 2025年公證員資格考試全國范圍真題及答案
- 叉車作業安全協議書
- 房屋解除轉讓協議書
- 小學生美術講課課件
- 新聞采訪考試試題及答案
- 2025年北京市西城區高三語文二模考試卷附答案解析
- JJF 2215-2025移動源排放顆粒物數量檢測儀校準規范
- DLT 593-2016 高壓開關設備和控制設備
- 6.2《青紗帳-甘蔗林》-【中職專用】高一語文課件(高教版2023·基礎模塊下冊)
評論
0/150
提交評論