版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java資源及其利用
Java資源及其利用Java的標準庫結構語言包輸入與輸出包其他常用資源簡介Java的標準庫結構 Java有一個功能強大的資源庫,通過類和類的繼承機制將資源庫中的資源組織起來。Java資源庫中類的繼承層次和包的組織呈樹型結構,它將功能相關的類組織成包,使程式員可以很方便地使用資源庫。常用的包java.lang包:主要含有與語言相關的類java.io包:主要含有與輸入輸出相關的類java.util包:包括許多具有特定功能的類,有Arrays、Date、Calendar和Stack等java.swing包:提供了創建圖形用戶介面元素的類包:含有與網路操作相關的類java.applet包:含有控制Hotjava
流覽器的類
Java資源的層次結構語言包基本對象類系統類包裝類字串類和緩沖串類數學類異常處理基本對象類Object類是所有Java類的祖先,它處於Java開發環境的類層次樹的根部,所有其他類都是由Object類直接或間接派生出來的。如果一個類在定義的時候沒有包含extends關鍵字,編譯器會將其建為Object類的直接子類。Object類的常用方法方法說明protectedObjectclone()生成並返回當前對象的一個拷貝。publicboolean
equals(Objectobj)比較兩個對象是否相同,結果為一布爾值。publicfinalClassgetClass()返回一個對象在運行時所對應的類的表示,從而可以得到相關的類的資訊。protectedvoidfinalize()throwsThrowable定義回收當前對象時所需完成的清理工作。publicStringtoString()返回描述當前對象的字串資訊。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()方法返回的是該對象所對應的類名、一個@符號和 一個該對象的hash碼的無符號十六進制描述。用戶通過重載 toString()方法可以適當地顯示對象的資訊以進行調試。*/ }}系統類System類(SystemClass)是一個功能強大、極其有用的特殊的類,它提供了標準輸入、標準輸出和標準錯誤輸出;對系統資訊的存取;快速拷貝數組元素等等機制System類由publicfinal修飾,該類不能被實例化(即不能創建System類的對象)或派生子類。System類中包含了許多有用的類變數和類方法(由static修飾)System類的變數及其說明類變數說明publicstaticfinalPrintStream
err
標準錯誤輸出流。publicstaticfinalInputStream
in
標準輸入流。publicstaticfinalPrintStream
out
標準輸出流。System類常用的方法及其說明方法說明publicstaticvoidarraycopy(Object
src,int
src_position,Objectdst,int
dst_position,intlength)拷貝一個數組到另一個數組,它從源數組的指定位置開始,拷貝到目標數組的指定位置。publicstaticlongcurrentTimeMillis()返回從時間1970年1月1日00:00:00時起到當前所歷經的毫秒數(通常用來比較兩事件發生的前後時間差)。publicstaticvoidexit(int
status)退出Java當前運行的虛擬機。publicstaticvoidgc()運行垃圾回收器。publicstaticStringgetProperty(String
key)獲取由給定的key確定的系統屬性值。publicstaticvoidsetErr(PrintStreamerr)重定向標準錯誤輸出設備。publicstaticvoidsetIn(InputStreamin)重定向標準輸入設備。publicstaticvoidsetOut(PrintStreamout)重定向標準輸出設備。publicstaticString
setProperty(String
key,String
value)設置由key指定的系統屬性為指定的
value的值。System類的常用屬性列表系統屬性名稱(key的取值)含義"file.separator"檔分隔符號"java.class.path"Java類路徑"java.class.version"Java類的版本編號"java.home"Java的安裝目錄"java.version"Java的版本編號"os.arch"操作系統的體系結構""操作系統名"os.version"操作系統版本"line.separator"行分隔符號"path.separator"路徑分隔符號"user.dir"用戶當前目錄"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語言的純面向對象特性,java.lang包為基本數據類型提供了一些對象封裝。在Java中,數據類型包裝類(typewrapperclass)用於封裝基本數據類型的有關資訊和操作數據類型包裝類是由多個類組成的一個集合,每種基本數據類型均存在相應的對象封裝類包裝類及其對應的基本數據類型基本數據類型數據類型包裝類byteByteshortShortintIntegerlongLongfloatFloatdoubleDoublecharCharacterbooleanBoolean包裝類的一些共同的方法方法說明publicStringtoString()返回數據類型包裝類中所保存數據的字串表示形式。publictypetypeValue()返回數據類型包裝類的相關基本類型值。publicboolean
equals(Object
obj)由於數據類型包裝類不能直接用等號來進行比較,因此需要用到這個方法。數據類型包裝類的例publicclassExam{publicstaticvoidmain(String
args[]){ //構造方法
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它的構造方法很簡單:
publicCharacter(char
value)Character類的一些常用方法及其說明方法說明publicstaticboolean
isLowerCase(char
ch)如果ch是小寫,則返回true,否則返回false。publicstaticboolean
isUpperCase(char
ch)如果ch是大寫,則返回true,否則返回false。publicstaticboolean
isDigit(char
ch)如果ch是數字,則返回true,否則返回false。publicstaticboolean
isLetter(char
ch)如果ch是字母,則返回true,否則返回false。publicstaticchartoLowerCase(char
ch)返回給定字母ch對應的小寫形式。publicstaticchartoUpperCase(char
ch)返回給定字母ch對應的大寫形式。publicstaticint
digit(char
ch,int
radix)根據radix指明的基數,返回ch所對應的數值。Character類的應用示例publicclassCharacterExam{publicstaticvoidmain(String
args[]){ //構造方法
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);//十六進制中,c代表12。
System.out.println("b="+b);
System.out.println("x="+x);}}Integer類Integer類的繼承樹是:
java.lang.Object | +--java.lang.Number | +--java.lang.IntegerInteger類有兩種構造方法:
⑴publicInteger(int
value) ⑵publicInteger(String
s)throwsNumberFormatExceptionInteger類的常用類變數及其說明類變數說明publicstaticfinalint
MAX_VALUE規定了int類型的最大值。publicstaticfinalint
MIN_VALUE規定了int類型的最小值。Integer類的常用方法及其說明方法說明publicstaticint
parseInt(String
s)throwsNumberFormatException將字串s轉換為帶符號十進位整數,結果為int量。publicstaticIntegervalueOf(String
s)throwsNumberFormatException將字串s轉換為一個Integer對象,該對象對應的int數值與字串表示的數值一致。Integer類的應用示例publicclassIntegerExam{publicstaticvoidmain(String
args[]){ //構造方法
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);}}字串與各種數據類型之間的轉化publicclassTransformExam{publicstaticvoidmain(String
args[]){ //字串與整型之間的轉化
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); //字串與浮點數之間的轉化
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
來處理字串,前者用來處理創建之後不會再做修改和變動的字串,後者則用來處理創建之後允許再做修改和變動的字串。這兩個類共同的特點是都不能再派生子類String類String類描述了字串,所有Java程式中的字串字面量,是作為該類的實例來實現的String類的繼承樹是:
java.lang.Object | +--java.lang.StringString類提供的構造方法publicString();publicString(charchars[]);publicString(charchars[],int
startIndex,int
numChars);publicString(String
value)publicString(StringBuffer
buffer)
String類的常用方法及其說明方法說明publicint
length()返回當前字串的長度。publicStringtoLowerCase()將當前字串中的所有大寫字母轉換為小寫。publicStringtoUpperCase()將當前字串中的所有小寫字母轉換為大寫。publicStringtrim()去掉當前字串中的前導空格和末尾的空格。publicStringsubstring(int
beginIndex)返回當前字串中從beginIndex位置開始到末尾的子串。publicStringsubstring(int
beginIndex,int
endIndex)返回當前字串的子串,該子串由beginIndex(包含在內)和endIndex(不包含在內)之間的字元組成。publicStringreplace(char
oldChar,char
newChar)將當前字串中的所有出現的oldChar用newChar替換,生成一個新字串。publiccharcharAt(int
index)返回指定索引位置上的字元。索引範圍在0與length()-1之間。publicvoidgetChars(int
srcBegin,int
srcEnd,char
dst[],int
dstBegin)將當前字串的部分字元拷貝到目標字元數組dst中。部分字元是指此字串中從srcBegin(包含在內)到srcEnd(不包含在內)之間的字元。拷貝到目標字元數組中的字元從dstBegin位置開始存放。publicboolean
equals(ObjectanObject)將當前字串與指定對象比較,如果兩者具有相同的長度和字元,則返回true,否則返回falsepublicboolean
equalsIgnoreCase(StringanotherString)將當前字串與指定對象比較,忽略大小寫的區別。如果兩者相等,則返回true,否則返回false。publicint
compareTo(StringanotherString)將當前字串與anotherString進行比較,返回一個大於、等於或小於0的整數。此整數值決定於此字串是大於、等於還是小於anotherString字串。publicchar[]toCharArray()將當前字串轉換成一個字元數組。publicbyte[]getBytes()將當前字串轉換成一個位元組數組。publicboolean
startsWith(Stringprefix)判斷當前字串是否由指定的首碼prefix開始。publicboolean
endsWith(Stringsuffix)判斷當前字串是否以指定的尾碼suffix結束。publicint
indexOf(int
ch)返回當前字串中第一次出現指定字元ch的位置,如果未找到則返回-1。publicint
lastIndexOf(int
ch)返回當前字串中最後一次出現指定字元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("提取字元的結果:");charc=s.charAt(3);
System.out.println(c);charbuf[]=newchar[4];s.getChars(1,5,buf,0);
System.out.println(buf); //字串比較
System.out.println("字串比較的結果:");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("字串檢索的結果:");
System.out.println("字元e第一次出現的位置為:"+s4.indexOf('e'));
System.out.println("字元e最後一次出現的位置為:"+s4.lastIndexOf('e'));}}StringBuffer類StringBuffer類用於處理可變的字串,StringBuffer對象的內容是可以擴充和修改的。當生成一個StringBuffer對象後,也可以通過調用toString()方法將其轉換為String對象。StringBuffer類的繼承樹是:
java.lang.Object | +--java.lang.StringBufferStringBuffer類提供了三個構造方法publicStringBuffer()publicStringBuffer(int
length)publicStringBuffer(Stringstr)StringBuffer類的常用方法及其說明方法說明publicStringBuffer
append(type
typeObjectName)將指定的參數對象轉化成String,然後追加到當前StringBuffer對象的末尾。publicStringBuffer
insert(int
offset,type
typeObjectName)用來在當前StringBuffer對象的指定位置插入由參數對象轉化而得的String內容。PublicStringBuffer
delete(int
start,int
end)刪除當前StringBuffer對象的子串,該子串中字元的位置由start開始,到end–1結束。publicStringBuffer
replace(int
start,int
end,String
str)將由start開始,到end–1結束的位置處的字元序列用str來替代。publicStringBuffer
reverse()倒置當前StringBuffer對象中的字元序列。publicvoidsetCharAt(int
index,char
ch)用指定字元ch替換由index指定的位置處的字元。publicStringtoString()將一個可變字串轉化為一個不變字串。publicint
length()返回當前StringBuffer對象的長度(字元數目)。publicint
capacity()返回當前StringBuffer對象的整個容量。StringBuffer類的常用方法示例classStringBufferDemo{publicstaticvoidmain(String
args[]){ //構造方法
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()); //追加和插入各種類型的數據
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)); }}數學類java.lang.Math類是標準的數學類,提供了兩個數學常量和若干實現基本的數學操作的方法。與System類相似,java.lang.Math類也不能被子類化或實例化,它的所有方法和變數也都是靜態的。Math類的繼承樹是:
java.lang.Object | +--java.lang.MathMath類的類變數及其說明類變數說明publicstaticfinaldoubleE最接近自然對數的底(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次方,結果為double型。publicstaticdoublesqrt(double
a)返回a的平方根,結果為double型。publicstaticdoubleexp(double
a)返回ea。publicstaticdoublelog(double
a)返回a的自然對數,即ln
a。publicstaticdoubleceil(double
a)返回不小於(即大於或等於)參數a的最小整數,結果為double型。publicstaticdoublefloor(double
a)返回不大於(即小於或等於)參數a的最大整數,結果為double型。publicstaticdoublerint(double
a)返回最接近參數a的整數,結果為double型。publicstaticlonground(double
a)返回最接近參數a的long值。publicstaticint
round(float
a)返回最接近參數a的int值。publicstaticdoublerandom()返回一個大於等於0.0且小於1.0的亂數。publicstatictypeabs(type
a)返回a的絕對值。type可以為int、long、float和double型。結果類型與參數的相同。publicstatictypemax(
typea,type
b)返回a和b的最大值。type可以為int、long、float和double型。結果類型與參數的相同。publicstatictypemin(type
a,type
b)返回a和b的最小值。type可以為int、long、float和double型。結果類型與參數的相同。Math類的常用方法示例classMathDemo{publicstaticvoidmain(String
args[]){ //常量
System.out.println("Math.E="+Math.E);
System.out.println("Math.PI="+Math.PI); //三角函數和反三角函數
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之間的一個亂數
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));}}異常處理“異常”(又叫“例外”)指的是程式運行時出現的非正常情況。用任何一種電腦語言設計的程式在運行時都可能出現各種錯誤。常見的錯誤有:除數為0、檔不能打開、數組下標越界、記憶體不夠等。有些錯誤是可以預料的、有些錯誤則是不可預料的。對於上述運行中的錯誤,電腦系統中通常採取兩種處理辦法:
⑴由電腦系統本身直接檢測,遇錯則終止程式的運行。
⑵由程式員在程式設計過程中檢測、顯示提示資訊並處理。Java中異常層次結構類Throwable有兩個直接子類Error類及其子類描述的是java將位元組碼裝入記憶體的過程中和對位元組碼進行檢查的過程中遇到的問題、java的內部錯誤、資源耗盡的情況Exception類對象是由Java程式處理或拋出的對象。它有各種不同的子類分別對應於不同類型的異常。其子類可分成兩部分:運行時異常類和其餘的異常類(一般叫非運行時異常或檢查型異常)常見的運行時異常java.lang.ArithmeticException
java.lang.ArrayIndexOutOfBoundsExceptionjava.lang.StringIndexOutOfBoundsException
java.lang.ClassCastExceptionjava.lang.NegativeArraySizeException檢查型異常
Exception的子類中除了運行時異常以外的部分稱為檢查型異常。若在程式中使用的方法會拋出檢查型異常,則Java編譯器要求用戶在程式中必須要捕獲處理或聲明拋出這些異常,javac會對用戶程式是否處理了檢查型異常進行檢查,若未處理則編譯不能通過常見的檢查型異常包java.lang中聲明的標準檢查型異常包java.io中聲明的標準檢查型異常包中聲明的標準檢查型異常包java.lang中聲明的標準檢查型異常ClassNotFoundException
CloneNotSupportedException
IllegalAccessExceptionInstantiationException
InterruptedException包java.io中聲明的標準檢查型異常java.io.EOFException
java.io.FileNotFoundException
java.io.InterruptedIOException
java.io.UTFDataFormatException包中聲明的標準檢查型異常.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、在方法內部捕獲並處理該異常;
2、在本方法內不處理該異常,而是將異常拋給方法的調用者,由調用者決定如何處理異常。捕獲並處理異常try{ //要監視(可能會出現異常)的程式塊}catch(ExceptionType1e){ //對ExceptionType1對象的處理}catch(ExceptionType2e){ //對ExceptionType2對象的處理}finally{ //最終處理語句}匹配的catch子句Java運行時系統從上到下分別對每個catch子句處理的異常類型進行檢測,直到找到與拋出的異常類型相匹配的catch子句為止。當且僅當出現下麵三種情況時,catch子句中的參數才被認為是與被拋出的異常情況相匹配的:①參數與被拋出的異常同屬於一個類;②參數是被拋出的異常的超類;③參數是一個介面,被拋出的異常類實現了這個介面。拋出異常利用try–catch–finally結構,可以對生成的異常進行處理。但在有些情況下,如果在一個方法中生成了一個異常,但是這一方法並不確切地知道該如何對這一異常事件進行處理,這時,該方法就可以聲明拋棄異常,使得異常對象從調用棧向後傳播,直到有合適的方法捕獲它為止。聲明方法可能拋出的異常具體做法是在方法頭中用throws子句列出可能拋出的異常類。例如,
publicintread()throwsIOException{
}在設計方法時應當在方法頭部列出可能拋出的檢查型異常用throw語句拋出異常拋出異常首先要生成異常對象,生成異常對象是通過throw語句實現的。可以拋棄的異常必須是Throwable或其子類的實例。在方法體內遇到異常時用throw語句拋出異常對象。throw語句的格式為:
throw異常類的對象引用自定義異常用戶自己的異常類必須聲明為Throwable的子類。用戶的異常類繼承標準異常類中的任何一個均可。常見的做法是:用戶的異常類繼承Exception類。這樣Java就會將定義的異常類視為檢查型異常,使自定義異常起到應有的作用。自定義的異常類,一般只要聲明兩個構造方法,一個是不用參數的,另一個以字串為參數。作為構造方法參數的字串應當反映異常的根源。異常處理的例子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()+",異常內容為"+e.getMessage()+"的異常.");}finally{System.out.println("cleanup...");}}}}輸入與輸出包檔類流總介檔的輸入輸出流隨機訪問檔類產生文本檔檔類java.io包中定義了一個File類來專門處理檔,並獲取檔的有關資訊。Java語言中通過File類來建立與磁片檔的聯繫。File類的繼承樹是:
java.lang.Object | +--java.io.FileFile類三種構造方法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()測試當前對象是否是隱藏檔(或目錄)。publicStringgetName()返回檔(或者目錄)的名字。publicStringgetPath()返回檔(或者目錄)的路徑。publicStringgetAbsolutePath()返回檔(或者目錄)的絕對路徑。publiclonglength()返回檔的長度(以位元組為單位)。publiclonglastModified()獲得檔最後一次修改的時間。publicString[]list()返回目錄下的檔及子目錄名列表。publicboolean
createNewFile()throwsIOException自動創建一個新的空文件,要求該檔案名未曾使用過。publicboolean
mkdir()創建當前目錄的子目錄。publicboolean
delete()刪除當前檔或目錄。publicboolean
renameTo(Filedest)為檔重新命名。publicboolean
setReadOnly()將檔(或者目錄)設置為只讀。File類的例子importjava.io.*;classTestFile{publicstaticvoidmain(String[]args)throwsException{if(args.length!=1){ System.err.println("請輸入一個參數!"); System.exit(-1);}Filefile=newFile(args[0].trim()); //利用命令行參數創建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(); //如果檔對象不存在
}}流總介流可以被理解為一條“導管”。這條“導管”有兩個端口:一端與數據源(當輸入數據時)或數據宿(當輸出數據時)相連,另一端與程式相連。在與數據源或數據宿相連的端口,“導管”在讀寫數據時能夠應付數據源和數據宿的多樣性,消化掉因數據源和數據宿的多樣性帶來的數據讀/寫的全部複雜性;而在與程式相連的端口,“導管”提供了輸入/輸出的統一操作介面。輸入流的示意圖輸出流的示意圖流的讀/寫操作過程讀(Reading)操作功能打開數據流創建流類對象,並連接到輸入源。讀數據從流中讀入數據序列。關閉數據流關閉流,釋放相關的系統資源。寫(Writing)操作功能打開數據流創建流類對象,並連接到輸出目的地。寫數據從流中輸出數據序列。關閉數據流關閉流,釋放相關的系統資源。
Java流總圖節點流總表節點類型字元流位元組流Memory(記憶體)CharArrayReaderCharArrayWriterByteArrayInputStreamByteArrayOutputStreamStringReaderStringWriterStringBufferInputStreamPipe(管道)PipedReaderPipedWriterPipedInputStreamPipedOutputStreamFile(檔)FileReaderFileWriterFileInputStreamFileOutputStream檔的輸入輸出流節點流過濾流節點流檔輸入流FileInputStream
檔輸出流FileOutputStream
檔輸入流FileInputStream
FileInputStream類的繼承樹為:
java.lang.Object | +--java.io.InputStream | +--java.io.FileInputStreamFileInputStream類常用的兩種構造方法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返回可讀入的位元組數。publicvoidclose()throwsIOException關閉輸入流,並釋放任何與該流有關的資源。publicint
read()從輸入流中讀取一個位元組的數據。publicint
read(byte[]b)將數據讀入到一個位元組數組中。publicint
read(byte[]b,intoff,int
len)將指定個數的數據讀入到一個位元組數組中。publiclongskip(long
n)throwsIOException跳過輸入流上的n個位元組。檔輸出流FileOutputStream
FileOutputStream類的繼承樹為:
java.lang.Object | +--java.io.OutputStream | +--java.io.FileOutputStreamFileOutputStream類提供的構造方法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關閉輸出流,並釋放任何與該流有關的資源。protectedvoidfinalize()throwsIOException當收集到無用資訊時,關閉該流。publicvoidwrite(intb)將指定的位元組寫到檔輸出流中。publicvoidwrite(byte[]b)將一個位元組數組中的數據寫到輸出流中。publicvoidwrite(byte[]b,int
off,int
len)將一個位元組數組的部分數據寫
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度青海省公共营养师之四级营养师提升训练试卷B卷附答案
- 2025年度苗木运输与生态保护补偿合同范本4篇
- 二零二五年度农村电商物流服务合同范本2篇
- 2025年度钢材国际贸易结算与支付合同2篇
- 2025版高端产品明星代言推广合同3篇
- 二零二五年度新型城镇化建设项目暖通系统施工合同4篇
- 二零二五年度电商移动端应用推广服务合同4篇
- 二零二五年度泥水工施工现场环境保护与治理合同4篇
- 2025年宠物领养中心短途运输服务合同样本4篇
- 2025年度床上用品行业市场准入与监管合同4篇
- 不同茶叶的冲泡方法
- 光伏发电并网申办具体流程
- 建筑劳务专业分包合同范本(2025年)
- 企业融资报告特斯拉成功案例分享
- 五年(2020-2024)高考地理真题分类汇编(全国版)专题12区域发展解析版
- 《阻燃材料与技术》课件 第8讲 阻燃木质材料
- 低空经济的社会接受度与伦理问题分析
- GB/T 4732.1-2024压力容器分析设计第1部分:通用要求
- 河北省保定市竞秀区2023-2024学年七年级下学期期末生物学试题(解析版)
- 2024年江苏省劳动合同条例
- 六编元代文学
评论
0/150
提交评论