Java Api詳細(xì)說明附程序解釋_第1頁
Java Api詳細(xì)說明附程序解釋_第2頁
Java Api詳細(xì)說明附程序解釋_第3頁
Java Api詳細(xì)說明附程序解釋_第4頁
Java Api詳細(xì)說明附程序解釋_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、Java語言的強大功能主要體現(xiàn)在Java語言完備豐富、功能強大的Java API上。本章介紹Java API的基本結(jié)構(gòu)以及語言包和實用包中的常用類。 1、Java API 綜述 Java語言的內(nèi)核非常小,Java語言的強大功能主要體現(xiàn)在Java語言完備豐富、功能強大的Java API上。Java API(Java Application Programming Interface,Java應(yīng)用程序接口),是Java語言提供的組織成包結(jié)構(gòu)的許多類和接口的集合。Java API為用戶編寫應(yīng)用程序提供了極大的便利。Java API包含在JDK中,因此用戶只要按照1.3節(jié)介紹的方法安裝了JDK運行環(huán)境

2、就可以使用了。Java API按照內(nèi)容分別組織和存放在不同的包中,Java API中的包及其主要功能按字母順序說明如下:java.accessibility 接口組件和助手技術(shù)的類和接口java.applet Applet所需的類和接口java.awt 圖形用戶界面所需的類和接口java.beans Java bean所需的類和接口java.io 系統(tǒng)輸入/輸出所需的類和接口java.lang Java語言編程的基礎(chǔ)類和接口java.math 支持任意精度整數(shù)和任意精度小數(shù)的類和接口java.naming 訪問命名服務(wù)的類和接口 網(wǎng)絡(luò)應(yīng)用的類和接口java.rmi 遠(yuǎn)程調(diào)用(RMI)的類和接口

3、java.security 用于安全框架的類和接口java.sql 訪問和處理數(shù)據(jù)源中數(shù)據(jù)的類和接口java.text 支持按與語言無關(guān)方式處理文本、數(shù)據(jù)、數(shù)字和消息的類和接口java.util 集合框架、事件模型、日期和時間機制、國際化等的類和接口javax.rmi 支持RMI-IIOP的類和接口javax.serverlet 支持serverlet編程的類和接口javax.sound 支持音頻設(shè)備數(shù)字接口(MIDI)的類和接口javax.swing 擴充和增強基本圖形用戶界面功能的類和接口javax.transaction 包含有幾個關(guān)于事務(wù)上下文異常的類 org.omg.CORBA 支持

4、OMG CORBA API到Java語言映射的類和接口 上述大部分的包都又按內(nèi)容組織成子包形式,關(guān)于各包的子包這里就不再贅述。Java語言在不斷發(fā)展,這表現(xiàn)在JDK運行環(huán)境的版本在不斷提高。因此,讀者學(xué)習(xí)本書時,可能Java API中又包含了新的包,或某些包中又增加了新的子包。打開JDK的幫助文檔,可以看到Java API的詳細(xì)說明文檔。Java API包含的內(nèi)容很多,本章主要討論其中兩個最基本的包中的主要類:(1)語言包(java.lang)。主要討論的類有:Object類、Class類、Runtime類、Float類、String類和Math類。(2)實用包(java.util)。主要討論

5、的類和接口有:Arrays類、Vector 類、Data 類和Enumeration接口。2、語言包(java.lang)簡介 java.lang包中包含了Java程序設(shè)計語言最基礎(chǔ)的類。本節(jié)討論的java.lang包中的類有Object類、System類、Class類、Runtime類、String類、Math類和Float類。java.lang包是Java語言編程使用最頻繁的包。為了簡化編程,系統(tǒng)固定地默認(rèn)導(dǎo)入了java.lang包,所以使用java.lang包中的類時可以不用import語句導(dǎo)入。1、Object類 Object類是Java中所有類的根,所有其他的類都是由Object類派

