Java基礎(chǔ)加強(qiáng)8課件_第1頁
Java基礎(chǔ)加強(qiáng)8課件_第2頁
Java基礎(chǔ)加強(qiáng)8課件_第3頁
Java基礎(chǔ)加強(qiáng)8課件_第4頁
Java基礎(chǔ)加強(qiáng)8課件_第5頁
已閱讀5頁,還剩29頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

Java基礎(chǔ)加強(qiáng)講師:黎活明Java基礎(chǔ)加強(qiáng)87118

課程大綱eclipse的使用技巧靜態(tài)導(dǎo)入可變參數(shù)與for循環(huán)增強(qiáng)基本數(shù)據(jù)類型的自動拆箱與裝箱枚舉反射JavaBean內(nèi)省beanutils工具包注解泛型類加載器代理Java基礎(chǔ)加強(qiáng)87118eclipse的使用技巧快捷鍵使用技巧:快捷鍵的位置:window-preferences-General-Keys:最常用eclipse快捷鍵內(nèi)容提示Alt+/添加塊注釋Ctrl+Shift+/除去塊注釋Ctrl+Shift+\復(fù)制行Ctrl+Alt+向下鍵更改為大寫Ctrl+Shift+X更改為小寫Ctrl+Shift+Y類和方法說明F2Java基礎(chǔ)加強(qiáng)87118靜態(tài)導(dǎo)入importstatic語句導(dǎo)入一個類中的某個或所有靜態(tài)方法語法舉例:importstaticjava.lang.Math.random;importstaticjava.lang.Math.*;publicstaticvoidmain(String[]args){ System.out.println(random()*100);}importstatic語句導(dǎo)入一個類中的靜態(tài)成員變量語法舉例:publicclassConstant{publicstaticStringcontent="itcast";}importstaticcn.itcast.Constant.content;Java基礎(chǔ)加強(qiáng)87118

增強(qiáng)for循環(huán)語法:for(type變量名:集合變量名){…}注意事項:迭代變量必須在()中定義!集合變量可以是數(shù)組或?qū)崿F(xiàn)了Iterable接口的集合類舉例:

publicstaticintadd(intx,int...args){ intsum=x; for(intarg:args){ sum+=arg; } returnsum; }Java基礎(chǔ)加強(qiáng)87118可變參數(shù)可變參數(shù)的特點:只能出現(xiàn)在參數(shù)列表的最后;...位于變量類型和變量名之間,前后有無空格都可以;調(diào)用可變參數(shù)的方法時,編譯器為該可變參數(shù)隱含創(chuàng)建一個數(shù)組,在方法體中以數(shù)組的形式訪問可變參數(shù)。Java基礎(chǔ)加強(qiáng)87118基本數(shù)據(jù)類型的自動拆箱與裝箱自動裝箱:Integernum1=12;自動拆箱:Intnum=newInteger(23);基本Boolean/Byte/Integer(數(shù)值范圍:-128至127)數(shù)據(jù)類型的對象緩存:Integernum1=12;Integernum2=12;System.out.println(num1==num2);Integernum3=129;Integernum4=129;System.out.println(num3==num4);Java基礎(chǔ)加強(qiáng)87118枚舉使用枚舉的關(guān)鍵技術(shù)如下:

1:enum關(guān)鍵字表示枚舉類型,它的作用相當(dāng)于類聲明中的class關(guān)鍵字。

2:枚舉類型不能有public的構(gòu)造方法。

3:所有的枚舉值都是public、static、final的,這些修飾符都是自動加上,無須程序員手動添加。

4:枚舉之間用“,”分開,最好一個枚舉值用分號“;”。

5:每一個枚舉值是一個枚舉類型的實例。

6:可以在枚舉類型定義非枚舉值變量,這些變量可以使用任何修飾符。

