第6章數(shù)組、字符串和實用類_第1頁
第6章數(shù)組、字符串和實用類_第2頁
第6章數(shù)組、字符串和實用類_第3頁
第6章數(shù)組、字符串和實用類_第4頁
第6章數(shù)組、字符串和實用類_第5頁
已閱讀5頁,還剩66頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第6章數(shù)組、字符串和實用類數(shù)組字符串類數(shù)組類和向量類Java語言基礎(chǔ)類庫

實例學(xué)習(xí)課程內(nèi)容二三四五一項目學(xué)做六一、數(shù)組

一、數(shù)組數(shù)組就是一組命名變量,其中的每個變量被稱之為數(shù)組元素。根據(jù)下標(biāo)個數(shù)的多少分類:

·數(shù)組是有序數(shù)據(jù)的集合·數(shù)組是一種最簡單的復(fù)合數(shù)據(jù)類型·數(shù)組中的每個元素具有相同的數(shù)據(jù)類型數(shù)組中的元素可以用一個統(tǒng)一的數(shù)組名和下標(biāo)來唯一地確定定義·一維數(shù)組·多維數(shù)組1、一維數(shù)組只有一個下標(biāo)的數(shù)組稱為一維數(shù)組。在使用數(shù)組之前必須要初始化一維數(shù)組的聲明說明數(shù)組變量的名稱和數(shù)組元素的數(shù)據(jù)類型。聲明格式:datatypearrayName[];或datatype[]arrayName;其中datatype可以為Java中任意的數(shù)據(jù)類型,包括簡單類型和復(fù)合類型。arrayName為數(shù)組的名字,命名符合標(biāo)識符的規(guī)定。如:int[]mathScore;為數(shù)組分配內(nèi)存空間,并為每個數(shù)組元素賦初始值。

1、一維數(shù)組定義數(shù)組的大?。ㄉ暾垉?nèi)存空間)數(shù)組初始化·靜態(tài)初始化:在聲明和定義數(shù)組的同時,給數(shù)組元素賦初值?!討B(tài)初始化:先聲明和定義數(shù)組,然后再賦值。

·簡單類型·復(fù)合類型格式:arrayName=newdatatype[numberOfArrayElement];其中,numberOfArrayElement表示數(shù)組元素的個數(shù),即數(shù)組的長度或大小,是整型表達(dá)式。例如:在上面對mathScore聲明之后,就可以定義其大小。mathScore=newint[10];//定義數(shù)組的10個元素