6、生出來的,因此,根據(jù)繼承的特點,在Object類中定義的成員變量和方法,在其他類中都可以使用。Object類常用方法有:equals(Object obj) 比較兩個對象是否相等getClass() 獲取對象的運行時類toString() 把對象轉(zhuǎn)換為字符串Object類中還有一組關(guān)于線程同步的方法:wait()方法和notify()方法。equals(Object obj)方法與Java運算符"="的含義相同,但用法不同。當(dāng)兩個值比較、對象或變量與值比較、兩個變量比較時,使用運算符"=";當(dāng)比較兩個對象時,使用equals()方法。該方法調(diào)用返回tru

7、e時表示兩個對象相等(或稱相同),返回false時表示兩個對象不相等?!纠?.1】equals()方法應(yīng)用舉例。public class EqualsTestpublic static void main(String args)char ch='A'if (ch='A') | (ch='a') /變量與值比較System.out.println("true");String str1="abc",str2=null;if (str1!=null) /對象與值比較System.out.println(str

8、1.equals(str2); /兩個對象比較程序運行顯示結(jié)果如下:truefalse 2、System類 System類提供了許多獲取或重新設(shè)置系統(tǒng)資源的靜態(tài)方法。System類的常用方法有:static Properties getProperty() 獲取系統(tǒng)屬性static Properties getProperty(String key) 獲取由key指定的系統(tǒng)屬性static void setProperty(Properties props) 設(shè)置由props指定的系統(tǒng)屬性static void load(String fileName) 加載本地文件系統(tǒng)中由文件名fileNa

9、me指定的動態(tài)庫static void exit(int status) 中斷當(dāng)前運行的Java虛擬機,status為狀態(tài)碼,非0的狀態(tài)碼表示不正常中斷其中,獲取系統(tǒng)屬性方法的返回值類型為Properties,Properties是java語言包中定義的一個類。該類定義了系統(tǒng)屬性集合,每個屬性用字符串表示,其常用的幾個屬性值以及含義如下:java.version java運行時環(huán)境版本java.vm.version java虛擬機實現(xiàn)的版本java.class.path java類的路徑os.version 操作系統(tǒng)的版本 用戶名user.dir 用戶路徑user.home

10、用戶HOME路徑【例5.2】用System類獲得當(dāng)前系統(tǒng)屬性示例。public class SystemTestpublic static void main(String args)String str;/java運行時環(huán)境版本str = System.getProperty("java.version"); System.out.println("java.version: " + str); /java虛擬機實現(xiàn)的版本str = System.getProperty("java.vm.version"); System.out.

11、println("java.vm.version: " + str);/java類的路徑str = System.getProperty("java.class.path"); System.out.println("java.class.path: " + str);/操作系統(tǒng)的版本str = System.getProperty("os.version"); System.out.println("os.version: " + str);/用戶名str = System.getProper

12、ty(""); System.out.println(": " + str);/用戶路徑str = System.getProperty("user.dir"); System.out.println("user.dir: " + str);/用戶HOME路徑str = System.getProperty("user.home"); System.out.println("user.home: " + str);程序的運行結(jié)果為:java

13、.version: 1.4.1_02java.vm.version: 1.4.1_02-b06java.class.path: D:JBuilder9jdk1.4lib;D:;.;os.version: 5.0: administratoruser.dir: E:Javachapt5user.home: C:Documents and SettingsAdministrator.ZXB 另外,System類中定義了三個和輸入輸出流有關(guān)的靜態(tài)成員變量in、out和err。3、Class類Class類的實例代表一個正在運行的Java應(yīng)用程序的類或接口。Java的基本數(shù)據(jù)類型(bo

14、olean,byte,char,shart,int,long,float,double)以及數(shù)組和關(guān)鍵字void都是由Class對象來表達(dá)。Class類沒有公共的構(gòu)造方法,Class對象由Java虛擬機自動構(gòu)造。Class類的常用方法有:String static getName() 返回對象的類名class static forName(String ClassName) 使用ClassName指定的、與類或接口相聯(lián)系的class對象class static forName(String name,boolean initialize,ClassLoader loader) 使用loader

15、指定的類裝載器Class類的forName()方法可用于安裝驅(qū)動程序。 例如,安裝JDBC-ODBC驅(qū)動程序,可以使用下面語句:Class.forName("sun.jdbc.odbc.JdbcOdcDriver");要安裝Oracle Jdbc驅(qū)動程序,可以使用下面語句:Class.forName("oracle.jdbc.driver.OracleDriver");4、Runtime類 每一個Java應(yīng)用程序都有一個Runtime類的實例,從而允許應(yīng)用程序與其運行的環(huán)境進(jìn)行交互??衫肦untime類直接訪問運行時環(huán)境資源。Runtime類常用方法有

16、:static Runtime getRuntime() 返回與當(dāng)前應(yīng)用程序相聯(lián)系的運行時環(huán)境void exit(int status) 中斷當(dāng)前運行的Java虛擬機,status為狀態(tài)碼,非0的狀態(tài)碼表示不正常中斷native void traceInstructions(Boolean on) 設(shè)置對指令的追蹤,如果參數(shù)on為 true,則Java虛擬機對于其上執(zhí)行的每一條指令都發(fā)出調(diào)試信息native void traceMethodCalls(Boolean on) 設(shè)置對調(diào)用方法的追蹤,如果參數(shù)on為 true,則支持指令的追蹤totalMemory() 返回系統(tǒng)的內(nèi)存總數(shù)freeM

17、emory() 返回系統(tǒng)當(dāng)前內(nèi)存的剩余空間總數(shù)gc () 運行垃圾回收程序【例5.3】用Runtime類獲得當(dāng)前系統(tǒng)運行狀況示例。public class RuntimeTestpublic static void main(String args)Runtime rtime = Runtime.getRuntime();long totalMemory = rtime.totalMemory()/1024;long freeMemory = rtime.freeMemory()/1024; System.out.println("totalMemory: " + tota

18、lMemory + "k"); System.out.println("freeMemory: " + freeMemory+ "k"); 程序運行結(jié)果為:totalMemory: 1984kfreeMemory: 1734k 5、Float類 為了方便學(xué)習(xí)過C語言的人員學(xué)習(xí)Java語言,Java語言也像C語言一樣,有數(shù)據(jù)類型的概念。但數(shù)據(jù)類型與類不等同。Java是一種純面向?qū)ο蟪绦蛟O(shè)計語言,為了達(dá)到這個目標(biāo),語言包中提供了8個稱為數(shù)據(jù)類型包裝類的類,專門完成把Java語言的8個基本數(shù)據(jù)類型包裝為相應(yīng)的類。Java語言中的8種基本數(shù)據(jù)

