Java資源及其利用課件_第1頁
Java資源及其利用課件_第2頁
Java資源及其利用課件_第3頁
Java資源及其利用課件_第4頁
Java資源及其利用課件_第5頁
已閱讀5頁,還剩119頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

Java資源及其利用

Java資源及其利用Java的標(biāo)準(zhǔn)庫結(jié)構(gòu)語言包輸入與輸出包其他常用資源簡介Java的標(biāo)準(zhǔn)庫結(jié)構(gòu) Java有一個功能強(qiáng)大的資源庫,通過類和類的繼承機(jī)制將資源庫中的資源組織起來。Java資源庫中類的繼承層次和包的組織呈樹型結(jié)構(gòu),它將功能相關(guān)的類組織成包,使程序員可以很方便地使用資源庫。常用的包java.lang包:主要含有與語言相關(guān)的類java.io包:主要含有與輸入輸出相關(guān)的類java.util包:包括許多具有特定功能的類,有Arrays、Date、Calendar和Stack等java.swing包:提供了創(chuàng)建圖形用戶界面元素的類包:含有與網(wǎng)絡(luò)操作相關(guān)的類java.applet包:含有控制Hotjava

瀏覽器的類

Java資源的層次結(jié)構(gòu)語言包基本對象類系統(tǒng)類包裝類字符串類和緩沖串類數(shù)學(xué)類異常處理基本對象類Object類是所有Java類的祖先,它處于Java開發(fā)環(huán)境的類層次樹的根部,所有其他類都是由Object類直接或間接派生出來的。如果一個類在定義的時候沒有包含extends關(guān)鍵字,編譯器會將其建為Object類的直接子類。Object類的常用方法方法說明protectedObjectclone()生成并返回當(dāng)前對象的一個拷貝。publicboolean

equals(Objectobj)比較兩個對象是否相同,結(jié)果為一布爾值。publicfinalClassgetClass()返回一個對象在運行時所對應(yīng)的類的表示,從而可以得到相關(guān)的類的信息。protectedvoidfinalize()throwsThrowable定義回收當(dāng)前對象時所需完成的清理工作。publicStringtoString()返回描述當(dāng)前對象的字符串信息。Object類的方法的個例classObjectExam{publicstaticvoidmain(String[]args){ Integera=newInteger(1); Integerb=newInteger(1); Rectanglec=newRectangle(20,5);

System.out.println(a.equals(b));

System.out.println("TheObject'sclassis:"+a.getClass());

System.out.println(c.toString()); /*toString()方法返回的是該對象所對應(yīng)的類名、一個@符號和 一個該對象的hash碼的無符號十六進(jìn)制描述。用戶通過重載 toString()方法可以適當(dāng)?shù)仫@示對象的信息以進(jìn)行調(diào)試。*/ }}系統(tǒng)類System類(SystemClass)是一個功能強(qiáng)大、極其有用的特殊的類,它提供了標(biāo)準(zhǔn)輸入、標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯誤輸出;對系統(tǒng)信息的存??;快速拷貝數(shù)組元素等等機(jī)制System類由publicfinal修飾,該類不能被實例化(即不能創(chuàng)建System類的對象)或派生子類。System類中包含了許多有用的類變量和類方法(由static修飾)System類的變量及其說明類變量說明publicstaticfinalPrintStream

err

標(biāo)準(zhǔn)錯誤輸出流。publicstaticfinalInputStream

in

標(biāo)準(zhǔn)輸入流。

publicstaticfinalPrintStream

out

標(biāo)準(zhǔn)輸出流。System類常用的方法及其說明方法說明publicstaticvoidarraycopy(Object

src,int

src_position,Objectdst,int

dst_position,intlength)拷貝一個數(shù)組到另一個數(shù)組,它從源數(shù)組的指定位置開始,拷貝到目標(biāo)數(shù)組的指定位置。publicstaticlongcurrentTimeMillis()返回從時間1970年1月1日00:00:00時起到當(dāng)前所歷經(jīng)的毫秒數(shù)(通常用來比較兩事件發(fā)生的前后時間差)。publicstaticvoidexit(int

status)退出Java當(dāng)前運行的虛擬機(jī)。publicstaticvoidgc()運行垃圾回收器。publicstaticStringgetProperty(String

key)獲取由給定的key確定的系統(tǒng)屬性值。publicstaticvoidsetErr(PrintStreamerr)重定向標(biāo)準(zhǔn)錯誤輸出設(shè)備。publicstaticvoidsetIn(InputStreamin)重定向標(biāo)準(zhǔn)輸入設(shè)備。publicstaticvoidsetOut(PrintStreamout)重定向標(biāo)準(zhǔn)輸出設(shè)備。publicstaticString

setProperty(String

key,String

value)設(shè)置由key指定的系統(tǒng)屬性為指定的