7:變量和方法的定義必須在枚舉值后面定義。Java基礎(chǔ)加強(qiáng)87118枚舉的高級應(yīng)用枚舉就相當(dāng)于一個類,其中也可以定義構(gòu)造方法、成員變量、普通方法和抽象方法。枚舉元素必須位于枚舉體中的最開始部分,枚舉元素列表的后要有分號與其他成員分隔。把枚舉中的成員方法或變量等放在枚舉元素的前面,編譯器報告錯誤。帶構(gòu)造方法的枚舉構(gòu)造方法必須定義成私有的如果有多個構(gòu)造方法,該如何選擇哪個構(gòu)造方法?枚舉元素MON和MON()的效果一樣,都是調(diào)用默認(rèn)的構(gòu)造方法。帶方法的枚舉定義枚舉TrafficLamp實現(xiàn)普通的next方法實現(xiàn)抽象的next方法:每個元素分別是由枚舉類的子類來生成的實例對象,這些子類采用類似內(nèi)部類的方式進(jìn)行定義。增加上表示時間的構(gòu)造方法枚舉只有一個成員時,就可以作為一種單例的實現(xiàn)方式。Java基礎(chǔ)加強(qiáng)87118反射的基石Class類Java程序中的各個Java類屬于同一類事物,描述這類事物的Java類名就是Class。對比提問:眾多的人用一個什么類表示?眾多的Java類用一個什么類表示?人PersonJava類Class對比提問:Person類代表人,它的實例對象就是張三,李四這樣一個個具體的人,Class類代表Java類,它的各個實例對象又分別對應(yīng)什么呢?對應(yīng)各個類在內(nèi)存中的字節(jié)碼,例如,Person類的字節(jié)碼,ArrayList類的字節(jié)碼,等等。一個類被類加載器加載到內(nèi)存中,占用一片存儲空間,這個空間里面的內(nèi)容就是類的字節(jié)碼,不同的類的字節(jié)碼是不同的,所以它們在內(nèi)存中的內(nèi)容是不同的,這一個個的空間可分別用一個個的對象來表示,這些對象顯然具有相同的類型,這個類型是什么呢?如何得到各個字節(jié)碼對應(yīng)的實例對象(Class類型)類名.class,例如,System.class對象.getClass(),例如,newDate().getClass()Class.forName("類名"),例如,Class.forName("java.util.Date");九個預(yù)定義Class實例對象:參看Class.isPrimitive方法的幫助Int.class==Integer.TYPE數(shù)組類型的Class實例對象Class.isArray()總之,只要是在源程序中出現(xiàn)的類型,都有各自的Class實例對象,例如,int[],void…Java基礎(chǔ)加強(qiáng)87118反射

反射就是把Java類中的各種成分映射成相應(yīng)的java類。例如,一個Java類中用一個Class類的對象來表示,一個類中的組成部分:成員變量,方法,構(gòu)造方法,包等等信息也用一個個的Java類來表示,就像汽車是一個類,汽車中的發(fā)動機(jī),變速箱等等也是一個個的類。表示java類的Class類顯然要提供一系列的方法,來獲得其中的變量,方法,構(gòu)造方法,修飾符,包等信息,這些信息就是用相應(yīng)類的實例對象來表示,它們是Field、Method、Contructor、Package等等。一個類中的每個成員都可以用相應(yīng)的反射API類的一個實例對象來表示,通過調(diào)用Class類的方法可以得到這些實例對象后,得到這些實例對象后有什么用呢?怎么用呢?這正是學(xué)習(xí)和應(yīng)用反射的要點。Java基礎(chǔ)加強(qiáng)87118Constructor類Constructor類代表某個類中的一個構(gòu)造方法得到某個類所有的構(gòu)造方法:例子:Constructor[]constructors=Class.forName("java.lang.String").getConstructors();得到某一個構(gòu)造方法:例子: Constructorconstructor=Class.forName(“java.lang.String”).getConstructor(StringBuffer.class); //獲得方法時要用到類型創(chuàng)建實例對象:通常方式:Stringstr=newString(newStringBuffer("abc"));反射方式:Stringstr=(String)constructor.newInstance(newStringBuffer("abc")); //調(diào)用獲得的方法時要用到上面相同類型的實例對象Class.newInstance()方法:例子:Stringobj=(String)Class.forName("java.lang.String").newInstance();該方法內(nèi)部先得到默認(rèn)的構(gòu)造方法,然后用該構(gòu)造方法創(chuàng)建實例對象。該方法內(nèi)部的具體代碼是怎樣寫的呢?用到了緩存機(jī)制來保存默認(rèn)構(gòu)造方法的實例對象。Java基礎(chǔ)加強(qiáng)87118Field類Field類代表某個類中的一個成員變量演示用eclipse自動生成Java類的構(gòu)造方法問題:得到的Field對象是對應(yīng)到類上面的成員變量,還是對應(yīng)到對象上的成員變量?類只有一個,而該類的實例對象有多個,如果是與對象關(guān)聯(lián),哪關(guān)聯(lián)的是哪個對象呢?所以字段fieldX代表的是x的定義,而不是具體的x變量。示例代碼:

ReflectPointpoint=newReflectPoint(1,7); Fieldy=Class.forName("cn.itcast.corejava.ReflectPoint").getField("y"); System.out.println(y.get(point)); //Fieldx=Class.forName("cn.itcast.corejava.ReflectPoint").getField("x"); Fieldx=Class.forName("cn.itcast.corejava.ReflectPoint").getDeclaredField("x"); x.setAccessible(true); System.out.println(x.get(point));作業(yè):將任意一個對象中的所有String類型的成員變量所對應(yīng)的字符串內(nèi)容中的"b"改成"a"。Java基礎(chǔ)加強(qiáng)87118Method類Method類代表某個類中的一個成員方法得到類中的某一個方法:例子: MethodcharAt=Class.forName("java.lang.String").getMethod("charAt",int.class);調(diào)用方法:通常方式:System.out.println(str.charAt(1));反射方式:System.out.println(charAt.invoke(str,1));如果傳遞給Method對象的invoke()方法的第一個參數(shù)為null,這有著什么樣的意義呢?說明該Method對象對應(yīng)的是一個靜態(tài)方法!jdk1.4和jdk1.5的invoke方法的區(qū)別:Jdk1.5:publicObjectinvoke(Objectobj,Object...args)Jdk1.4:publicObjectinvoke(Objectobj,Object[]args),即按jdk1.4的語法,需要將一個數(shù)組作為參數(shù)傳遞給invoke方法時,數(shù)組中的每個元素分別對應(yīng)被調(diào)用方法中的一個參數(shù),所以,調(diào)用charAt方法的代碼也可以用Jdk1.4改寫為charAt.invoke(“str”,newObject[]{1})形式。Java基礎(chǔ)加強(qiáng)87118內(nèi)省了解JavaBeanJavaBean是一種特殊的Java類,主要用于傳遞數(shù)據(jù)信息,這種java類中的方法主要用于訪問私有的字段,且方法名符合某種命名規(guī)則。如果要在兩個模塊之間傳遞多個信息,可以將這些信息封裝到一個JavaBean中,這種JavaBean的實例對象通常稱之為值對象(ValueObject,簡稱VO)。這些信息在類中用私有字段來存儲,如果讀取或設(shè)置這些字段的值,則需要通過一些相應(yīng)的方法來訪問,大家覺得這些方法的名稱叫什么好呢?JavaBean的屬性是根據(jù)其中的setter和getter方法來確定的,而不是根據(jù)其中的成員變量。如果方法名為setId,中文意思即為設(shè)置id,至于你把它存到哪個變量上,用管嗎?如果方法名為getId,中文意思即為獲取id,至于你從哪個變量上取,用管嗎?去掉set前綴,剩余部分就是屬性名,如果剩余部分的第二個字母是小寫的,則把剩余部分的首字母改成小的。setId()的屬性名idisLast()的屬性名lastsetCPU的屬性名是什么?CPUgetUPS的屬性名是什么?UPS總之,一個類被當(dāng)作javaBean使用時,JavaBean的屬性是根據(jù)方法名推斷出來的,它根本看不到j(luò)ava類內(nèi)部的成員變量。一個符合JavaBean特點的類可以當(dāng)作普通類一樣進(jìn)行使用,但把它當(dāng)JavaBean用肯定需要帶來一些額外的好處,我們才會去了解和應(yīng)用JavaBean!好處如下:在JavaEE開發(fā)中,經(jīng)常要使用到JavaBean。很多環(huán)境就要求按JavaBean方式進(jìn)行操作,別人都這么用和要求這么做,那你就沒什么挑選的余地!JDK中提供了對JavaBean進(jìn)行操作的一些API,這套API就稱為內(nèi)省。如果要你自己去通過getX方法來訪問私有的x,怎么做,有一定難度吧?用內(nèi)省這套api操作JavaBean比用普通類的方式更方便。Java基礎(chǔ)加強(qiáng)87118內(nèi)省綜合案例PropertyDescriptor[]propertyDescriptors=Introspector.getBeanInfo(clazz).getPropertyDescriptors();for(PropertyDescriptorpropertydesc:propertyDescriptors){ Methodmethod=propertydesc.getReadMethod();//獲取屬性的get方法}Java基礎(chǔ)加強(qiáng)87118