19、類型是:byte、short、int、long、float、double、char、boolean,對應(yīng)的8個數(shù)據(jù)類型包裝類是:Byte、Short、Integer、Long、Float、Double、Character、Boolean。這里僅介紹Float類,其余的相似。Float類的幾個構(gòu)造方法如下:Float (double value) 以double類型的參數(shù)value創(chuàng)建一個對象Float (float value) 以float類型的參數(shù)value創(chuàng)建一個對象Float (String s) 以String類型的參數(shù)s創(chuàng)建一個對象Float類的幾個方法如下:compareTo(F

20、loat anotherF) 比較兩個對象的大小,大于返回1,相等返回0,小于返回-1 floatValue() 返回對象的float數(shù)據(jù)類型的數(shù)值doubleValue() 返回對象的double數(shù)據(jù)類型的數(shù)值intValue() 返回對象的int數(shù)據(jù)類型的數(shù)值,小數(shù)部分丟掉6、String類 我們說過,定義字符串變量所使用的String不是一個基本數(shù)據(jù)類型,而是Java API中提供的類。String類的構(gòu)造方法和常用方法有:String() 構(gòu)造方法,初始化創(chuàng)建一個字符為空的String對象String(byte bytes) 構(gòu)造方法,初始化創(chuàng)建一個string對象,其值由指定byte