value的值。System類的常用屬性列表系統(tǒng)屬性名稱(key的取值)含義"file.separator"文件分隔符"java.class.path"Java類路徑"java.class.version"Java類的版本編號"java.home"Java的安裝目錄"java.version"Java的版本編號"os.arch"操作系統(tǒng)的體系結(jié)構(gòu)""操作系統(tǒng)名"os.version"操作系統(tǒng)版本"line.separator"行分隔符"path.separator"路徑分隔符"user.dir"用戶當(dāng)前目錄"user.home"用戶主目錄""用戶名System類的例子publicclassSystemDemo{publicstaticvoidmain(String

args[])throwsException{charc;

System.out.println("請輸入一個字符:");c=(char)System.in.read();

System.out.println("你輸入了:"+c);

System.out.println("System.currentTimeMillis()="+System.currentTimeMillis());

System.out.println("java.version="+System.getProperty("java.version"));

System.out.println("java.home="+System.getProperty("java.home"));

System.out.println("="+System.getProperty(""));

System.out.println("java.class.path="+System.getProperty("java.class.path"));

System.out.println("user.home="+System.getProperty("user.home"));

System.out.println("user.dir="+System.getProperty("user.dir"));

System.out.println("="+System.getProperty(""));

System.out.println("="+System.getProperty(""));

System.out.println("os.arch="+System.getProperty("os.arch"));

System.out.println("os.version="+System.getProperty("os.version"));

System.out.println("file.separator="+System.getProperty("file.separator"));

System.out.println("path.separator="+System.getProperty("path.separator"));}}包裝類為確保Java語言的純面向?qū)ο筇匦?,java.lang包為基本數(shù)據(jù)類型提供了一些對象封裝。在Java中,數(shù)據(jù)類型包裝類(typewrapperclass)用于封裝基本數(shù)據(jù)類型的有關(guān)信息和操作數(shù)據(jù)類型包裝類是由多個類組成的一個集合,每種基本數(shù)據(jù)類型均存在相應(yīng)的對象封裝類包裝類及其對應(yīng)的基本數(shù)據(jù)類型基本數(shù)據(jù)類型數(shù)據(jù)類型包裝類byteByteshortShortintIntegerlongLongfloatFloatdoubleDoublecharCharacterbooleanBoolean包裝類的一些共同的方法方法說明publicStringtoString()返回數(shù)據(jù)類型包裝類中所保存數(shù)據(jù)的字符串表示形式。publictypetypeValue()返回數(shù)據(jù)類型包裝類的相關(guān)基本類型值。publicboolean

equals(Object

obj)由于數(shù)據(jù)類型包裝類不能直接用等號來進(jìn)行比較,因此需要用到這個方法。數(shù)據(jù)類型包裝類的例publicclassExam{publicstaticvoidmain(String

args[]){ //構(gòu)造方法

Integera=newInteger(1); Booleanb=newBoolean(true); Floatf=newFloat(-2.4); Doubled=newDouble(1.4); Characterch=newCharacter('A'); Characterch2=newCharacter('A'); //方法

inti=Value(); charc=ch.charValue();

System.out.println(i);

System.out.println(b.booleanValue());

System.out.println(f.floatValue());

System.out.println(d.doubleValue());

System.out.println(c); System.out.println(ch.equals(ch2));

System.out.println(d.toString());}}Character類Character類的繼承樹是:

java.lang.Object | +java.lang.Character它的構(gòu)造方法很簡單:

publicCharacter(char

value)Character類的一些常用方法及其說明方法說明publicstaticboolean

isLowerCase(char

ch)如果ch是小寫,則返回true,否則返回false。publicstaticboolean

isUpperCase(char

ch)如果ch是大寫,則返回true,否則返回false。publicstaticboolean

isDigit(char

ch)如果ch是數(shù)字,則返回true,否則返回false。publicstaticboolean

isLetter(char

ch)如果ch是字母,則返回true,否則返回false。publicstaticchartoLowerCase(char

ch)返回給定字母ch對應(yīng)的小寫形式。publicstaticchartoUpperCase(char

ch)返回給定字母ch對應(yīng)的大寫形式。publicstaticint

digit(char

ch,int

radix)根據(jù)radix指明的基數(shù),返回ch所對應(yīng)的數(shù)值。Character類的應(yīng)用示例publicclassCharacterExam{publicstaticvoidmain(String

args[]){ //構(gòu)造方法

Characterch=newCharacter('s');charc=ch.charValue(); //方法

if(Character.isUpperCase(c))

System.out.println("Thecharacter"+c+"isuppercase.");else

System.out.println("Thecharacter"+c+"islowercase.");

booleanb=Character.isDigit(c);

intx=Character.digit('c',16);//十六進(jìn)制中,c代表12。

System.out.println("b="+b);

System.out.println("x="+x);}}Integer類Integer類的繼承樹是:

java.lang.Object | +--java.lang.Number | +--java.lang.IntegerInteger類有兩種構(gòu)造方法:

⑴publicInteger(int

value) ⑵publicInteger(String

s)throwsNumberFormatExceptionInteger類的常用類變量及其說明類變量說明publicstaticfinalint

MAX_VALUE規(guī)定了int類型的最大值。publicstaticfinalint

MIN_VALUE規(guī)定了int類型的最小值。Integer類的常用方法及其說明方法說明publicstaticint

parseInt(String

s)throwsNumberFormatException將字符串s轉(zhuǎn)換為帶符號十進(jìn)制整數(shù),結(jié)果為int量。publicstaticIntegervalueOf(String

s)throwsNumberFormatException將字符串s轉(zhuǎn)換為一個Integer對象,該對象對應(yīng)的int數(shù)值與字符串表示的數(shù)值一致。Integer類的應(yīng)用示例publicclassIntegerExam{publicstaticvoidmain(String

args[]){ //構(gòu)造方法

Integera=newInteger(1); Integera2=newInteger(“1”); //方法

inti=Value();

inti2=Integer.valueOf("111").intValue();

inti3=Integer.parseInt("888");

System.out.println(i); System.out.println(i2); System.out.println(i3); System.out.println(a.equals(a2)); bytelargestByte=Byte.MAX_VALUE; shortlargestShort=Short.MAX_VALUE;

int

largestInteger=Integer.MAX_VALUE;

int

smallestInteger=Integer.MIN_VALUE;longlargestLong=Long.MAX_VALUE;floatlargestFloat=Float.MAX_VALUE;doublelargestDouble=Double.MAX_VALUE;

System.out.println("Thelargestbytevalueis"+largestByte);

System.out.println("Thelargestshortvalueis"+largestShort);

System.out.println("Thelargestintegervalueis"+largestInteger);

System.out.println("Thesmallestintegervalueis"+smallestInteger);

System.out.println("Thelargestlongvalueis"+largestLong);

System.out.println("Thelargestfloatvalueis"+largestFloat);

System.out.println("Thelargestdoublevalueis"+largestDouble);}}字符串與各種數(shù)據(jù)類型之間的轉(zhuǎn)化publicclassTransformExam{publicstaticvoidmain(String

args[]){ //字符串與整型之間的轉(zhuǎn)化

Integera=newInteger(1); Strings=a.toString();

System.out.println("s="+s);

inti=Integer.parseInt("888");

inti2=Integer.valueOf("666").intValue();

System.out.println("i="+i); System.out.println("i2="+i2); //字符串與浮點數(shù)之間的轉(zhuǎn)化

Doublex=newDouble(1.7); Strings2=x.toString(); System.out.println("s2="+s2); doubled=Double.valueOf("12.3").doubleValue(); floatf=Float.valueOf("-.3").floatValue();

System.out.println("d="+d);

System.out.println("f="+f);}}字符串類和緩沖串類java.lang包中專門提供了兩個類

String

StringBuffer

來處理字符串,前者用來處理創(chuàng)建之后不會再做修改和變動的字符串,后者則用來處理創(chuàng)建之后允許再做修改和變動的字符串。這兩個類共同的特點是都不能再派生子類String類String類描述了字符串,所有Java程序中的字符串字面量,是作為該類的實例來實現(xiàn)的String類的繼承樹是:

java.lang.Object | +--java.lang.StringString類提供的構(gòu)造方法publicString();publicString(charchars[]);publicString(charchars[],int

startIndex,int

numChars);publicString(String

value)publicString(StringBuffer

buffer)

String類的常用方法及其說明方法說明publicint

length()返回當(dāng)前字符串的長度。publicStringtoLowerCase()將當(dāng)前字符串中的所有大寫字母轉(zhuǎn)換為小寫。publicStringtoUpperCase()將當(dāng)前字符串中的所有小寫字母轉(zhuǎn)換為大寫。publicStringtrim()去掉當(dāng)前字符串中的前導(dǎo)空格和末尾的空格。publicStringsubstring(int

beginIndex)返回當(dāng)前字符串中從beginIndex位置開始到末尾的子串。publicStringsubstring(int

beginIndex,int

endIndex)返回當(dāng)前字符串的子串,該子串由beginIndex(包含在內(nèi))和endIndex(不包含在內(nèi))之間的字符組成。publicStringreplace(char

oldChar,char

newChar)將當(dāng)前字符串中的所有出現(xiàn)的oldChar用newChar替換,生成一個新字符串。publiccharcharAt(int

index)返回指定索引位置上的字符。索引范圍在0與length()-1之間。publicvoidgetChars(int

srcBegin,int

srcEnd,char

dst[],int

dstBegin)將當(dāng)前字符串的部分字符拷貝到目標(biāo)字符數(shù)組dst中。部分字符是指此字符串中從srcBegin(包含在內(nèi))到srcEnd(不包含在內(nèi))之間的字符??截惖侥繕?biāo)字符數(shù)組中的字符從dstBegin位置開始存放。publicboolean