Commons-beanutils將字符串轉(zhuǎn)換成給定類型的值ConvertUtils.convert(Stringvalue,Classclazz)為bean中的指定屬性賦值BeanUtils.copyProperty(form,"name","經(jīng)濟(jì)");將指定bean中的屬性值拷貝到目標(biāo)bean中同名的屬性BeanUtils.copyProperties(dest,orig)將Map中的值拷貝到目標(biāo)bean中與key同名的屬性PersonFormform=newPersonForm();Map<String,Object>properties=newHashMap<String,Object>();properties.put("id",56);properties.put("name","liming");BeanUtils.populate(form,properties);Java基礎(chǔ)加強(qiáng)87118了解注解及java提供的幾個基本注解先通過@SuppressWarnings的應(yīng)用讓大家直觀地了解注解:通過System.runFinalizersOnExit(true);的編譯警告引出@SuppressWarnings("deprecation")@Deprecated直接在剛才的類中增加一個方法,并加上@Deprecated標(biāo)注,在另外一個類中調(diào)用這個方法。@Overridepublicbooleanequals(Reflectother)方法與HashSet結(jié)合講解總結(jié):注解相當(dāng)于一種標(biāo)記,在程序中加了注解就等于為程序打上了某種標(biāo)記,沒加,則等于沒有某種標(biāo)記,以后,javac編譯器,開發(fā)工具和其他程序可以用反射來了解你的類及各種元素上有無何種標(biāo)記,看你有什么標(biāo)記,就去干相應(yīng)的事。標(biāo)記可以加在包,類,字段,方法,方法的參數(shù)以及局部變量上??磈ava.lang包,可看到JDK中提供的最基本的annotation。Java基礎(chǔ)加強(qiáng)87118自定義注解及其應(yīng)用定義一個最簡單的注解:public@interfaceMyAnnotation{}把它加在某個類上:@MyAnnotationpublicclassAnnotationTest{}用反射進(jìn)行測試AnnotationTest的定義上是否有@MyAnnotation根據(jù)發(fā)射測試的問題,引出@Retention元注解的講解,其三種取值:RetetionPolicy.SOURCE、RetetionPolicy.CLASS、RetetionPolicy.RUNTIME;分別對應(yīng):java源文件-->class文件-->內(nèi)存中的字節(jié)碼。思考:@Override、@SuppressWarnings和@Deprecated這三個注解的屬性值分別是什么?演示和講解@Target元注解Target的默認(rèn)值為任何元素,設(shè)置Target等于ElementType.METHOD,原來加在類上的注解就報錯了,改為用數(shù)組方式設(shè)置{ElementType.METHOD,ElementType.TYPE}就可以了。元注解以及其枚舉屬性值不用記,只要會看jdk提供那幾個基本注解的API幫助文檔的定義或其源代碼,按圖索驥即可查到,或者直接看java.lang.annotation包下面的類。Java基礎(chǔ)加強(qiáng)87118為注解增加基本屬性什么是注解的屬性一個注解相當(dāng)于一個胸牌,如果你胸前貼了胸牌,就是傳智播客的學(xué)生,否則,就不是。如果還想?yún)^(qū)分出是傳智播客哪個班的學(xué)生,這時候可以為胸牌在增加一個屬性來進(jìn)行區(qū)分。加了屬性的標(biāo)記效果為:@MyAnnotation(color="red")定義基本類型的屬性和應(yīng)用屬性:在注解類中增加Stringcolor();@MyAnnotation(color="red")用反射方式獲得注解對應(yīng)的實例對象后,再通過該對象調(diào)用屬性對應(yīng)的方法MyAnnotationa=(MyAnnotation)AnnotationTest.class.getAnnotation(MyAnnotation.class);System.out.println(a.color());可以認(rèn)為上面這個@MyAnnotation是MyAnnotaion類的一個實例對象為屬性指定缺省值:Stringcolor()default"yellow";value屬性:Stringvalue()default"zxx";

