版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第6章數(shù)組、字符串和實(shí)用類(lèi)數(shù)組字符串類(lèi)數(shù)組類(lèi)和向量類(lèi)Java語(yǔ)言基礎(chǔ)類(lèi)庫(kù)
實(shí)例學(xué)習(xí)課程內(nèi)容二三四五一項(xiàng)目學(xué)做六一、數(shù)組
一、數(shù)組數(shù)組就是一組命名變量,其中的每個(gè)變量被稱(chēng)之為數(shù)組元素。根據(jù)下標(biāo)個(gè)數(shù)的多少分類(lèi):
·數(shù)組是有序數(shù)據(jù)的集合·數(shù)組是一種最簡(jiǎn)單的復(fù)合數(shù)據(jù)類(lèi)型·數(shù)組中的每個(gè)元素具有相同的數(shù)據(jù)類(lèi)型數(shù)組中的元素可以用一個(gè)統(tǒng)一的數(shù)組名和下標(biāo)來(lái)唯一地確定定義·一維數(shù)組·多維數(shù)組1、一維數(shù)組只有一個(gè)下標(biāo)的數(shù)組稱(chēng)為一維數(shù)組。在使用數(shù)組之前必須要初始化一維數(shù)組的聲明說(shuō)明數(shù)組變量的名稱(chēng)和數(shù)組元素的數(shù)據(jù)類(lèi)型。聲明格式:datatypearrayName[];或datatype[]arrayName;其中datatype可以為Java中任意的數(shù)據(jù)類(lèi)型,包括簡(jiǎn)單類(lèi)型和復(fù)合類(lèi)型。arrayName為數(shù)組的名字,命名符合標(biāo)識(shí)符的規(guī)定。如:int[]mathScore;為數(shù)組分配內(nèi)存空間,并為每個(gè)數(shù)組元素賦初始值。
1、一維數(shù)組定義數(shù)組的大?。ㄉ暾?qǐng)內(nèi)存空間)數(shù)組初始化·靜態(tài)初始化:在聲明和定義數(shù)組的同時(shí),給數(shù)組元素賦初值?!?dòng)態(tài)初始化:先聲明和定義數(shù)組,然后再賦值。
·簡(jiǎn)單類(lèi)型·復(fù)合類(lèi)型格式:arrayName=newdatatype[numberOfArrayElement];其中,numberOfArrayElement表示數(shù)組元素的個(gè)數(shù),即數(shù)組的長(zhǎng)度或大小,是整型表達(dá)式。例如:在上面對(duì)mathScore聲明之后,就可以定義其大小。mathScore=newint[10];//定義數(shù)組的10個(gè)元素
1、一維數(shù)組一維數(shù)組的重定義一維數(shù)組的長(zhǎng)度(length屬性)一維數(shù)組元素的引用其實(shí)數(shù)組是作為對(duì)象來(lái)處理的,所有的數(shù)組對(duì)象都有l(wèi)ength(長(zhǎng)度)屬性,用來(lái)記錄數(shù)組中元素的個(gè)數(shù)。所謂重定義也稱(chēng)重用,即是在程序中可以改變數(shù)組的大?。ㄖ匦露x數(shù)組)。數(shù)組元素的引用方式為:arrayName[index]index為數(shù)組下標(biāo),它可以為整型常數(shù)或表達(dá)式,下標(biāo)從0開(kāi)始到arrayName.length-1。·例6-1:將多個(gè)學(xué)生某門(mén)課程的成績(jī)放到一個(gè)數(shù)組中,然后計(jì)算學(xué)生的平均成績(jī)。(6-1.txt)1、一維數(shù)組例6-1:將多個(gè)學(xué)生某門(mén)課程的成績(jī)放到一個(gè)數(shù)組中,然后計(jì)算學(xué)生的平均成績(jī)。(6-1.txt)/***這是一個(gè)利用數(shù)組存放學(xué)生成績(jī),統(tǒng)計(jì)學(xué)生平均成績(jī)的示例程序
*程序的名字是: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];//成績(jī)累加和(部分和)}average/=score.length;//求平均System.out.println("average="+average); }}
1、一維數(shù)組foreach循環(huán)使用foreach循環(huán)遍歷數(shù)組時(shí),無(wú)須獲得數(shù)組和集合長(zhǎng)度,無(wú)須根據(jù)索引來(lái)訪(fǎng)問(wèn)數(shù)組元素和集合元素,foreach循環(huán)會(huì)自動(dòng)遍歷數(shù)組。格式:for(typevariableName:array|collection){ //variableName
自動(dòng)迭代訪(fǎng)問(wèn)每個(gè)元素}
應(yīng)為variableName·例6-2:使用foreach循環(huán)來(lái)遍歷數(shù)組元素。(6-2.txt)1、一維數(shù)組例6-2:使用foreach循環(huán)來(lái)遍歷數(shù)組元素。(6-2.txt)publicclassForEachTest{ publicstaticvoidmain(String[]args) { String[]books={ "大學(xué)計(jì)算機(jī)基礎(chǔ)", "Java程序設(shè)計(jì)", "操作系統(tǒng)"}; for(Stringbook:books) { System.out.println(book); } }}運(yùn)行結(jié)果:大學(xué)計(jì)算機(jī)基礎(chǔ)Java程序設(shè)計(jì)操作系統(tǒng)
2、二維數(shù)組帶有兩個(gè)下標(biāo)的數(shù)組稱(chēng)為二維數(shù)組。聲明初始化與一維數(shù)組類(lèi)似,可以先聲明后定義,也可將聲明和定義合二為一。聲明與定義格式:datatypearrayName[][];或:datatype[][]arrayName;或:arrayName=newdatatype[arrayLength1][arrayLength2];或:datatype[][]arrayName=newdatatype[arrayLength1][arrayLength2];·靜態(tài)初始化·動(dòng)態(tài)初始化
2、二維數(shù)組不同長(zhǎng)度的二維數(shù)組二維數(shù)組元素的引用對(duì)二維數(shù)組中的每個(gè)元素,引用方式為:arrayName[index1][index2]例6-3:設(shè)有三個(gè)矩陣A、B、C,A和B矩陣相乘,結(jié)果放入C中,即
C=A×B。(6-3.txt)要求:A[l][m]×B[m][n]=C[l][n]計(jì)算公式:C[i][j]=∑a[i][k]*b[k][j]其中:
i=0~l,j=0~n,k=0~m在有些具體的應(yīng)用中,每行元素的個(gè)數(shù)不是相等的,Java允許生成具有不同長(zhǎng)度的多維數(shù)組。2、二維數(shù)組例6-3:設(shè)有三個(gè)矩陣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];//計(jì)算C中的每個(gè)元素System.out.print(C[i][j]+"");}System.out.println("\n");}}}二、字符串類(lèi)
二、字符串類(lèi)1、String類(lèi)在Java語(yǔ)言中,字符是一基本的數(shù)據(jù)類(lèi)型,而字符串是抽象的數(shù)據(jù)類(lèi)型,只能使用對(duì)象表示字符串。定義字符串類(lèi)String用于創(chuàng)建字符串對(duì)象,并且創(chuàng)建的字符串(對(duì)象)不能被改變,也就是說(shuō)字符串對(duì)象中的字符是不能修改的(如在一個(gè)字符串對(duì)象中添加字符、刪除字符、修改字符等),稱(chēng)為字符串常量?!ぃ?)String類(lèi)的構(gòu)造函數(shù)String()
String(Stringvalue)
String(char[]value)1、String類(lèi)例6-4:使用字符數(shù)組,創(chuàng)建一個(gè)字符串對(duì)象,并顯示字符串對(duì)象中的字符串。(6-4.txt)classArray_string{ publicstaticvoidmain(Stringargs[]) {//聲明定義初始化字符數(shù)組 charc[]={'J','a','v','a','','i','s','','O','O','P'}; Strings1=newString(c);//創(chuàng)建字符串對(duì)象 Strings2=newString(s1);// System.out.println(s1);//打印 System.out.println(s2); }}
二、字符串類(lèi)·(2)字符串的操作對(duì)字符串處理時(shí),可使用String類(lèi)提供的幾個(gè)常用方法(用于對(duì)字符串進(jìn)行處理):charAt(intindex)獲取指定位置的字符;length()求字符串長(zhǎng)度;concat(Stringstr)連接兩個(gè)字符串;copyValueOf(char[]value)字符數(shù)組轉(zhuǎn)換成字符串;replace(charch1,charch2)字符串中的字符ch1用ch2替換;…還有其他很多處理字符串的方法。
二、字符串類(lèi)例6-5:比較字符串(6-5.txt)將截取的子字符串放到字符數(shù)組中時(shí),可使用方法voidgetChars(intstartIndex,intendIndex,chartarget[],inttargetStart),從startIndex到endIndex的字符在字符數(shù)組target從targetStart起存放,應(yīng)保證能夠容納下。例6-6:截取字符串(6-6.txt)1、String類(lèi)例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,忽略大小寫(xiě) System.out.println(s1+"=="+s2+":"+(s1==s2));//false,==為對(duì)象比較, }//s1與s2不是一個(gè)對(duì)象,所以2不相等。}1、String類(lèi)例6-6:截取字符串(6-6.txt)classgetChars{publicstaticvoidmain(Stringargs[]){Strings="ThisisagetCharsmethod.";intstart=10;//第一個(gè)字符的位置(索引)為0,10代表第11個(gè)字符位置intend=18;//第19個(gè)字符位置charbuf[]=newchar[end-start];s.getChars(start,end,buf,0);System.out.println(buf);}}運(yùn)行結(jié)果:getChars
二、字符串類(lèi)2、
StringBuffer類(lèi)當(dāng)需要改變字符串的值時(shí),可使用StringBuffer類(lèi),它提供了對(duì)字符串內(nèi)容進(jìn)行動(dòng)態(tài)修改的功能——?jiǎng)討B(tài)添加,插入、替換等。(1)該類(lèi)提供三個(gè)構(gòu)造方法StringBuffer()StringBuffer(intlength)StringBuffer(Stringstr)*與String不同,應(yīng)該使用StringBuffer的構(gòu)造函數(shù)創(chuàng)建對(duì)象,不能定義StringBuffer類(lèi)型的變量。如:StringBuffersb
=”ThisisStringBuffer”;是不允許的二、字符串類(lèi)(2)對(duì)字符串的修改1)添加操作使用該類(lèi)的append()方法,將一個(gè)字符串添加到一個(gè)字串緩沖區(qū)的后面。
2)插入操作使用的是StringBuffer類(lèi)的insert(intoffset,representation)方法,用于在指定的位置插入給定的量。
二、字符串類(lèi)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類(lèi)中的幾個(gè)常用方法:toString()將字符串緩沖區(qū)轉(zhuǎn)換為字符串;charAt(intindex)取指定位置的字符;getChars(intsrcBegin,intsrcEnd,char[]dst,intdstBegin)取指定位置的字符到字符數(shù)組dst中l(wèi)ength()返回當(dāng)前對(duì)內(nèi)容的長(zhǎng)度;capacity()返回總的容量;ensuareCapacity()設(shè)置容量不夠時(shí)追加的容量大??;reverse()字符串翻轉(zhuǎn)。例6-8:將給定的字符串翻轉(zhuǎn)(6-8.TXT)2、
StringBuffer類(lèi)例6-7:將“Javaprogramming!”中的子串“Java”替換成“ThisisTurboC”。(6-7.txt)classReplace{ publicstaticvoidmain(Stringargs[]) { StringBuffersb=newStringBuffer("Javaprogramming!"); sb.replace(0,4,"ThisisTurboC");//第一個(gè)字符位置為0 System.out.println("Afterreplace:"+sb.toString()); //也可使用下面的方法 //sb=sb.replace(0,4,"ThisisTurboC"); //System.out.println("Afterreplace:"+sb); }}運(yùn)行結(jié)果:ThisisTurboCprogramming!2、
StringBuffer類(lèi)例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
二、字符串類(lèi)3、
StringTokenizer類(lèi)StringTokenizer(字符串令牌,字符串標(biāo)記)類(lèi)主要用于對(duì)字符串的分析,可將一個(gè)字符串分解成數(shù)個(gè)單元(Token—令牌,每個(gè)單元之間以分界符分隔)。StringTokenizer(Stringstr)是構(gòu)造函數(shù)。幾個(gè)常用方法:intcountTokens(),返回令牌的數(shù)目;booleanhasMoreTokens()檢查是否還有令牌存在;StringnextToken()返回下一個(gè)令牌;StringnextToken(Stringdelimit)根據(jù)指定的分界符(delimit),返回令牌。3、
StringTokenizer類(lèi)例6-9:將給定字符串每個(gè)單詞取出來(lái)。(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++)//每個(gè)數(shù)組元素存放一個(gè)單詞 { tokens[i]=st.nextToken();//取詞 System.out.println(tokens[i]);//打印 } }}運(yùn)行結(jié)果:IamaJavanewer三、數(shù)組類(lèi)和向量類(lèi)
三、數(shù)組類(lèi)和向量類(lèi)
1、數(shù)組Arrays類(lèi)
數(shù)組是編程時(shí)最常用的數(shù)據(jù)結(jié)構(gòu)之一,數(shù)組可以包含任何數(shù)據(jù)類(lèi)型,一旦創(chuàng)建便只可存儲(chǔ)指定類(lèi)型的數(shù)據(jù)。向量的功能更強(qiáng)大,它是允許不同類(lèi)型元素共存的變長(zhǎng)數(shù)組。Array(數(shù)組)類(lèi)提供了對(duì)數(shù)組運(yùn)算的功能,如排序、搜索等操作。Array類(lèi)的靜態(tài)方法:staticvoidsort(dataType[]d),對(duì)數(shù)組進(jìn)行排序(升序)1、數(shù)組Arrays類(lèi)例6-10:使用Array類(lèi)對(duì)數(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í)數(shù)據(jù)都不同運(yùn)行結(jié)果:
三、數(shù)組類(lèi)和向量類(lèi)
2、向量類(lèi)VectorJava語(yǔ)言中,數(shù)組只能保存固定數(shù)目的元素,內(nèi)存空間的申請(qǐng)也是一次完成,不能在創(chuàng)建后再追加數(shù)組元素。為此又引入了向量類(lèi)Vector。向量也是一組對(duì)象的集合,但它可以追加對(duì)象元素的數(shù)量,相當(dāng)于一個(gè)變長(zhǎng)數(shù)組。在這些場(chǎng)合中,使用Vector比較方便:·對(duì)象的數(shù)目不定;·序列中的元素都是對(duì)象;·組合不同類(lèi)的對(duì)象成一序列;·頻繁地插入或刪除序列中的對(duì)象。
三、數(shù)組類(lèi)和向量類(lèi)
(1)聲明并創(chuàng)建Vector對(duì)象
Vector類(lèi)的構(gòu)造函數(shù):Vector();Vector(Collectionc);Vector(intinitialCapacity);Vector(intinitialCapacity,intcapacityIncrement);(2)幾個(gè)常用的方法
1)向向量中增加一個(gè)元素(不是插入元素)
add(intindex,Objectelement);2)批量增加元素
addAll(Collectionc);3)獲取向量的容量空間(余量空間)intcapacity();4)指定位置插入元素insertElement(Objectobj,intindex);2、向量類(lèi)Vector例6-11:向量類(lèi)的應(yīng)用。創(chuàng)建一個(gè)向量對(duì)象,將其他對(duì)象如字符串添加到向量中,然后為字符串排序。(6-11.txt)importjava.util.*;classVectorExm{ publicstaticvoidmain(String[]args) { Vectorvect=newVector(); //空向量對(duì)象 Stringstr[]={"ZS張三","LS李四","WW王五","ZL趙六"}; for(intj=0;j<str.length;j++) vect.add(str[j]); //對(duì)象添加到向量中 Collections.sort(vect); //對(duì)向量的對(duì)象排序 for(intj=0;j<vect.size();j++) System.out.print(vect.get(j)""); //打印向量中的對(duì)象 }}運(yùn)行結(jié)果:LS李四
WW王五
ZL趙六
ZS張三排序(按字符的ASCII值)四、
Java語(yǔ)言基礎(chǔ)類(lèi)庫(kù)
四、
Java語(yǔ)言基礎(chǔ)類(lèi)庫(kù)1、Java類(lèi)庫(kù)介紹
使用Java中的類(lèi)庫(kù),在編寫(xiě)程序時(shí)用戶(hù)不必每次都從頭開(kāi)始,只需要對(duì)特定的問(wèn)題自行編寫(xiě)類(lèi),這些類(lèi)繼承了某個(gè)已經(jīng)存在的系統(tǒng)標(biāo)準(zhǔn)類(lèi),或使用這些已存在的標(biāo)準(zhǔn)類(lèi),以提高編程效率。定義Java類(lèi)庫(kù)按不同功能被劃分成幾十個(gè)包,每個(gè)包中包含了有若干個(gè)具有特定功能和相互關(guān)系的類(lèi)和接口。幾個(gè)常用的包:(1)java.lang包(2)java.io包(3)java.util包(4)java.awt包(5)javax.swing包(6)java.applet包(7)包(8)java.sql包
三、數(shù)組類(lèi)和向量類(lèi)
2、Java語(yǔ)言核心類(lèi)庫(kù)下面我們對(duì)Java語(yǔ)言核心類(lèi)庫(kù)java.lang包作簡(jiǎn)單介紹1.Objcet類(lèi)正如我們過(guò)去曾經(jīng)介紹過(guò)的那樣,Object類(lèi)是Java程序中所有類(lèi)的父類(lèi)(直接的或間接的),也是所有類(lèi)庫(kù)中類(lèi)的父類(lèi),即所有的類(lèi)都是從Object類(lèi)派生出來(lái)的。2.Class類(lèi)Class類(lèi)封裝對(duì)象或接口運(yùn)行時(shí)的狀態(tài),當(dāng)類(lèi)被加載時(shí),類(lèi)Class的對(duì)象被自動(dòng)創(chuàng)建,不能顯式創(chuàng)建一個(gè)Class類(lèi)的對(duì)象。例6-12:使用系統(tǒng)Class類(lèi),獲取應(yīng)用程序的類(lèi)名和其父類(lèi)名。(6-12.txt)3.System類(lèi)提供標(biāo)準(zhǔn)的輸入/輸出、運(yùn)行時(shí)系統(tǒng)(Runtime)信息。System類(lèi)不能進(jìn)行實(shí)例化,它的屬性和方法均是static型,直接用類(lèi)名引用。例6-13:退出程序的方法(6-13.txt)例6-14:數(shù)組復(fù)制(6-14.txt)例6-15:獲取計(jì)算機(jī)系統(tǒng)的相關(guān)信息(6-15txt)
例6-16:設(shè)置系統(tǒng)的相關(guān)屬性(6-16.txt)2、Java語(yǔ)言核心類(lèi)庫(kù)例6-12:使用系統(tǒng)Class類(lèi),獲取應(yīng)用程序的類(lèi)名和其父類(lèi)名。(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)聽(tīng)(關(guān)閉窗體事件) frmclo.addWindowListener(newWindowAdapter() { publicvoidwindowClosing(WindowEvente) { System.exit(0); } }; Labelout=newLabel("單擊關(guān)閉按鈕,可以關(guān)閉該窗口"); frmclo.setLayout(newFlowLayout()); frmclo.add(out);
2、Java語(yǔ)言核心類(lèi)庫(kù) Labeldis1=newLabel();//創(chuàng)建幾個(gè)標(biāo)簽 Labeldis2=newLabel(); Labeldis3=newLabel(); ClassclassObj; classObj=frmclo.getClass(); //得到類(lèi)的引用 dis1.setText("類(lèi)名:"+classObj.getName()); dis2.setText("類(lèi)名:"+frmclo.getClass()); classObj=classObj.getSuperclass(); //得到引用的超類(lèi) dis3.setText("超類(lèi):"+classObj.getName());//frmclo.getSuperclass();//不能用此語(yǔ)句 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語(yǔ)言核心類(lèi)庫(kù)例6-13:退出程序的方法(6-13.txt)publicclassProgramExit{ publicstaticvoidmain(Stringargs[]) { //程序運(yùn)行代碼,根據(jù)代碼的運(yùn)行情況設(shè)置邏輯類(lèi)型的狀態(tài)值 intb=1; if(args.length>0) b=Integer.parseInt(args[0]);//命令行帶一個(gè)參數(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語(yǔ)言核心類(lèi)庫(kù)例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的長(zhǎng)度 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語(yǔ)言核心類(lèi)庫(kù)例6-15:獲取計(jì)算機(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語(yǔ)言核心類(lèi)庫(kù)例6-16:設(shè)置系統(tǒng)的相關(guān)屬性(6-16.txt)publicclassSetSP{ publicstaticvoidmain(Stringargs[]) {
StringstrProperty=System.getProperty("java.io.tmpdir"); System.out.println("原來(lái)的臨時(shí)文件存儲(chǔ)目錄名稱(chēng):"+strProperty); System.out.println("將臨時(shí)文件目錄設(shè)置為C:/Tmp"); StringoldProperty=System.setProperty("java.io.tmpdir","C:/Tmp"); strProperty=System.getProperty("java.io.tmpdir"); System.out.println("設(shè)置后的臨時(shí)文件存儲(chǔ)目錄名稱(chēng):"+strProperty); }}運(yùn)行結(jié)果:原來(lái)的臨時(shí)文件存儲(chǔ)目錄名稱(chēng):D:\DOCUME~1\cyx\LOCALS~1\Temp\將臨時(shí)文件目錄設(shè)置為C:/Tmp設(shè)置后的臨時(shí)文件存儲(chǔ)目錄名稱(chēng):C:/Tmp
2、Java語(yǔ)言核心類(lèi)庫(kù)
4.Runtime類(lèi)Runtime類(lèi)封裝了運(yùn)行時(shí)環(huán)境。例6-17:測(cè)試計(jì)算機(jī)的系統(tǒng)內(nèi)存,并執(zhí)行記事本程序。(6-17.txt)5.基本數(shù)據(jù)類(lèi)型(包裝)類(lèi)數(shù)據(jù)類(lèi)型類(lèi)對(duì)應(yīng)相應(yīng)的基本數(shù)據(jù)類(lèi)型,類(lèi)名與數(shù)據(jù)類(lèi)型的名字相似,但第一個(gè)字母需大寫(xiě)。包裝類(lèi)名
數(shù)據(jù)類(lèi)型Boolean booleanCharacter charDouble doubleInteger intLong longFloat floatByte byte(1)Integer類(lèi)例6.18:輸出整數(shù)的二、八、十六進(jìn)制數(shù)表示。(6-18.txt)(2)基本數(shù)據(jù)類(lèi)型和字符串的相互轉(zhuǎn)換6.Math類(lèi)提供用于數(shù)學(xué)運(yùn)算的標(biāo)準(zhǔn)函數(shù)及常數(shù),它們都是static型的,故在使用時(shí)直接用類(lèi)名作前綴,不需要?jiǎng)?chuàng)建Math類(lèi)的對(duì)象。2、Java語(yǔ)言核心類(lèi)庫(kù)例6-17:測(cè)試計(jì)算機(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語(yǔ)言核心類(lèi)庫(kù)
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語(yǔ)言核心類(lèi)庫(kù)例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語(yǔ)言基礎(chǔ)類(lèi)庫(kù)
3、實(shí)用類(lèi)庫(kù)java.utiljava的utility類(lèi)庫(kù)是Java核心包的一部分,即java.util包。該包中有很多實(shí)用的類(lèi)1.日期類(lèi)Date日期類(lèi)Date用來(lái)操作系統(tǒng)日期、時(shí)間,如天數(shù)計(jì)算、日期比較等。
例6-19:輸出時(shí)間和日期(6-19.txt)2.日歷類(lèi)CalendarCalendar類(lèi)是抽象類(lèi),故不能用new創(chuàng)建對(duì)象,但可使用其getInstance()方法得到默認(rèn)時(shí)區(qū)的一個(gè)對(duì)象。
例6-20:使用日歷類(lèi)顯示日期時(shí)間和設(shè)置日期時(shí)間。(6-20.txt)3.標(biāo)準(zhǔn)日歷時(shí)鐘類(lèi)GregorianCalendarGregorianCalendar是一個(gè)標(biāo)準(zhǔn)的日歷類(lèi),其對(duì)象也就是Calendar類(lèi)的getInstance()方法返回的用默認(rèn)的地區(qū)、時(shí)區(qū)表示的當(dāng)前日期和時(shí)間的對(duì)象。例6-21:顯示當(dāng)前的的日期和時(shí)間(6-21.txt)4.隨機(jī)類(lèi)Random
Random類(lèi)是偽隨機(jī)數(shù)產(chǎn)生類(lèi)。使用相同的初始化值(又稱(chēng)種子數(shù))生成一個(gè)Random類(lèi)的對(duì)象時(shí),可獲得相同的一組隨機(jī)數(shù)。使用不同的種子數(shù)則可產(chǎn)生不同的隨機(jī)數(shù)。3、實(shí)用類(lèi)庫(kù)java.util例6-19:輸出時(shí)間和日期(6-19.txt)importjava.util.Date;classCurrentDate{ publicstaticvoidmain(Stringargs[]) { Datenow=newDate();//創(chuàng)建日期對(duì)象 System.out.println("現(xiàn)在是:");//顯示當(dāng)前日期和時(shí)間 System.out.print((1900+now.getYear())+"年");//取年 System.out.print(now.getMonth()+"月");//月 System.out.print(now.getDay()+"日");//日 System.out.print(now.getHours()+"時(shí)");// 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、實(shí)用類(lèi)庫(kù)java.util
例6-20:使用日歷類(lèi)顯示日期時(shí)間和設(shè)置日期時(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)時(shí)區(qū)得到對(duì)象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:");//顯示和時(shí)間System.out.print(aCalendar.get(Calendar.HOUR)+":");//打印時(shí)間System.out.print(aCalendar.get(Calendar.MINUTE)+":");System.out.println(aCalendar.get(Calendar.SECOND));aCalendar.set(Calendar.HOUR,10);//設(shè)置時(shí)間aCalendar.set(Calendar.MINUTE,29);aCalendar.set(Calendar.SECOND,22); System.out.print("Updatedtime:");//顯示設(shè)置后的時(shí)間System.out.print(aCalendar.get(Calendar.HOUR)+":");//打印時(shí)分秒System.out.print(aCalendar.get(Calendar.MINUTE)+":");System.out.println(aCalendar.get(Calendar.SECOND));}}3、實(shí)用類(lèi)庫(kù)java.util例6-21:顯示當(dāng)前的的日期和時(shí)間(6-21.txt)importjava.awt.*;importjava.util.GregorianCalendar;
publicclassGregorianextendsFrame{ publicstaticvoidmain(String[]args){ Gregoriangr=newGregorian();//創(chuàng)建框架對(duì)象 TextAreata=newTextArea();//文本區(qū)域?qū)ο? GregorianCalendargc=newGregorianCalendar();//日歷時(shí)鐘 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");//時(shí) 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é)果:五、
實(shí)例學(xué)習(xí)五、
實(shí)例學(xué)習(xí)實(shí)例學(xué)習(xí)1:找出距離最近的點(diǎn)對(duì)假設(shè)有一個(gè)集合的點(diǎn),找出最接近的點(diǎn)對(duì)問(wèn)題就是找到兩個(gè)點(diǎn),它們到彼此的距離最近。例如:在圖6-5中,點(diǎn)(1,1)和(2,0.5)是彼此之間距離最近的一對(duì)點(diǎn)。解決這個(gè)問(wèn)題的方法有好幾種。一種直觀(guān)的方法就是計(jì)算所有點(diǎn)對(duì)之間的距離,并且找出最短的距離。(6-實(shí)例學(xué)習(xí)-1.txt)6-實(shí)例學(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)對(duì)6-實(shí)例學(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-實(shí)例學(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)程序提示用戶(hù)輸入點(diǎn)的個(gè)數(shù),從控制臺(tái)讀取多個(gè)點(diǎn),并將它們存儲(chǔ)在一個(gè)名為points的二維數(shù)組中。程序使用變量shortestDistance來(lái)存儲(chǔ)兩個(gè)距離最近的點(diǎn)而這兩個(gè)點(diǎn)在points數(shù)組中的下標(biāo)都存儲(chǔ)在p1和p2中。對(duì)每一個(gè)索引值為i的點(diǎn),程序會(huì)對(duì)所有的j>i計(jì)算points[i]和
points[j]之間的距離。只要找到比當(dāng)前最短距離更短的距離,就更新變量shortestDistance以及p1和p2。兩個(gè)點(diǎn)(x1,y1)和(x2,y2)之間的距離可以使用公式
計(jì)算。五、
實(shí)例學(xué)習(xí)實(shí)例學(xué)習(xí)2:猜生日通過(guò)用三維數(shù)組來(lái)存儲(chǔ)5個(gè)集合的數(shù)字來(lái)簡(jiǎn)化程序,然后使用循環(huán)提示用戶(hù)回答。(6-實(shí)例學(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-實(shí)例學(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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度玻璃隔斷新型節(jié)能環(huán)保安裝合同3篇
- 2024版設(shè)備保修維護(hù)服務(wù)合同書(shū)
- 二零二五年度廠(chǎng)房拆除與城市更新規(guī)劃合同文本3篇
- 《湘北高?!氛n件
- 二零二五版桉樹(shù)砍伐與林業(yè)碳匯交易合同3篇
- 2024精簡(jiǎn)版企業(yè)保密協(xié)議版B版
- 2025年度房地產(chǎn)經(jīng)紀(jì)機(jī)構(gòu)加盟代理銷(xiāo)售合同4篇
- 外匯課件重要講解
- 2025年環(huán)保材料代理商全國(guó)總代理銷(xiāo)售合同模板4篇
- 二零二五年度預(yù)付費(fèi)充值卡定制服務(wù)合同4篇
- 冷庫(kù)存儲(chǔ)合同協(xié)議書(shū)范本
- AQ/T 4131-2023 煙花爆竹重大危險(xiǎn)源辨識(shí)(正式版)
- 武術(shù)體育運(yùn)動(dòng)文案范文
- 設(shè)計(jì)服務(wù)合同范本百度網(wǎng)盤(pán)
- 2024年市級(jí)專(zhuān)科護(hù)士理論考核試題及答案
- 肺炎臨床路徑
- 供應(yīng)商供貨服務(wù)方案(2篇)
- JB∕T 3077-2019 汽輪機(jī)圖形符號(hào)
- 《藥物臨床試驗(yàn)機(jī)構(gòu)備案評(píng)估指南及檢查細(xì)則(試行)》
- 河北省2022年中考數(shù)學(xué)真題及答案
- 氨水安全技術(shù)說(shuō)明書(shū)msds
評(píng)論
0/150
提交評(píng)論