equals(ObjectanObject)將當(dāng)前字符串與指定對象比較,如果兩者具有相同的長度和字符,則返回true,否則返回falsepublicboolean

equalsIgnoreCase(StringanotherString)將當(dāng)前字符串與指定對象比較,忽略大小寫的區(qū)別。如果兩者相等,則返回true,否則返回false。publicint

compareTo(StringanotherString)將當(dāng)前字符串與anotherString進(jìn)行比較,返回一個大于、等于或小于0的整數(shù)。此整數(shù)值決定于此字符串是大于、等于還是小于anotherString字符串。publicchar[]toCharArray()將當(dāng)前字符串轉(zhuǎn)換成一個字符數(shù)組。publicbyte[]getBytes()將當(dāng)前字符串轉(zhuǎn)換成一個字節(jié)數(shù)組。publicboolean

startsWith(Stringprefix)判斷當(dāng)前字符串是否由指定的前綴prefix開始。publicboolean

endsWith(Stringsuffix)判斷當(dāng)前字符串是否以指定的后綴

suffix結(jié)束。publicint

indexOf(int

ch)返回當(dāng)前字符串中第一次出現(xiàn)指定字符ch的位置,如果未找到則返回-1。publicint

lastIndexOf(int

ch)返回當(dāng)前字符串中最后一次出現(xiàn)指定字符ch的位置,如果未找到則返回-1。String類的常用方法示例publicclassStringDemo{publicstaticvoidmain(String

args[]){ //常用方法

Strings="Hello"; //Hello前后各有2個空格

System.out.println("s.length()="+s.length());

System.out.println("s.toLowerCase()="+s.toLowerCase());

System.out.println("s.toUpperCase()="+s.toUpperCase());

System.out.println("s.trim()="+s.trim());System.out.println("s.substring(5)="+s.substring(5));System.out.println("s.substring(3,5)="+s.substring(3,5));Stringnews=s.replace('l','t');//將s中所有的'l'替換為't'以生成新串

System.out.println("replaceall'l'with't':"+news);Stringcde="cde";

System.out.println("abc"+cde); /*提取字符:提取一個字符,可以使用charAt方法;

如需提取多個字符,可以使用getChars方法*/

System.out.println("提取字符的結(jié)果:");charc=s.charAt(3);

System.out.println(c);charbuf[]=newchar[4];s.getChars(1,5,buf,0);

System.out.println(buf); //字符串比較

System.out.println("字符串比較的結(jié)果:");Strings1="Hello";Strings2="Hello";Strings3="HELLO";

System.out.println(s1+"equals"+s2+"->"+s1.equals(s2));System.out.println(s1+"equals"+s3+"->"+s1.equals(s3));System.out.println(s1+"equalsIgnoreCase"+s3+"->"+s1.equalsIgnoreCase(s3));System.out.println(s1+"compareTo"+s2+"->"+pareTo(s2));Strings4="LemonTree";System.out.println(s4.startsWith("Lemon"));System.out.println(s4.endsWith("Tree"));System.out.println(s4.endsWith("tree")); //字符串檢索

System.out.println("字符串檢索的結(jié)果:");

System.out.println("字符e第一次出現(xiàn)的位置為:"+s4.indexOf('e'));

System.out.println("字符e最后一次出現(xiàn)的位置為:"+s4.lastIndexOf('e'));}}StringBuffer類StringBuffer類用于處理可變的字符串,StringBuffer對象的內(nèi)容是可以擴(kuò)充和修改的。當(dāng)生成一個StringBuffer對象后,也可以通過調(diào)用toString()方法將其轉(zhuǎn)換為String對象。StringBuffer類的繼承樹是:

java.lang.Object | +--java.lang.StringBufferStringBuffer類提供了三個構(gòu)造方法publicStringBuffer()publicStringBuffer(int

length)publicStringBuffer(Stringstr)StringBuffer類的常用方法及其說明方法說明publicStringBuffer

append(type

typeObjectName)將指定的參數(shù)對象轉(zhuǎn)化成String,然后追加到當(dāng)前StringBuffer對象的末尾。publicStringBuffer

insert(int

offset,type

typeObjectName)用來在當(dāng)前StringBuffer對象的指定位置插入由參數(shù)對象轉(zhuǎn)化而得的String內(nèi)容。PublicStringBuffer

delete(int

start,int

end)刪除當(dāng)前StringBuffer對象的子串,該子串中字符的位置由start開始,到end–1結(jié)束。publicStringBuffer

replace(int

start,int

end,String

str)將由start開始,到end–1結(jié)束的位置處的字符序列用str來替代。publicStringBuffer