1、一維數(shù)組一維數(shù)組的重定義一維數(shù)組的長度(length屬性)一維數(shù)組元素的引用其實數(shù)組是作為對象來處理的,所有的數(shù)組對象都有l(wèi)ength(長度)屬性,用來記錄數(shù)組中元素的個數(shù)。所謂重定義也稱重用,即是在程序中可以改變數(shù)組的大?。ㄖ匦露x數(shù)組)。數(shù)組元素的引用方式為:arrayName[index]index為數(shù)組下標(biāo),它可以為整型常數(shù)或表達(dá)式,下標(biāo)從0開始到arrayName.length-1?!だ?-1:將多個學(xué)生某門課程的成績放到一個數(shù)組中,然后計算學(xué)生的平均成績。(6-1.txt)1、一維數(shù)組例6-1:將多個學(xué)生某門課程的成績放到一個數(shù)組中,然后計算學(xué)生的平均成績。(6-1.txt)/***這是一個利用數(shù)組存放學(xué)生成績,統(tǒng)計學(xué)生平均成績的示例程序

*程序的名字是:AverageScore.java*/publicclassAverageScore{ publicstaticvoidmain(String[]args) { int[]score={72,89,65,58,87,91,53,82,71,93,76,68};//聲明定義初始化 floataverage=0.0f;//部分和,最后存放平均值 for(inti=0;i<score.length;i++){ average+=score[i];//成績累加和(部分和)}average/=score.length;//求平均System.out.println("average="+average); }}

1、一維數(shù)組foreach循環(huán)使用foreach循環(huán)遍歷數(shù)組時,無須獲得數(shù)組和集合長度,無須根據(jù)索引來訪問數(shù)組元素和集合元素,foreach循環(huán)會自動遍歷數(shù)組。格式:for(typevariableName:array|collection){ //variableName

自動迭代訪問每個元素}

應(yīng)為variableName·例6-2:使用foreach循環(huán)來遍歷數(shù)組元素。(6-2.txt)1、一維數(shù)組例6-2:使用foreach循環(huán)來遍歷數(shù)組元素。(6-2.txt)publicclassForEachTest{ publicstaticvoidmain(String[]args) { String[]books={ "大學(xué)計算機(jī)基礎(chǔ)", "Java程序設(shè)計", "操作系統(tǒng)"}; for(Stringbook:books) { System.out.println(book); } }}運(yùn)行結(jié)果:大學(xué)計算機(jī)基礎(chǔ)Java程序設(shè)計操作系統(tǒng)

2、二維數(shù)組帶有兩個下標(biāo)的數(shù)組稱為二維數(shù)組。聲明初始化與一維數(shù)組類似,可以先聲明后定義,也可將聲明和定義合二為一。聲明與定義格式:datatypearrayName[][];或:datatype[][]arrayName;或:arrayName=newdatatype[arrayLength1][arrayLength2];或:datatype[][]arrayName=newdatatype[arrayLength1][arrayLength2];·靜態(tài)初始化·動態(tài)初始化

2、二維數(shù)組不同長度的二維數(shù)組二維數(shù)組元素的引用對二維數(shù)組中的每個元素,引用方式為:arrayName[index1][index2]例6-3:設(shè)有三個矩陣A、B、C,A和B矩陣相乘,結(jié)果放入C中,即

C=A×B。(6-3.txt)要求:A[l][m]×B[m][n]=C[l][n]計算公式:C[i][j]=∑a[i][k]*b[k][j]其中:

i=0~l,j=0~n,k=0~m在有些具體的應(yīng)用中,每行元素的個數(shù)不是相等的,Java允許生成具有不同長度的多維數(shù)組。2、二維數(shù)組例6-3:設(shè)有三個矩陣A、B、C,A和B矩陣相乘,結(jié)果放入C中,即

C=A×B。(6-3.txt)publicclassA_multiply_B{publicstaticvoidmain(String[]args){ float[][]B={{1,2,3},{4,5,6},{7,8,9}};//聲明定義初始化二維數(shù)組Bfloat[][]A={{1,2,3},{4,5,6}};//聲明定義初始化二維數(shù)組Afloat[][]C=newfloat[2][3];//聲明定義二維數(shù)組Cinti,j,k;for(i=0;i<2;i++)//控制C中的行數(shù){for(j=0;j<3;j++)//控制C中的列數(shù){for(k=0;k<3;k++)C[i][j]+=A[i][k]*B[k][j];//計算C中的每個元素System.out.print(C[i][j]+"");}System.out.println("\n");}}}二、字符串類

二、字符串類1、String類在Java語言中,字符是一基本的數(shù)據(jù)類型,而字符串是抽象的數(shù)據(jù)類型,只能使用對象表示字符串。定義字符串類String用于創(chuàng)建字符串對象,并且創(chuàng)建的字符串(對象)不能被改變,也就是說字符串對象中的字符是不能修改的(如在一個字符串對象中添加字符、刪除字符、修改字符等),稱為字符串常量?!ぃ?)String類的構(gòu)造函數(shù)String()

String(Stringvalue)

String(char[]value)1、String類例6-4:使用字符數(shù)組,創(chuàng)建一個字符串對象,并顯示字符串對象中的字符串。(6-4.txt)classArray_string{ publicstaticvoidmain(Stringargs[]) {//聲明定義初始化字符數(shù)組 charc[]={'J','a','v','a','','i','s','','O','O','P'}; Strings1=newString(c);//創(chuàng)建字符串對象 Strings2=newString(s1);// System.out.println(s1);//打印 System.out.println(s2); }}

二、字符串類·(2)字符串的操作對字符串處理時,可使用String類提供的幾個常用方法(用于對字符串進(jìn)行處理):charAt(intindex)獲取指定位置的字符;length()求字符串長度;concat(Stringstr)連接兩個字符串;copyValueOf(char[]value)字符數(shù)組轉(zhuǎn)換成字符串;replace(charch1,charch2)字符串中的字符ch1用ch2替換;…還有其他很多處理字符串的方法。

二、字符串類例6-5:比較字符串(6-5.txt)將截取的子字符串放到字符數(shù)組中時,可使用方法voidgetChars(intstartIndex,intendIndex,chartarget[],inttargetStart),從startIndex到endIndex的字符在字符數(shù)組target從targetStart起存放,應(yīng)保證能夠容納下。例6-6:截取字符串(6-6.txt)1、String類例6-5:比較字符串(6-5.txt)classEquals{ publicstaticvoidmain(Stringargs[]) { Strings1="Hello"; Strings2="Hello"; Strings3="Good-bye"; Strings4="HELLO"; System.out.println(s1+"equals"+s2+":"+s1.equals(s2));//trueSystem.out.println(s1+"equals"+s3+":"+s1.equals(s3));//false System.out.println(s1+"equals"+s4+":"+s1.equals(s4));//false System.out.println(s1+"equalsIgnoreCase"+s4+":"+s1.equalsIgnoreCase(s4));//true,忽略大小寫 System.out.println(s1+"=="+s2+":"+(s1==s2));//false,==為對象比較, }//s1與s2不是一個對象,所以2不相等。}1、String類例6-6:截取字符串(6-6.txt)classgetChars{publicstaticvoidmain(Stringargs[]){Strings="ThisisagetCharsmethod.";intstart=10;//第一個字符的位置(索引)為0,10代表第11個字符位置intend=18;//第19個字符位置charbuf[]=newchar[end-start];s.getChars(start,end,buf,0);System.out.println(buf);}}運(yùn)行結(jié)果:getChars

二、字符串類2、

StringBuffer類當(dāng)需要改變字符串的值時,可使用StringBuffer類,它提供了對字符串內(nèi)容進(jìn)行動態(tài)修改的功能——動態(tài)添加,插入、替換等。(1)該類提供三個構(gòu)造方法StringBuffer()StringBuffer(intlength)StringBuffer(Stringstr)*與String不同,應(yīng)該使用StringBuffer的構(gòu)造函數(shù)創(chuàng)建對象,不能定義StringBuffer類型的變量。如:StringBuffersb

=”ThisisStringBuffer”;是不允許的二、字符串類(2)對字符串的修改1)添加操作使用該類的append()方法,將一個字符串添加到一個字串緩沖區(qū)的后面。

2)插入操作使用的是StringBuffer類的insert(intoffset,representation)方法,用于在指定的位置插入給定的量。

二、字符串類3)刪除delete(intstart,intend)方法用于刪除從start~end之間的字符串;deleteCharAt(intindex)方法用于刪除位置index處的字符。4)替換replace(intstart,intend,Stringstr)用字符串str替換start到end之間的字符串。例6-7:將“Javaprogramming!”中的子串“Java”替換成“ThisisTurboC”。(6-7.txt)StringBuffer類中的幾個常用方法:toString()將字符串緩沖區(qū)轉(zhuǎn)換為字符串;charAt(intindex)取指定位置的字符;getChars(intsrcBegin,intsrcEnd,char[]dst,intdstBegin)取指定位置的字符到字符數(shù)組dst中l(wèi)ength()返回當(dāng)前對內(nèi)容的長度;capacity()返回總的容量;ensuareCapacity()設(shè)置容量不夠時追加的容量大小;reverse()字符串翻轉(zhuǎn)。例6-8:將給定的字符串翻轉(zhuǎn)(6-8.TXT)2、

StringBuffer類例6-7:將“Javaprogramming!”中的子串“Java”替換成“ThisisTurboC”。(6-7.txt)classReplace{ publicstaticvoidmain(Stringargs[]) { StringBuffersb=newStringBuffer("Javaprogramming!"); sb.replace(0,4,"ThisisTurboC");//第一個字符位置為0 System.out.println("Afterreplace:"+sb.toString()); //也可使用下面的方法 //sb=sb.replace(0,4,"ThisisTurboC"); //System.out.println("Afterreplace:"+sb); }}運(yùn)行結(jié)果:ThisisTurboCprogramming!2、

StringBuffer類例6-8:將給定的字符串翻轉(zhuǎn)(6-8.TXT)classReverse{ publicstaticvoidmain(Stringargs[]) { StringBuffers=newStringBuffer("123456789"); System.out.println(s); s.reverse();//調(diào)用方法,生成逆序即翻轉(zhuǎn)字符串 System.out.println(s); }}運(yùn)行結(jié)果:987654321

二、字符串類3、

StringTokenizer類StringTokenizer(字符串令牌,字符串標(biāo)記)類主要用于對字符串的分析,可將一個字符串分解成數(shù)個單元(Token—令牌,每個單元之間以分界符分隔)。StringTokenizer(Stringstr)是構(gòu)造函數(shù)。幾個常用方法:intcountTokens(),返回令牌的數(shù)目;booleanhasMoreTokens()檢查是否還有令牌存在;StringnextToken()返回下一個令牌;StringnextToken(Stringdelimit)根據(jù)指定的分界符(delimit),返回令牌。3、

StringTokenizer類例6-9:將給定字符串每個單詞取出來。(6-9.txt)importjava.util.StringTokenizer;classToken{ publicstaticvoidmain(String[]args) { StringTokenizerst=newStringTokenizer("IamaJavanewer"); String[]tokens=newString[st.countTokens()];//聲明定義數(shù)組 for(inti=0;st.hasMoreTokens();i++)//每個數(shù)組元素存放一個單詞 { tokens[i]=st.nextToken();//取詞 System.out.println(tokens[i]);//打印 } }}運(yùn)行結(jié)果:IamaJavanewer三、數(shù)組類和向量類

三、數(shù)組類和向量類

1、數(shù)組Arrays類

數(shù)組是編程時最常用的數(shù)據(jù)結(jié)構(gòu)之一,數(shù)組可以包含任何數(shù)據(jù)類型,一旦創(chuàng)建便只可存儲指定類型的數(shù)據(jù)。向量的功能更強(qiáng)大,它是允許不同類型元素共存的變長數(shù)組。Array(數(shù)組)類提供了對數(shù)組運(yùn)算的功能,如排序、搜索等操作。Array類的靜態(tài)方法:staticvoidsort(dataType[]d),對數(shù)組進(jìn)行排序(升序)1、數(shù)組Arrays類例6-10:使用Array類對數(shù)組排序。(6-10.txt)importjava.util.Arrays;classArraysClass{ publicstaticvoidmain(String[]args) { int[]num=newint[10]; for(inti=0;i<10;i++)//排序前: { num[i]=(int)(Math.random()*10)+1;//產(chǎn)生1~10隨機(jī)數(shù) System.out.print(num[i]+"");//打印產(chǎn)生的隨機(jī)數(shù) } System.out.println("\n排序后"); Arrays.sort(num);//排序 for(inti=0;i<10;i++)//排序后: System.out.print(num[i]+"");//打印排序后的數(shù) System.out.println(); System.out.println("6的位置是:"+Arrays.binarySearch(num,6));//搜索6的位置 }}運(yùn)行程序后產(chǎn)生一組隨機(jī)數(shù),并搜索6的位置。由于數(shù)據(jù)是隨機(jī)產(chǎn)生,所以每次運(yùn)行時數(shù)據(jù)都不同運(yùn)行結(jié)果:

三、數(shù)組類和向量類

2、向量類VectorJava語言中,數(shù)組只能保存固定數(shù)目的元素,內(nèi)存空間的申請也是一次完成,不能在創(chuàng)建后再追加數(shù)組元素。為此又引入了向量類Vector。向量也是一組對象的集合,但它可以追加對象元素的數(shù)量,相當(dāng)于一個變長數(shù)組。在這些場合中,使用Vector比較方便:·對象的數(shù)目不定;·序列中的元素都是對象;·組合不同類的對象成一序列;·頻繁地插入或刪除序列中的對象。

三、數(shù)組類和向量類

(1)聲明并創(chuàng)建Vector對象

Vector類的構(gòu)造函數(shù):Vector();Vector(Collectionc);Vector(intinitialCapacity);Vector(intinitialCapacity,intcapacityIncrement);(2)幾個常用的方法

1)向向量中增加一個元素(不是插入元素)

add(intindex,Objectelement);2)批量增加元素

addAll(Collectionc);3)獲取向量的容量空間(余量空間)intcapacity();4)指定位置插入元素insertElement(Objectobj,intindex);2、向量類Vector例6-11:向量類的應(yīng)用。創(chuàng)建一個向量對象,將其他對象如字符串添加到向量中,然后為字符串排序。(6-11.txt)importjava.util.*;classVectorExm{ publicstaticvoidmain(String[]args) { Vectorvect=newVector(); //空向量對象 Stringstr[]={"ZS張三","LS李四","WW王五","ZL趙六"}; for(intj=0;j<str.length;j++) vect.add(str[j]); //對象添加到向量中 Collections.sort(vect); //對向量的對象排序 for(intj=0;j<vect.size();j++) System.out.print(vect.get(j)""); //打印向量中的對象 }}運(yùn)行結(jié)果:LS李四

WW王五

ZL趙六

ZS張三排序(按字符的ASCII值)四、

Java語言基礎(chǔ)類庫

四、

Java語言基礎(chǔ)類庫1、Java類庫介紹

使用Java中的類庫,在編寫程序時用戶不必每次都從頭開始,只需要對特定的問題自行編寫類,這些類繼承了某個已經(jīng)存在的系統(tǒng)標(biāo)準(zhǔn)類,或使用這些已存在的標(biāo)準(zhǔn)類,以提高編程效率。定義Java類庫按不同功能被劃分成幾十個包,每個包中包含了有若干個具有特定功能和相互關(guān)系的類和接口。幾個常用的包:(1)java.lang包(2)java.io包(3)java.util包(4)java.awt包(5)javax.swing包(6)java.applet包(7)包(8)java.sql包

三、數(shù)組類和向量類

2、Java語言核心類庫下面我們對Java語言核心類庫java.lang包作簡單介紹1.Objcet類正如我們過去曾經(jīng)介紹過的那樣,Object類是Java程序中所有類的父類(直接的或間接的),也是所有類庫中類的父類,即所有的類都是從Object類派生出來的。2.Class類Class類封裝對象或接口運(yùn)行時的狀態(tài),當(dāng)類被加載時,類Class的對象被自動創(chuàng)建,不能顯式創(chuàng)建一個Class類的對象。例6-12:使用系統(tǒng)Class類,獲取應(yīng)用程序的類名和其父類名。(6-12.txt)3.System類提供標(biāo)準(zhǔn)的輸入/輸出、運(yùn)行時系統(tǒng)(Runtime)信息。System類不能進(jìn)行實例化,它的屬性和方法均是static型,直接用類名引用。例6-13:退出程序的方法(6-13.txt)例6-14:數(shù)組復(fù)制(6-14.txt)例6-15:獲取計算機(jī)系統(tǒng)的相關(guān)信息(6-15txt)

例6-16:設(shè)置系統(tǒng)的相關(guān)屬性(6-16.txt)2、Java語言核心類庫例6-12:使用系統(tǒng)Class類,獲取應(yīng)用程序的類名和其父類名。(6-12.txt)importjava.awt.*;importjava.awt.event.*;publicclassClass_ObjectextendsFrame{ Class_Object() { super("getClass()和getSuperClass()、getName()方法"); } publicstaticvoidmain(String[]args)//程序的入口方法 { Class_Objectfrmclo=newClass_Object();//創(chuàng)建框架窗體 //設(shè)置框架窗體的事件監(jiān)聽(關(guān)閉窗體事件) frmclo.addWindowListener(newWindowAdapter() { publicvoidwindowClosing(WindowEvente) { System.exit(0); } }; Labelout=newLabel("單擊關(guān)閉按鈕,可以關(guān)閉該窗口"); frmclo.setLayout(newFlowLayout()); frmclo.add(out);

2、Java語言核心類庫 Labeldis1=newLabel();//創(chuàng)建幾個標(biāo)簽 Labeldis2=newLabel(); Labeldis3=newLabel(); ClassclassObj; classObj=frmclo.getClass(); //得到類的引用 dis1.setText("類名:"+classObj.getName()); dis2.setText("類名:"+frmclo.getClass()); classObj=classObj.getSuperclass(); //得到引用的超類 dis3.setText("超類:"+classObj.getName());//frmclo.getSuperclass();//不能用此語句 frmclo.add(dis1);//加入標(biāo)簽 frmclo.add(dis2); frmclo.add(dis3); frmclo.setSize(200,100); frmclo.setBackground(Color.yellow);//框架背景色 //frmclo.pack(); frmclo.show();//顯示框架窗體 }}運(yùn)行結(jié)果:2、Java語言核心類庫例6-13:退出程序的方法(6-13.txt)publicclassProgramExit{ publicstaticvoidmain(Stringargs[]) { //程序運(yùn)行代碼,根據(jù)代碼的運(yùn)行情況設(shè)置邏輯類型的狀態(tài)值 intb=1; if(args.length>0) b=Integer.parseInt(args[0]);//命令行帶一個參數(shù) if(b==0) { System.out.println("應(yīng)用程序正常結(jié)束"); System.exit(b); } else { //異常退出 System.out.println("應(yīng)用程序異常結(jié)束"); System.exit(b); } }}運(yùn)行結(jié)果:運(yùn)行:javaProgramExit0或javaProgramExit1結(jié)果是“程序正常退出”或“程序異常退出”2、Java語言核心類庫例6-14:數(shù)組復(fù)制(6-14.txt)classArrayCopy{//聲明定義初始化數(shù)組 staticbytea[]={65,66,67,68,69,70,71,72,73,74}; staticbyteb[]=newbyte[a.length];//聲明定義數(shù)組,大小等于a的長度 publicstaticvoidmain(Stringargs[]) { System.out.println("a="+newString(a)); System.arraycopy(a,0,b,0,a.length);//調(diào)用復(fù)制數(shù)組的方法 System.out.println("b="+newString(b));}}運(yùn)行結(jié)果:a=ABCDEFGHIJb=ABCDEFGHIJ2、Java語言核心類庫例6-15:獲取計算機(jī)系統(tǒng)的相關(guān)信息例(6-15txt)

classDisplayProperty{ publicstaticvoidmain(String[]args) {//以下是調(diào)用上面的方法getProperty(),獲取相關(guān)的屬性 System.out.println(System.getProperty("java.version")); System.out.println(System.getProperty("file.separator")); System.out.println(System.getProperty("java.vm.version")); System.out.println(System.getProperty("os.version")); System.out.println(System.getProperty("")); System.out.println(System.getProperty("java.class.path")); System.out.println(System.getProperty("java.vendor")); }}2、Java語言核心類庫例6-16:設(shè)置系統(tǒng)的相關(guān)屬性(6-16.txt)publicclassSetSP{ publicstaticvoidmain(Stringargs[]) {

StringstrProperty=System.getProperty("java.io.tmpdir"); System.out.println("原來的臨時文件存儲目錄名稱:"+strProperty); System.out.println("將臨時文件目錄設(shè)置為C:/Tmp"); StringoldProperty=System.setProperty("java.io.tmpdir","C:/Tmp"); strProperty=System.getProperty("java.io.tmpdir"); System.out.println("設(shè)置后的臨時文件存儲目錄名稱:"+strProperty); }}運(yùn)行結(jié)果:原來的臨時文件存儲目錄名稱:D:\DOCUME~1\cyx\LOCALS~1\Temp\將臨時文件目錄設(shè)置為C:/Tmp設(shè)置后的臨時文件存儲目錄名稱:C:/Tmp

2、Java語言核心類庫

4.Runtime類Runtime類封裝了運(yùn)行時環(huán)境。例6-17:測試計算機(jī)的系統(tǒng)內(nèi)存,并執(zhí)行記事本程序。(6-17.txt)5.基本數(shù)據(jù)類型(包裝)類數(shù)據(jù)類型類對應(yīng)相應(yīng)的基本數(shù)據(jù)類型,類名與數(shù)據(jù)類型的名字相似,但第一個字母需大寫。包裝類名

數(shù)據(jù)類型Boolean booleanCharacter charDouble doubleInteger intLong longFloat floatByte byte(1)Integer類例6.18:輸出整數(shù)的二、八、十六進(jìn)制數(shù)表示。(6-18.txt)(2)基本數(shù)據(jù)類型和字符串的相互轉(zhuǎn)換6.Math類提供用于數(shù)學(xué)運(yùn)算的標(biāo)準(zhǔn)函數(shù)及常數(shù),它們都是static型的,故在使用時直接用類名作前綴,不需要創(chuàng)建Math類的對象。2、Java語言核心類庫例6-17:測試計算機(jī)的系統(tǒng)內(nèi)存,并執(zhí)行記事本程序。(6-17.txt)classGetMemory{ publicstaticvoidmain(Stringargs[]) { Runtimert=Runtime.getRuntime(); longmem1,mem2; Integersomeints[]=newInteger[100]; System.out.println("總內(nèi)存:"+rt.totalMemory());//總內(nèi)存 mem1=rt.freeMemory();//可用內(nèi)存 System.out.println("可用內(nèi)存:"+mem1); rt.gc(); //內(nèi)存回收 mem1=rt.freeMemory(); System.out.println("可用內(nèi)存:"+mem1);//可用內(nèi)存 for(inti=0;i<100;i++)//占用內(nèi)存 someints[i]=newInteger(i); mem2=rt.freeMemory(); System.out.println("可用內(nèi)存:"+mem2); //可用內(nèi)存 System.out.println("使用的內(nèi)存:"+(mem1-mem2));//用的內(nèi)存 //discardIntegers

2、Java語言核心類庫

for(inti=0;i<100;i++) someints[i]=null; rt.gc();//釋放內(nèi)存 mem2=rt.freeMemory(); System.out.println("可用內(nèi)存

:"+mem2);//可用內(nèi)存 //調(diào)用記事本程序 rt.exec("notepad"); System.out.println("Errorexecutingnotepad.");}}運(yùn)行結(jié)果:2、Java語言核心類庫例6.18:輸出整數(shù)的二、八、十六進(jìn)制數(shù)表示。(6-18.txt)publicclassIntegerChange{publicstaticvoidmain(String[]args){ Stringnm=newString("445"); intn=Integer.parseInt(nm); System.out.println("十進(jìn)制表示:"+n); System.out.println("二進(jìn)制表示:"+Integer.toBinaryString(n)); System.out.println("八進(jìn)制表示:"+Integer.toOctalString(n)); System.out.println("十六進(jìn)制表示:"+Integer.toHexString(n));} }運(yùn)行結(jié)果:十進(jìn)制表示:445二進(jìn)制表示:110111101八進(jìn)制表示:675十六進(jìn)制表示:1bd四、

Java語言基礎(chǔ)類庫

3、實用類庫java.utiljava的utility類庫是Java核心包的一部分,即java.util包。該包中有很多實用的類1.日期類Date日期類Date用來操作系統(tǒng)日期、時間,如天數(shù)計算、日期比較等。

例6-19:輸出時間和日期(6-19.txt)2.日歷類CalendarCalendar類是抽象類,故不能用new創(chuàng)建對象,但可使用其getInstance()方法得到默認(rèn)時區(qū)的一個對象。

例6-20:使用日歷類顯示日期時間和設(shè)置日期時間。(6-20.txt)3.標(biāo)準(zhǔn)日歷時鐘類GregorianCalendarGregorianCalendar是一個標(biāo)準(zhǔn)的日歷類,其對象也就是Calendar類的getInstance()方法返回的用默認(rèn)的地區(qū)、時區(qū)表示的當(dāng)前日期和時間的對象。例6-21:顯示當(dāng)前的的日期和時間(6-21.txt)4.隨機(jī)類Random

Random類是偽隨機(jī)數(shù)產(chǎn)生類。使用相同的初始化值(又稱種子數(shù))生成一個Random類的對象時,可獲得相同的一組隨機(jī)數(shù)。使用不同的種子數(shù)則可產(chǎn)生不同的隨機(jī)數(shù)。3、實用類庫java.util例6-19:輸出時間和日期(6-19.txt)importjava.util.Date;classCurrentDate{ publicstaticvoidmain(Stringargs[]) { Datenow=newDate();//創(chuàng)建日期對象 System.out.println("現(xiàn)在是:");//顯示當(dāng)前日期和時間 System.out.print((1900+now.getYear())+"年");//取年 System.out.print(now.getMonth()+"月");//月 System.out.print(now.getDay()+"日");//日 System.out.print(now.getHours()+"時");// System.out.print(now.getMinutes()+"分"); System.out.println(now.getSeconds()+"秒"); System.out.println("現(xiàn)在是:"+now);//用toString()方法顯示 longmsec=now.getTime();//顯示毫秒數(shù),從January1,1970GMT System.out.println("從Jan.1,1970GMT到現(xiàn)在的毫秒數(shù)

="+msec); }}3、實用類庫java.util

例6-20:使用日歷類顯示日期時間和設(shè)置日期時間。(6-20.txt)importjava.util.Calendar;classACalendar{ publicstaticvoidmain(Stringargs[]) { Stringmonths[]={//初始化數(shù)組 "Jan","Feb","Mar","Apr", "May","Jun","Jul","Aug", "Sep","Oct","Nov","Dec"};CalendaraCalendar=Calendar.getInstance();//用默認(rèn)時區(qū)得到對象System.out.print("Date:");//顯示當(dāng)前日期System.out.print(months[aCalendar.get(Calendar.MONTH)]);//使用常數(shù)System.out.print(""+aCalendar.get(Calendar.DATE)+"");System.out.println(aCalendar.get(Calendar.YEAR));System.out.print("Time:");//顯示和時間System.out.print(aCalendar.get(Calendar.HOUR)+":");//打印時間System.out.print(aCalendar.get(Calendar.MINUTE)+":");System.out.println(aCalendar.get(Calendar.SECOND));aCalendar.set(Calendar.HOUR,10);//設(shè)置時間aCalendar.set(Calendar.MINUTE,29);aCalendar.set(Calendar.SECOND,22); System.out.print("Updatedtime:");//顯示設(shè)置后的時間System.out.print(aCalendar.get(Calendar.HOUR)+":");//打印時分秒System.out.print(aCalendar.get(Calendar.MINUTE)+":");System.out.println(aCalendar.get(Calendar.SECOND));}}3、實用類庫java.util例6-21:顯示當(dāng)前的的日期和時間(6-21.txt)importjava.awt.*;importjava.util.GregorianCalendar;

publicclassGregorianextendsFrame{ publicstaticvoidmain(String[]args){ Gregoriangr=newGregorian();//創(chuàng)建框架對象 TextAreata=newTextArea();//文本區(qū)域?qū)ο? GregorianCalendargc=newGregorianCalendar();//日歷時鐘 ta.append("Year:"+gc.get(GregorianCalendar.YEAR)+"\n");//年 ta.append("Month:"+gc.get(GregorianCalendar.MONTH)+"\n");//月 ta.append("Day:"+gc.get(GregorianCalendar.DATE)+"\n");//日 ta.append("Hour:"+gc.get(GregorianCalendar.HOUR)+"\n");//時 ta.append("Minute:"+gc.get(GregorianCalendar.MINUTE)+"\n");//分 ta.append("Second:"+gc.get(GregorianCalendar.SECOND)+"\n");//秒 gr.add(ta,BorderLayout.CENTER);//文本區(qū)域加入到框架中心,用邊界布局 gr.setSize(300,200); gr.setVisible(true); }}運(yùn)行結(jié)果:五、

實例學(xué)習(xí)五、

實例學(xué)習(xí)實例學(xué)習(xí)1:找出距離最近的點(diǎn)對假設(shè)有一個集合的點(diǎn),找出最接近的點(diǎn)對問題就是找到兩個點(diǎn),它們到彼此的距離最近。例如:在圖6-5中,點(diǎn)(1,1)和(2,0.5)是彼此之間距離最近的一對點(diǎn)。解決這個問題的方法有好幾種。一種直觀的方法就是計算所有點(diǎn)對之間的距離,并且找出最短的距離。(6-實例學(xué)習(xí)-1.txt)6-實例學(xué)習(xí)-1.txtimportjava.util.Scanner;

public

classFindNearestPoints{

public

static

voidmain(String[]args){ Scannerinput=newScanner(System.in); System.out.print("Enterthenumberofpoints:");

intnumberOfPoints=input.nextInt();

//Createanarraytostorepoints

double[][]points=new

double[numberOfPoints][2]; System.out.print("Enter"+numberOfPoints+"points:");

for(inti=0;i<points.length;i++){ points[i][0]=input.nextDouble(); points[i][1]=input.nextDouble(); }

//p1andp2aretheindicesinthepointsarray

intp1=0,p2=1;//Initialtwopoints

doubleshortestDistance=distance(points[p1][0],points[p1][1], points[p2][0],points[p2][1]);//InitializeshortestDistance

演示示例:找出距離最近的點(diǎn)對6-實例學(xué)習(xí)-1.txt//Computedistanceforeverytwopoints

for(inti=0;i<points.length;i++){

for(intj=i+1;j<points.length;j++){

doubledistance=distance(points[i][0],points[i][1], points[j][0],points[j][1]);//Finddistance

if(shortestDistance>distance){ p1=i;//Updatep1 p2=j;//Updatep2 shortestDistance=distance;//UpdateshortestDistance} } }//DisplayresultSystem.out.println("Theclosesttwopointsare"+"("+points[p1][0] +","+points[p1][1]+")and("+points[p2][0]+"," +points[p2][1]+")"); }

/**Computethedistancebetweentwopoints(x1,y1)and(x2,y2)*/public

static

doubledistance(doublex1,doubley1,doublex2,doubley2){

returnMath.sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)); }}

6-實例學(xué)習(xí)-1.txt運(yùn)行結(jié)果:Enterthenumberofpoints:8Enter8points:-13-1-11120.52-133424-0.5Theclosesttwopointsare(1.0,1.0)and(2.0,0.5)程序提示用戶輸入點(diǎn)的個數(shù),從控制臺讀取多個點(diǎn),并將它們存儲在一個名為points的二維數(shù)組中。程序使用變量shortestDistance來存儲兩個距離最近的點(diǎn)而這兩個點(diǎn)在points數(shù)組中的下標(biāo)都存儲在p1和p2中。對每一個索引值為i的點(diǎn),程序會對所有的j>i計算points[i]和

points[j]之間的距離。只要找到比當(dāng)前最短距離更短的距離,就更新變量shortestDistance以及p1和p2。兩個點(diǎn)(x1,y1)和(x2,y2)之間的距離可以使用公式

計算。五、

實例學(xué)習(xí)實例學(xué)習(xí)2:猜生日通過用三維數(shù)組來存儲5個集合的數(shù)字來簡化程序,然后使用循環(huán)提示用戶回答。(6-實例學(xué)習(xí)-2.txt)importjava.util.Scanner;public

classGuessBirthdayUsingArray{

public

static

voidmain(String[]args){

intday=0;//Daytobedetermined

intanswer;int[][][]dates={{{1,3,5,7},{9,11,13,15},{17,19,21,23},{25,27,29,31}},{{2,3,6,7},{10,11,14,15},{18,19,22,23},{26,27,30,31}},

演示示例:猜生日6-實例學(xué)習(xí)-2.txt{{4,5,6,7},{12,13,14,15},{20,21,22,23},{28,29,30,31}},{{8,9,10,11},{12,13,14,15},{24,25,26,27},{28,29,30,31}},{{16,17,18,19},{20,21,22,23},{24,25,26,27},{28,29,30,31}}};//CreateaScannerScannerinput=newScanner(System.in);

for(inti=0;i<5;i++){System.out.println("IsyourbirthdayinSet"+(i+1)+"?");

for(intj=0;j<4;j++){

for(intk=0;k<4;k++)System.out.printf("%4d",dates[i][j][k]);System.out.println();}

System.out.print("\nE

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論