21、s轉(zhuǎn)換而來compareTo(String anotherString) 比較字符串,返回兩者之間的差值length() 獲取字符串的長度substring(int beginIndex) 返回當(dāng)前字符串的由beginIndex開始到結(jié)尾的子串substring(int beginIndex,int endIndex) 返回當(dāng)前字符串的由beginIndex開始到endIndex結(jié)尾的子串toLowerCase() 返回小寫字符串,即返回的對象中所有的字符均為小寫字符toUpperCase() 返回大寫字符串,即返回的對象中所有的字符均為大寫字符【例5.4】String類應(yīng)用舉例。要求:在程序

22、中進(jìn)行字符串的連接(+)、取子串等操作。public class StringTestpublic static void main(String args) System.out.println("abc");String cde = "cde"System.out.println("abc" + cde);String c = "abc"c = c.substring(2,3);System.out.println("c = " + c);String d = cde.substring(1

23、, 2);System.out.println("d = " + d);程序運行顯示結(jié)果如下:abcabccdec = cd = d 7、Math類Math類包含了一組基本的數(shù)學(xué)運算的方法和常數(shù)。如求絕對值的abs()方法,計算三角函數(shù)的sin()方法和cos()方法,求兩個數(shù)中的較小值和較大值的min()方法和max()方法,求隨機數(shù)的random()方法等。Math類中的所有方法都定義為靜態(tài)的。另外,Math類還把E和PI定義為類的靜態(tài)成員變量,其中,E和PI代表數(shù)學(xué)上的相應(yīng)常數(shù)。Math類是最終類(final),所以不能從Math類中派生其他的新類。Math類的幾個常

24、用方法如下:double abs(double a) 求a的絕對值float abs(float a) 求a的絕對值int abs(int a) 求a的絕對值long abs(long a) 求a的絕對值double random() 返回一個(0.0,1.0)區(qū)間的隨機數(shù)abs()方法有4個,包括了4種基本的數(shù)值類型(double,float,int,long),其他方法(如sin()方法 等)類同,為節(jié)省篇幅,這里不再列出。random()方法是非常有用的方法。把random()的返回值乘上一個整數(shù),可以得到任意區(qū)間的、double類型的隨機數(shù);把random()的返回值乘上一個整數(shù)再轉(zhuǎn)換

25、成int類型,可以得到任意區(qū)間的、int類型的隨機數(shù)。 【例5.5】求10個數(shù)中的最小數(shù)。要求:用Math類的random()方法產(chǎn)生隨機數(shù)來給數(shù)組賦值。程序設(shè)計如下:public class Exam5_6public static void main(String args)final int SIZE = 10; /常量int i, min;int a = new intSIZE; for(i = 0; i < a.length; i+)ai = (int)(Math.random() * 100); /產(chǎn)生隨機數(shù)并賦值System.out.print("數(shù)組元素為:&q

26、uot;); /輸出一維數(shù)組for(i = 0; i < a.length; i+)System.out.print(" " + ai); min = a0; for(i = 1; i < a.length; i+)if(ai < min) min = ai; /尋找最小數(shù) System.out.println("n最小數(shù)為:" + min);程序運行結(jié)果如下:數(shù)組元素為: 64 99 44 94 28 82 39 19 6 41最小數(shù)為:6 3、實用包(java.util)簡介 java.util包主要包含集合框架、事件模型、日期和時

27、間機制、國際化等的類和接口。本節(jié)介紹的java.util包的類和接口有Arrays類、Vector類、Data類和Enumeration接口。1、 Arrays類 Arrays類中包含有數(shù)組操作的一些常用方法(如排序和查找),這可以大大簡化程序設(shè)計人員的設(shè)計過程。Arrays類的常用方法有:static void sort(byte a) 把byte類型的數(shù)組a中的元素按升序排序static void sort(byte a,int fromIndex,int toIndex) 把byte類型的數(shù)組a中的、從fromIndex到toIndex的元素按升序排序static void sort(i

28、nt a) 把int類型的數(shù)組a中的元素按升序排序static void sort(int a,int fromIndex,int toIndex) 把int類型的數(shù)組a中的、從fromIndex到toIndex的元素按升序排序static void sort(double a) 把double類型的數(shù)組a中的元素按升序排序static void sort(double a,int fromIndex,int toIndex) 把double類型的數(shù)組a中的、從fromIndex到toIndex的元素按升序排序static int binarySearch(byte a,byte key) 在