reverse()倒置當(dāng)前StringBuffer對象中的字符序列。publicvoidsetCharAt(int

index,char

ch)用指定字符ch替換由index指定的位置處的字符。publicStringtoString()將一個可變字符串轉(zhuǎn)化為一個不變字符串。publicint

length()返回當(dāng)前StringBuffer對象的長度(字符數(shù)目)。publicint

capacity()返回當(dāng)前StringBuffer對象的整個容量。StringBuffer類的常用方法示例classStringBufferDemo{publicstaticvoidmain(String

args[]){ //構(gòu)造方法

StringBuffers0=newStringBuffer();

StringBuffers1=newStringBuffer(512);

StringBuffers2=newStringBuffer("Hello!");//測試長度和容量

System.out.println("s0.length()="+s0.length());System.out.println("s0.capacity()="+s0.capacity());System.out.println("s1.length()="+s1.length());System.out.println("s1.capacity()="+s1.capacity());System.out.println("s2.length()="+s2.length());System.out.println("s2.capacity()="+s2.capacity());//替換、刪除和倒置

StringBuffers=newStringBuffer("LenonTree");s.setCharAt(2,'m');

System.out.println("s="+s);System.out.println(s.replace(0,5,"Apple"));System.out.println(s.delete(0,5));

System.out.println("s.reverse()="+s.reverse()); //追加和插入各種類型的數(shù)據(jù)

StringBuffer

st=newStringBuffer("eacher!");

booleanb=true;charc='T';doubled=3.14159;chare=',';charf[]={'W','e','l','c','o','m','e','!'};charg='!';

System.out.println("insertachar:"+st.insert(0,c));st.insert(0,e);

System.out.println("insertadouble:"+st.insert(0,d));st.insert(0,g);

System.out.println("insertaArray:"+st.insert(0,f));

System.out.println("appendachar:"+st.append(c));

System.out.println("appendaarray:"+st.append(d));

System.out.println("appendaboolean:"+st.append(b)); }}數(shù)學(xué)類java.lang.Math類是標(biāo)準(zhǔn)的數(shù)學(xué)類,提供了兩個數(shù)學(xué)常量和若干實現(xiàn)基本的數(shù)學(xué)操作的方法。與System類相似,java.lang.Math類也不能被子類化或?qū)嵗?,它的所有方法和變量也都是靜態(tài)的。Math類的繼承樹是:

java.lang.Object | +--java.lang.MathMath類的類變量及其說明類變量說明publicstaticfinaldoubleE最接近自然對數(shù)的底(e)的double值。publicstaticfinaldoublePI最接近圓周率(

)的double值。Math類的常用方法及其說明方法說明publicstaticdoublesin(double

a)返回角度a(以弧度為單位)的sin值。publicstaticdoublecos(double

a)返回角度a(以弧度為單位)的cos值。publicstaticdoubletan(double

a)返回角度a(以弧度為單位)的tan值。publicstaticdoubleasin(double

r)返回sin值為r的角度值。publicstaticdoubleacos(double

r)返回cos值為r的角度值。publicstaticdoubleatan(double

r)返回tan值為r的角度值。publicstaticdoublepow(double

a,double

b)返回a的b次方,結(jié)果為double型。publicstaticdoublesqrt(double

a)返回a的平方根,結(jié)果為double型。publicstaticdoubleexp(double

a)返回

ea。publicstaticdoublelog(double

a)返回a的自然對數(shù),即ln

a。publicstaticdoubleceil(double

a)返回不小于(即大于或等于)參數(shù)a的最小整數(shù),結(jié)果為double型。publicstaticdoublefloor(double

a)返回不大于(即小于或等于)參數(shù)a的最大整數(shù),結(jié)果為double型。publicstaticdoublerint(double

a)返回最接近參數(shù)a的整數(shù),結(jié)果為double型。publicstaticlonground(double

a)返回最接近參數(shù)a的long值。publicstaticint