如果注解中有一個名稱為value的屬性,且你只想設(shè)置value屬性(即其他屬性都采用默認(rèn)值或者你只有一個value屬性),那么可以省略value=部分,例如:@MyAnnotation("lhm")。Java基礎(chǔ)加強(qiáng)87118為注解增加高級屬性數(shù)組類型的屬性int[]arrayAttr()default{1,2,3};@MyAnnotation(arrayAttr={2,3,4})如果數(shù)組屬性中只有一個元素,這時候?qū)傩灾挡糠挚梢允÷源罄杜e類型的屬性Gender

gender();@MyAnnotation(gender=Gender.MAN)注解類型的屬性:MetaAnnotationannotationAttr()default@MetaAnnotation("xxxx");@MyAnnotation(annotationAttr=@MetaAnnotation(“yyy”))可以認(rèn)為上面這個@MyAnnotation是MyAnnotaion類的一個實例對象,同樣的道理,可以認(rèn)為上面這個@MetaAnnotation是MetaAnnotation類的一個實例對象,調(diào)用代碼如下:

MetaAnnotationma=myAnnotation.annotationAttr(); System.out.println(ma.value());Java基礎(chǔ)加強(qiáng)87118體驗泛型Jdk1.5以前的集合類中存在什么問題

ArrayListcollection=newArrayList(); collection.add(1); collection.add(1L); collection.add("abc"); inti=(Integer)arrayList.get(1);//編譯要強(qiáng)制類型轉(zhuǎn)換且運(yùn)行時出錯!Jdk1.5的集合類希望你在定義集合時,明確表示你要向集合中裝哪種類型的數(shù)據(jù),無法加入指定類型以外的數(shù)據(jù)ArrayList<Integer>collection2=newArrayList<Integer>();collection2.add(1);/*collection2.add(1L);collection2.add(“abc”);*///這兩行代碼編譯時就報告了語法錯誤inti2=collection2.get(0);//不需要再進(jìn)行類型轉(zhuǎn)換泛型是提供給javac編譯器使用的,可以限定集合中的輸入類型,讓編譯器擋住源程序中的非法輸入,編譯器編譯帶類型說明的集合時會去除掉“類型”信息,使程序運(yùn)行效率不受影響,對于參數(shù)化的泛型類型,getClass()方法的返回值和原始類型完全一樣。由于編譯生成的字節(jié)碼會去掉泛型的類型信息,只要能跳過編譯器,就可以往某個泛型集合中加入其它類型的數(shù)據(jù),例如,用反射得到集合,再調(diào)用其add方法即可。Java基礎(chǔ)加強(qiáng)87118了解泛型ArrayList<E>類定義和ArrayList<Integer>類引用中涉及如下術(shù)語:整個稱為ArrayList<E>泛型類型ArrayList<E>中的E稱為類型參數(shù)變量整個ArrayList<Integer>稱為參數(shù)化的類型ArrayList<Integer>中的Integer稱為類型參數(shù)變量的值或?qū)嶋H類型參數(shù)ArrayList<Integer>中的<>念著typeofArrayList稱為原始類型參數(shù)化類型與原始類型的兼容性:參數(shù)化類型可以引用一個原始類型的對象,編譯報告警告,例如,

Collection<String>c=newVector();//可不可以原始類型可以引用一個參數(shù)化類型的對象,編譯報告警告,例如,

Collectionc=newVector<String>();//原來的方法接受一個集合參數(shù),新的類型也要能傳進(jìn)去參數(shù)化類型不考慮類型參數(shù)的繼承關(guān)系:Vector<String>v=newVector<Object>();//錯誤!///不寫<Object>沒錯,寫了就是明知故犯Vector<Object>v=newVector<String>();//也錯誤!編譯器不允許創(chuàng)建類型變量的數(shù)組。即在創(chuàng)建數(shù)組實例時,數(shù)組的元素不能使用參數(shù)化的類型,例如,下面語句有錯誤:

Vector<Integer>vectorList[]=newVector<Integer>[10];思考題:下面的代碼會報錯誤嗎?Vectorv1=newVector<String>();Vector<Object>v=v1;Java基礎(chǔ)加強(qiáng)87118泛型中的?通配符問題:定義一個方法,該方法用于打印出任意參數(shù)化類型的集合中的所有數(shù)據(jù),該方法如何定義呢?錯誤方式:publicstaticvoidprintCollection(Collection<Object>cols)

{ for(Objectobj:cols)

{ System.out.println(obj); }

/*cols.add("string");//沒錯

cols=newHashSet<String>();//會報告錯誤!*/}正確方式:publicstaticvoidprintCollection(Collection<?>cols){ for(Objectobj:cols){ System.out.println(obj); } //cols.add("string");//錯誤,因為它不知自己未來匹配就一定是String cols.size();//沒錯,此方法與類型參數(shù)沒有關(guān)系

cols=newHashSet<String>(); }總結(jié):使用?通配符可以引用其他各種參數(shù)化的類型,?通配符定義的變量主要用作引用,可以調(diào)用與參數(shù)化無關(guān)的方法,不能調(diào)用與參數(shù)化有關(guān)的方法。Java基礎(chǔ)加強(qiáng)87118泛型中的?通配符的擴(kuò)展限定通配符的上邊界:正確:Vector<?extendsNumber>x=newVector<Integer>();//?號指定的類為Number的子類錯誤:Vector<?extendsNumber>x=newVector<String>();在應(yīng)用泛型時可以使用extends限定符,并且可以用&來指定多個邊界,如<VextendsSerializable&cloneable>voidmethod(){}限定通配符的下邊界:正確:Vector<?superInteger>x=newVector<Number>();//?號指定的類為Integer的父類錯誤:Vector<?superInteger>x=newVector<Byte>();提示:限定通配符總是包括自己。?只能用作引用,不能用它去給其他變量賦值

Vector<?extendsNumber>=newVector<Integer>(); Vector<Number>x=y;

上面的代碼錯誤,原理與Vector<Object>x11=newVector<String>();相似, 只能通過強(qiáng)制類型轉(zhuǎn)換方式來賦值。Java基礎(chǔ)加強(qiáng)87118泛型集合類的綜合案例能寫出下面的代碼即代表掌握了Java的泛型集合類:HashMap<String,Integer>hm=newHashMap<String,Integer>();hm.put("zxx",19);hm.put("lis",18);

Set<Map.Entry<String,Integer>>mes=hm.entrySet();for(Map.Entry<String,Integer>me:mes){System.out.println(me.getKey()+":"+me.getValue());}對在jsp頁面中也經(jīng)常要對Set或Map集合進(jìn)行迭代:<c:forEachitems=“${map}”var=“entry”> ${entry.key}:${entry.value}</c:forEach>Java基礎(chǔ)加強(qiáng)87118通過反射獲得泛型的參數(shù)化類型示例代碼:

ClassGenericalReflection{ privateVector<Date>dates=newVector<Date>(); publicvoidsetDates(Vector<Date>dates){ this.dates=dates; } publicstaticvoidmain(String[]args){ MethodmethodApply=GenericalReflection.class.getDeclaredMethod("applyGeneric",Vector.class); ParameterizedTypepType=(ParameterizedType) (methodApply.getGenericParameterTypes())[0]; System.out.println("setDates(" +((Class)pType.getRawType()).getName()+"<" +((Class)(pType.getActualTypeArguments()[0])).getName() +">)"); } }泛型DAO的應(yīng)用:publicabstractclassDaoBaseImpl<T>implementsDaoBase<T>{ protectedClass<T>clazz; publicDaoBaseImpl(){ Typetype=this.getClass().getGenericSuperclass(); ParameterizedTypept=(ParameterizedType)type; this.clazz=(Class)pt.getActualTypeArguments()[0]; System.out.println("clazz="+this.clazz); } }publicclassArticleDaoImplextendsDaoBaseImpl<Article>implementsArticleDao{ }Java基礎(chǔ)加強(qiáng)87118類加載器與普通程序不同的是,Java程序(class文件)并不

溫馨提示

  • 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

提交評論