29、byte類型的數(shù)組a 中、使用折半查找算法查找指定元素key是否存在,若存在返回該元素的數(shù)組下標(biāo);若不存在返回-1static int binarySearch(int a,int key) 在int類型的數(shù)組a 中、使用折半查找算法查找指定元素key是否存在,若存在返回該元素的數(shù)組下標(biāo);若不存在返回-1static int binarySearch(double a,double key) 在double類型的數(shù)組a 中、使用折半查找算法查找指定元素key是否存在,若存在返回該元素的數(shù)組下標(biāo);若不存在返回-1 說明: (1)除了上面列出的sort()方法和binarySearch()外,還有

30、char、float、long、Object等類型的sort()方法和binarySearch(),這里不再列出。(2)在使用binarySearch()時,要求數(shù)組a中的元素已經(jīng)有序排列,否則返回值未定義。2、Vector 類 Vector類稱作向量類,它實現(xiàn)了動態(tài)的數(shù)組,使用于元素數(shù)量變化的對象數(shù)組。像數(shù)組一樣,Vector類也用從0開始的下標(biāo)表示元素的位置;但和數(shù)組不同的是,當(dāng)Vector對象創(chuàng)建后,數(shù)組的元素個數(shù)會隨著Vector對象元素個數(shù)的增大和縮小變化。Vector類的成員變量有:elementData 存放對象元素的數(shù)組elementCount 當(dāng)前對象元素的個數(shù)capacit

31、yIncreament 元素個數(shù)變大時自動增大數(shù)組空間的個數(shù) Vector類的構(gòu)造方法有:Vector () 創(chuàng)建元素為空的對象,且elementCount=10,capacityIncreament=0Vector (int initialC) 創(chuàng)建元素為空的對象,且elementCount= initialC,capacityIncreament=0Vector (int initialC,int capacityI) 創(chuàng)建元素為空的對象,且elementCount= initialC,capacityIncreament= capacityI Vector類的常用方法有:void add

32、( int index,Object elem)在Vector對象的index下標(biāo)處插入元素elem,index下標(biāo)以后的元素依次后移boolean add(Object elem)在Vector對象的尾部添加元素elem,添加成功返回true,失敗返回falseboolean addAll(Collection c)在Vector對象的尾部、依次添加集合對象c中的所有元素,添加成功返回true,失敗返回falsevoid addElement(Object obj)在Vector對象的尾部、增加對象obj,且對象的元素個數(shù)加1boolean removeElement(Object obj)

33、如果對象非空,則刪除Vector對象obj第一次出現(xiàn)的元素copyInto(Object anArray)把Vector對象指針?biāo)肝恢玫某煞謴?fù)制給數(shù)組anArray,要求數(shù)組anArray要足夠大,否則會拋出異常Enumeration elements() 返回對象的序列化元素int size() 返回對象的元素個數(shù) 和Arrays類相比,Vector類的最主要特點是長度可隨對象成分個數(shù)的增加或減少任意變化。3、Data 類和Calendar類 Data 類提供了獲取當(dāng)前精確到毫秒時間的方法,并提供了許多方法截取當(dāng)前時間的年、月、日等數(shù)值。Data 類的構(gòu)造方法有:Data () 創(chuàng)建一個可