round(float

a)返回最接近參數(shù)a的int值。publicstaticdoublerandom()返回一個大于等于0.0且小于1.0的隨機(jī)數(shù)。publicstatictypeabs(type

a)返回a的絕對值。type可以為int、long、float和double型。結(jié)果類型與參數(shù)的相同。publicstatictypemax(

typea,type

b)返回a和b的最大值。type可以為int、long、float和double型。結(jié)果類型與參數(shù)的相同。publicstatictypemin(type

a,type

b)返回a和b的最小值。type可以為int、long、float和double型。結(jié)果類型與參數(shù)的相同。Math類的常用方法示例classMathDemo{publicstaticvoidmain(String

args[]){ //常量

System.out.println("Math.E="+Math.E);

System.out.println("Math.PI="+Math.PI); //三角函數(shù)和反三角函數(shù)

System.out.println("sin(pi/2)="+Math.sin(Math.PI/2));System.out.println("asin(1)="+Math.asin(1)); //舍入

System.out.println("ceil(E)="+Math.ceil(Math.E));

System.out.println("floor(E)="+Math.floor(Math.E));

System.out.println("rint(PI)="+Math.rint(Math.PI));

System.out.println("round(PI)="+Math.round(Math.PI)); //求出1~10之間的一個隨機(jī)數(shù)

inti=(int)(Math.random()*10)+1;

System.out.println("i="+i); //其他常用方法

System.out.println("exp(1)="+Math.exp(1));

System.out.println("lnE="+Math.log(Math.E));

System.out.println("sqrt("+25+")="+Math.sqrt(25));

System.out.println("power("+2+","+8+")="+Math.pow(2,8));System.out.println("abs(-8.2)="+Math.abs(-8.2));

System.out.println("max("+2+","+8+")="+Math.max(2,8));

System.out.println("min("+2+","+8+")="+Math.min(2,8));}}異常處理“異?!保ㄓ纸小袄狻保┲傅氖浅绦蜻\行時出現(xiàn)的非正常情況。用任何一種計算機(jī)語言設(shè)計的程序在運行時都可能出現(xiàn)各種錯誤。常見的錯誤有:除數(shù)為0、文件不能打開、數(shù)組下標(biāo)越界、內(nèi)存不夠等。有些錯誤是可以預(yù)料的、有些錯誤則是不可預(yù)料的。對于上述運行中的錯誤,計算機(jī)系統(tǒng)中通常采取兩種處理辦法:

⑴由計算機(jī)系統(tǒng)本身直接檢測,遇錯則終止程序的運行。

⑵由程序員在程序設(shè)計過程中檢測、顯示提示信息并處理。Java中異常層次結(jié)構(gòu)類Throwable有兩個直接子類Error類及其子類描述的是java將字節(jié)碼裝入內(nèi)存的過程中和對字節(jié)碼進(jìn)行檢查的過程中遇到的問題、java的內(nèi)部錯誤、資源耗盡的情況Exception類對象是由Java程序處理或拋出的對象。它有各種不同的子類分別對應(yīng)于不同類型的異常。其子類可分成兩部分:運行時異常類和其余的異常類(一般叫非運行時異?;驒z查型異常)常見的運行時異常java.lang.ArithmeticException

java.lang.ArrayIndexOutOfBoundsExceptionjava.lang.StringIndexOutOfBoundsException

java.lang.ClassCastExceptionjava.lang.NegativeArraySizeException檢查型異常

Exception的子類中除了運行時異常以外的部分稱為檢查型異常。若在程序中使用的方法會拋出檢查型異常,則Java編譯器要求用戶在程序中必須要捕獲處理或聲明拋出這些異常,javac會對用戶程序是否處理了檢查型異常進(jìn)行檢查,若未處理則編譯不能通過常見的檢查型異常包java.lang中聲明的標(biāo)準(zhǔn)檢查型異常包java.io中聲明的標(biāo)準(zhǔn)檢查型異常包中聲明的標(biāo)準(zhǔn)檢查型異常包java.lang中聲明的標(biāo)準(zhǔn)檢查型異常ClassNotFoundException

CloneNotSupportedException

IllegalAccessExceptionInstantiationException

InterruptedException包java.io中聲明的標(biāo)準(zhǔn)檢查型異常java.io.EOFException

java.io.FileNotFoundException

java.io.InterruptedIOException

java.io.UTFDataFormatException包中聲明的標(biāo)準(zhǔn)檢查型異常.MalformedURLException.ProtocolException

.SocketException

.UnknownHostException.UnknownServiceException運行時異常的例子classExceptionDomo2{publicstaticvoidmain(String

args[]){

inta[]=newint[-1];}}檢查型異常的例子importjava.io.*;classExceptionDomo1{publicstaticvoidmain(String

args[]){ Strings=("Hello!");

FileWriterf0=newFileWriter("file1.txt"); f0.write(s); f0.close();}}異常的捕獲處理和拋出一般來說,有兩種對待異常的方式:

1、在方法內(nèi)部捕獲并處理該異常;

2、在本方法內(nèi)不處理該異常,而是將異常拋給方法的調(diào)用者,由調(diào)用者決定如何處理異常。捕獲并處理異常try{ //要監(jiān)視(可能會出現(xiàn)異常)的程序塊}catch(ExceptionType1e){ //對ExceptionType1對象的處理}catch(ExceptionType2e){ //對ExceptionType2對象的處理}finally{ //最終處理語句}匹配的catch子句Java運行時系統(tǒng)從上到下分別對每個catch子句處理的異常類型進(jìn)行檢測,直到找到與拋出的異常類型相匹配的catch子句為止。當(dāng)且僅當(dāng)出現(xiàn)下面三種情況時,catch子句中的參數(shù)才被認(rèn)為是與被拋出的異常情況相匹配的:①參數(shù)與被拋出的異常同屬于一個類;②參數(shù)是被拋出的異常的超類;③參數(shù)是一個接口,被拋出的異常類實現(xiàn)了這個接口。拋出異常利用try–catch–finally結(jié)構(gòu),可以對生成的異常進(jìn)行處理。但在有些情況下,如果在一個方法中生成了一個異常,但是這一方法并不確切地知道該如何對這一異常事件進(jìn)行處理,這時,該方法就可以聲明拋棄異常,使得異常對象從調(diào)用棧向后傳播,直到有合適的方法捕獲它為止。聲明方法可能拋出的異常具體做法是在方法頭中用throws子句列出可能拋出的異常類。例如,

publicintread()throwsIOException{

}在設(shè)計方法時應(yīng)當(dāng)在方法頭部列出可能拋出的檢查型異常用throw語句拋出異常拋出異常首先要生成異常對象,生成異常對象是通過throw語句實現(xiàn)的??梢話仐壍漠惓1仨毷荰hrowable或其子類的實例。在方法體內(nèi)遇到異常時用throw語句拋出異常對象。throw語句的格式為:

throw異常類的對象引用自定義異常用戶自己的異常類必須聲明為Throwable的子類。用戶的異常類繼承標(biāo)準(zhǔn)異常類中的任何一個均可。常見的做法是:用戶的異常類繼承Exception類。這樣Java就會將定義的異常類視為檢查型異常,使自定義異常起到應(yīng)有的作用。自定義的異常類,一般只要聲明兩個構(gòu)造方法,一個是不用參數(shù)的,另一個以字符串為參數(shù)。作為構(gòu)造方法參數(shù)的字符串應(yīng)當(dāng)反映異常的根源。異常處理的例子classMyExceptionextendsException{ //自定義異常類

MyException(){super();}

MyException(Strings){super(s);}}classTryAndCatchA{staticint

demoThrow(Strings)throwsMyException{ //在方法頭中聲明拋出異常

if(s.equals("welcome")){

System.out.println(s);}if(s.equals("bug")){thrownewMyException("abug");//在方法中拋出異常

}returns.length();}publicstaticvoidmain(String[]args){for(inti=0;i<args.length;i++){try{

demoThrow(args[i]);

System.out.println("");}

catch(MyExceptione){

System.err.println("demoThrow(\""+args[i]+"\")拋出了類型為"+e.getClass()+",異常內(nèi)容為"+e.getMessage()+"的異常.");}finally{System.out.println("cleanup...");}}}}輸入與輸出包文件類流總介文件的輸入輸出流隨機(jī)訪問文件類產(chǎn)生文本文件文件類java.io包中定義了一個File類來專門處理文件,并獲取文件的有關(guān)信息。Java語言中通過File類來建立與磁盤文件的聯(lián)系。File類的繼承樹是:

java.lang.Object | +--java.io.FileFile類三種構(gòu)造方法publicFile(String<pathname>)publicFile(String<path>,String<filename>)publicFile(File<directory>,String<filename>)File類的常用方法及其說明方

法說

明publicboolean

exists()判斷文件(或者目錄)是否存在。publicboolean

isDirectory()判斷該File對象是否是目錄。publicboolean

isFile()判斷該File對象是否是文件。publicboolean

canRead()判斷文件是否可讀。publicboolean

canWrite()判斷文件是否可寫。publicboolean

isHidden()測試當(dāng)前對象是否是隱藏文件(或目錄)。publicStringgetName()返回文件(或者目錄)的名字。publicStringgetPath()返回文件(或者目錄)的路徑。publicStringgetAbsolutePath()返回文件(或者目錄)的絕對路徑。publiclonglength()返回文件的長度(以字節(jié)為單位)。publiclonglastModified()獲得文件最后一次修改的時間。publicString[]list()返回目錄下的文件及子目錄名列表。publicboolean

createNewFile()throwsIOException自動創(chuàng)建一個新的空文件,要求該文件名未曾使用過。publicboolean

mkdir()創(chuàng)建當(dāng)前目錄的子目錄。publicboolean

delete()刪除當(dāng)前文件或目錄。publicboolean

renameTo(Filedest)為文件重新命名。publicboolean

setReadOnly()將文件(或者目錄)設(shè)置為只讀。File類的例子importjava.io.*;classTestFile{publicstaticvoidmain(String[]args)throwsException{if(args.length!=1){ System.err.println("請輸入一個參數(shù)!"); System.exit(-1);}Filefile=newFile(args[0].trim()); //利用命令行參數(shù)創(chuàng)建File類的對象

if(file.exists()){ //如果文件對象存在

if(file.isFile()){ //如果是文件

System.out.println("File

Name:"+file.getName());

System.out.println("Path:"+file.getPath());

System.out.println("Abs.Path:"+file.getAbsolutePath());

System.out.println("Writable:"+file.canWrite());

System.out.println("Readable:"+file.canRead());

System.out.println("Length:"+(file.length())+"B");} elseif(file.isDirectory()){//如果是目錄

String[]s=file.list();

System.out.println("Thereare"+s.length+"objects."); for(inti=0;i<s.length;i++)

System.out.println(s[i]); } }elsefile.mkdir(); //如果文件對象不存在

}}流總介流可以被理解為一條“導(dǎo)管”。這條“導(dǎo)管”有兩個端口:一端與數(shù)據(jù)源(當(dāng)輸入數(shù)據(jù)時)或數(shù)據(jù)宿(當(dāng)輸出數(shù)據(jù)時)相連,另一端與程序相連。在與數(shù)據(jù)源或數(shù)據(jù)宿相連的端口,“導(dǎo)管”在讀寫數(shù)據(jù)時能夠應(yīng)付數(shù)據(jù)源和數(shù)據(jù)宿的多樣性,消化掉因數(shù)據(jù)源和數(shù)據(jù)宿的多樣性帶來的數(shù)據(jù)讀/寫的全部復(fù)雜性;而在與程序相連的端口,“導(dǎo)管”提供了輸入/輸出的統(tǒng)一操作界面。輸入流的示意圖輸出流的示意圖流的讀/寫操作過程讀

(Reading)操

作功

能打開數(shù)據(jù)流創(chuàng)建流類對象,并連接到輸入源。讀數(shù)據(jù)從流中讀入數(shù)據(jù)序列。關(guān)閉數(shù)據(jù)流關(guān)閉流,釋放相關(guān)的系統(tǒng)資源。寫

(Writing)操

作功

能打開數(shù)據(jù)流創(chuàng)建流類對象,并連接到輸出目的地。寫數(shù)據(jù)從流中輸出數(shù)據(jù)序列。關(guān)閉數(shù)據(jù)流關(guān)閉流,釋放相關(guān)的系統(tǒng)資源。

Java流總圖節(jié)點流總表節(jié)點類型字符流字節(jié)流Memory(內(nèi)存)CharArrayReaderCharArrayWriterByteArrayInputStreamByteArrayOutputStreamStringReaderStringWriterStringBufferInputStreamPipe(管道)PipedReaderPipedWriterPipedInputStreamPipedOutputStreamFile(文件)FileReaderFileWriterFileInputStreamFileOutputStream文件的輸入輸出流節(jié)點流過濾流節(jié)點流文件輸入流FileInputStream

文件輸出流FileOutputStream

文件輸入流FileInputStream

FileInputStream類的繼承樹為:

java.lang.Object | +--java.io.InputStream | +--java.io.FileInputStreamFileInputStream類常用的兩種構(gòu)造方法publicFileInputStream(File

file)throwsFileNotFoundException

publicFileInputStream(String

name)throwsFileNotFoundExceptionFileInputStream有三種read方法publicintread()throwsIOException

publicint

read(byte[]

b)throwsIOException

publicint

read(byte[]

b,int

off,int

len)throwsIOException

FileInputStream類常用方法及其說明方法說明publicint

available()throwsIOException返回可讀入的字節(jié)數(shù)。publicvoidclose()throwsIOException關(guān)閉輸入流,并釋放任何與該流有關(guān)的資源。publicint

read()從輸入流中讀取一個字節(jié)的數(shù)據(jù)。publicint

read(byte[]b)將數(shù)據(jù)讀入到一個字節(jié)數(shù)組中。publicint

read(byte[]b,intoff,int

len)將指定個數(shù)的數(shù)據(jù)讀入到一個字節(jié)數(shù)組中。publiclongskip(long

n)throwsIOException跳過輸入流上的n個字節(jié)。文件輸出流FileOutputStream

FileOutputStream類的繼承樹為:

java.lang.Object | +--java.io.OutputStream | +--java.io.FileOutputStreamFileOutputStream類提供的構(gòu)造方法publicFileOutputStream(File

file)throwsIOExceptionpublicFileOutputStream(String

name)throwsFileNotFoundExceptionpublicFileOutputStream(String

name,boolean

append)throwsFileNotFoundExceptionFileOutputStream類有三種write方法publicvoidwrite(int

b)throwsIOExceptionpublicvoidwrite(byte[]

b)throwsIOExceptionpublicvoidwrite(byte[]

b,int

off,int

len)throwsIOExceptionFileOutputStream類的常用方法及其說明

方法說明publicvoidclose()throwsIOException關(guān)閉輸出流,并釋放任何與該流有關(guān)的資源。protectedvoidfinalize()throwsIOException當(dāng)收集到無用信息時,關(guān)閉該流。publicvoidwrite(intb)將指定的字節(jié)寫到文件輸出流中。publicvoidwrite(byte[]b)將一個字

溫馨提示

  • 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

提交評論