34、精確到毫秒的當(dāng)前時間的對象Data (long date) 創(chuàng)建一個可精確到毫秒的參數(shù)date指定時間的對象,date表示從GMT(格林威治)時間1970-1-1 00:00:00開始至某時刻的毫秒數(shù)。Calendar類定義了許多如YEAR、MONTH、DAY、HOUR、MINUTE、SECOND、DAY_OF_WEEK等成員變量,Calendar類的get()方法可以獲取這些成員變量的數(shù)值?!纠?.6】設(shè)計程序獲取本地計算機上的當(dāng)前時間并顯示。程序設(shè)計如下: import java.util.*;public class MyDatepublic static void main(Strin

35、g args)Date date = new Date(); /創(chuàng)建對象,其值為當(dāng)前時間System.out.println(date); /輸出顯示當(dāng)前時間 /分項輸出顯示當(dāng)前時間Calendar now = Calendar.getInstance(); /獲得當(dāng)前時間int year =now.get(Calendar.YEAR); /年份int month=now.get(Calendar.MONTH)+1; /月份int day = now.get(Calendar.DATE); /日期System.out.print(year+"年"+month+"月

36、"+day+"日 "); int hour = now.get(Calendar.HOUR); /時int minute = now.get(Calendar.MINUTE); /分int second = now.get(Calendar.SECOND); /秒System.out.print(hour+"時"+minute+"分"+second+"秒 ");int week = now.get(Calendar.DAY_OF_WEEK); /星期17String str = "日一二三四五六

37、"int i=2*(week-1); /對應(yīng)中文的下標(biāo)System.out.println("星期"+str.substring(i,i+2);程序運行結(jié)果如下: Tue Sep 28 10:32:29 CST 20042004年9月28日 10時32分29秒 星期二 4、Enumeration接口 Enumeration接口主要用于集合類對象的序列化。一個集合類對象中包含有許多元素,所謂對象是序列化的,就是說可以依次取出該對象中的元素。Enumeration接口定義如下:public interface Enumeration Object nextElemen

38、t(); /返回后續(xù)元素boolean hasMoreElements(); /是否還有后續(xù)元素 nextElement()方法返回后續(xù)元素;hasMoreElements()方法判斷是否還有后續(xù)元素。任何一個類,只要實現(xiàn)了Enumeration接口,其對象就是序列化的。所謂對象是序列化的,就是說若連續(xù)調(diào)用nextElement()方法,每次將返回該集合對象當(dāng)前元素的后續(xù)元素。例如,Vector類是一個集合類,Vector類就實現(xiàn)了Enumeration接口。因此,若要輸出一個Vector類的對象v中的所有元素,就可以編寫如下代碼: Enumeration e = v.elements();w

39、hile (e.hasMoreElements() System.out.println(e.nextElement();4、綜合應(yīng)用舉例 為了讓讀者更好地理解Java API的使用方法,本節(jié)給出兩個簡單的Java API的應(yīng)用例子?!纠?.7】把10個數(shù)按從小到大的次序排序。要求:用 Arrays類的sort()方法實現(xiàn)排序。程序設(shè)計如下:import java.util.*;public class Exam5_7public static void main(String args) final int SIZE = 10; /常量int i, min;int a = new intSI

40、ZE; for(i = 0; i < a.length; i+)ai = (int)(Math.random() * 100); /產(chǎn)生隨機數(shù)并賦值System.out.println("排序前數(shù)組元素為:"); for(i = 0; i < a.length; i+)System.out.print(ai + " "); Arrays.sort(a); /排序 System.out.println("n排序后數(shù)組元素為:"); for(i = 0; i < a.length; i+)System.out.print(ai + " ");程序運行結(jié)果如下:排序前數(shù)組元素為:40 96 31 20 85 58 40 89 18 18排序后數(shù)組元素為:18 18 20 31 40 40 58 85 89 96 【例5.8】使用Vector類和Integer類求解約瑟夫環(huán)問題。約瑟夫環(huán)(Josephus)問題:古代某法官要判決N個犯人的死刑,他有一條荒唐的法律,將犯人站成一個圓圈,從第S個人開始數(shù)起,每數(shù)到第D個犯人,就拉出來處決,然后再數(shù)D個,數(shù)到的人再處決,直到剩下的最后一個可赦免。當(dāng)N=5,S=0,D=2時,約瑟夫環(huán)問題執(zhí)行過程示意

溫馨提示

  • 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

提交評論