Java语言程序设计课件_第1页
Java语言程序设计课件_第2页
Java语言程序设计课件_第3页
Java语言程序设计课件_第4页
Java语言程序设计课件_第5页
已阅读5页,还剩96页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1Java语言程序设计—绪论

2绪论什么是JavaJava的起源与发展Java语法机制JVMJava程序开发3什么是JavaJava是一种编程语言一种开发环境一种应用环境一种部署环境句法与C++相似,语义与SmallTalk相似用来开发applets和applications当今最流行的应用程序与网络开发语言之一4Java的起源与发展Java的发展历史1991年Green小组创建,面向家电市场以C/C++为基础,创建Oak1995年将Oak应用于WWW上,更名为JavaHotJava—支持Java的WWW浏览器;Java与HotJava均采用免费策略1996年,JDK1.01998年,Java2平台5Java技术体系J2SE:Java2PlatformStandardEditionJ2EE:Java2PlatformEnterpriseEditionJ2ME:Java2PlatformMicroEditionP6J2SE组成JSP简介(J2EE)6Java运行原理Test.javaCompilerTest.classInterpreter1JVM(Win32)1001010…Interpreter2JVM(Solaris)Interpreter3JVM(MacOS)1001010…1001010…7Java的特征简单性面向对象分布式半编译、半解释健壮性安全性体系结构中立可移植性高性能多线程动态特性8Java语法机制区别于C++语法机制类不允许一个类同时继承多个父类引进abstract和final修饰词接口程序包多线程取消指针9JVMHello.javaJavacHello.javaHello.classJVMClassLoaderByteCodeVerifierInterpreterJITCodeGeneratorRuntime本地系统CompileRuntimeInternet

加载代码验证代码执行代码10Java程序开发JavaAPIjava.langjava.iojava.utiljava.awtjava.awt.eventjava.appletjava.sql11Java程序的编写与编译一个基本的Java应用程序Chap01.java:打印HelloWorld!javacchap01.javajavachap0112编译常见错误javac:CommandnotfoundHelloWorldApp.java:6:Methodprintl(java.lang.String)notfoundinclassjava.io.PrintStream.System. out.printl("HelloWorld!");InclassHelloWorldApp:mainmustbepublicorstaticcan’tfindclassHelloWorldApp类计数13Java语言基础标识符与数据类型表达式与语句程序控制语句数组14标识符与数据类型注释分号、块和空白标识符基本java类型15注释三种允许的Java技术程序注释风格//commentononeline/*commentonone ormoreline*//**documentingcomment*/16分号、块和空白一个语句是一行用分号(;)终止的代码totals=a+b+c+d+e+f;一个块是以上括号和下括号为边界的语句集合

{ x=y+1; y=x+1; }一个块可被用在一个类的定义中

publicclassDate{intday; intmonth;intyear;}块语句可被嵌套Java程序中允许任意多的空白17区块的形式//ablockstatement{x=y+1;y=x+1;}//ablockusedinaclassdefinitionpublicclassMyDate{intday;intmonth;intyear;}//anexampleofablockstatementnestedwithin//anotherblockstatementwhile(i<large){a=a+i;if(a==max){b=b+a;//nestedblockisherea=0;}}18空白在源代码元素之间允许空白,空白的数量不限。空白(包括空格、tabs和新行)可以改善你的对源代码的视觉感受。{intx;x=23*54;}

intx;x=23+54;}19标识符是赋予变量、类和方法的名称可从一个字母、下划线(_)或美元符号($)开始是大小写区别对待的,且无最大长度[举例]identifieruserNameUser_name_sys_varl$change20Java关键字abstractdoimplementsprivatethrowbooleandoubleimportprotectedthrowsbreakelseinstanceofpublictransientbyteextendsintreturntruecasefalseinterfaceshorttrycatchfinallongstaticvoidcharfinallynativesupervolatileclassfloatnewswitchwhilecontinuefornullsynchronizeddefaultifpackagethis21关键字—几点注意true、false和null为小写无sizeof运算符goto和const不是Java编程语言中使用的关键字22基本Java类型Java编程语言定义了八个原始类型逻辑类boolean文本类char整数类byte,short,int,long浮点类double,float23文本类──char和Stringchar代表一个16-bitUnicode字符必须包含用单引号(’’)引用的文字使用下列符号:‘a’‘\t’一个制表符‘\u????’一个特殊的Unicode字符,????应严格使用四个16进制数进行替换[举例]Chap02_1.javaString(StringBuffer:可对字符串的值进行修改)不是一个原始数据类型,它是一个类具有用双引号引用的文字可按如下情形使用:Stringgreeting=“GoodMorning!!\n”;Stringerr_meg=“recordnotfound!”;24整数类──byte,short,int,long采用三种进制─十进制、八进制和16进制具有缺省int用字母“L”和“l”定义long25浮点─float和double缺省为double浮点文字包括小数点或下列各项之一E或e(增加指数值)F或f(float)D或d(double)举例:3.14一个简单的浮点值(adouble)4.02E23一个大浮点值2.718F一个简单的float长度值123.4E+306D一个大的带冗余D的double值P42

例3-326表达式与语句变量、声明和赋值Java编码约定理解对象运算符表达式变量及作用域27变量、声明和赋值1.publicclassAssign{2.publicstaticvoidmain(Stringargs[]){3.intx,y;//declareintvariables4.floatz=3.414f;//declareandassignfloat5.doublew=3.1415;//declareandassigndouble6.booleantruth=true;//declareandassignboolean7.charc;//declarecharactervariable8.Stringstr;//declareString9.Stringstr1="bye";//declareandassign//Stringvariable10.c='A';//assignvaluetocharvariable11.str="Hioutthere!";//assignvaluetoStringvariable12.x=6;13.y=1000;//assignvaluestointvariables14....15.}16.}28非法赋值举例y=3.1415926;//3.1415926isnotanint.//Requirescastinganddecimalwill//betruncated.w=175,000;//thecommasymbol(,)cannotappeartruth=1;//acommonmistakemadebyex-C/C++programmers.29Java编码约定-1classes─类名应该是名词,大小写可混用,但首字母应大写classAccountBookclassComplexVariableinterface──界面名大小写规则与类名相同interfaceAccountmethod──方法名应该是动词,大小写可混用,但首字母应小写。在每个方法名内,大写字母将词分隔并限制使用下划线。balanceAccount()addComplex()Variables──所有变量都可大小写混用,但首字符应小写。词由大写字母分隔,限制用下划线,限制使用美元符号($),因为这个字符对内部类有特殊的含义。currentCustomer变量应该代表一定的含义,通过它可传达给读者使用它的意图。尽量避免使用单个字符,除非是临时“即用即扔”的变量(例如,用i,j,k作为循环控制变量)30Java编码约定-2spacing──每行只写一个语句并使用四个缩进的空格使你的代码更易读。comments──用注释来说明那些不明显的代码段落;对一般注释使用//分隔符,而大段的代码可使用/*•••*/分隔符。使用/**•••*/将注释形成文档,并输入给javadoc以生成HTML代码文档举例://Acommentthattakesuponlyoneline./*Commentsthatcontinuepastonelineandtakeupspaceonmultiplelines...*//**Acommentfordocumentationpurposes.31理解对象回顾对象的历史创建一个新类型创建一个对象—存储器分配或布局32表达式变量和作用域变量初始化运算符逻辑表达式位运算布尔逻辑运算符用加号(+)进行串链接右移位运算符左移位运算符类型转换升级和表达式的类型转换33变量及作用域局部变量方法或块内有效类成员变量static:类内有效非static:对象内有效方法参数方法内有效异常处理参数catch语句后{}内有效P48

图3-6、例3-434运算符与表达式算术运算符P50

算术运算符优先级与自动转换规则23:java.lang.Math.pow(2,3);关系运算符逻辑运算符P53

逻辑运算符表位操作符赋值操作符35位操作符位逻辑运算符按位与&按位或|按位异或^按位取反~位移位运算符P55[注意]右移运算符>>左移运算符<<无符号右移运算符>>>36赋值操作符扩展赋值运算符:P56

表3-16自动类型转换与强制类型转换其它运算符?:[].()Newinstanceof运算符的优先级:P57

表3-1837强制类型转换语法(type)expression举例longbigValue=99L; intintValue=(int)bigValue;[注意]原始类型和数组、对象等引用类型变量间不能相互转换38程序控制语句循环语句分支语句跳转语句异常处理语句39循环语句whiledo…while[举例]Chap02_2.javafor[举例]P61

例3-840java中的数据类型转换-1如何将字串String转换成整数intinti=Integer.parseInt(<String>);

或i=Integer.parseInt(<String>,<index>);inti=Integer.valueOf(my_str).intValue();字符串转成Double,Float,Long的方法大同小异41java中的数据类型转换-2如何将整数int转换成字串StringStrings=String.valueOf(i);Strings=Integer.toString(i);Strings=""+i;Double,Float,Long转成字符串的方法大同小异[举例]Chap03_1.java42java中的数据类型转换-3string->byte BytestaticbyteparseByte(Strings)

byte->string BytestaticStringtoString(byteb)char->string CharacterstaticStringtoString(charc)string->Short ShortstaticShortparseShort(Strings)Short->String ShortstaticStringtoString(Shorts)String->Integer IntegerstaticintparseInt(Strings)Integer->String IntegerstaticStringtostring(inti)String->Long LongstaticlongparseLong(Strings)Long->String LongstaticStringtoString(Longi)String->Float FloatstaticfloatparseFloat(Strings)Float->String FloatstaticStringtoString(floatf)String->Double DoublestaticdoubleparseDouble(Strings)Double->String DoublestaticStringtoString(Double)43Java面向对象特性概述类的定义对象的生命周期类的继承与多态44概述Java语言的OOP特性封装继承多态类和对象的基本概念例4-145类的定义类的基本结构类的声明:<modifiers>class<class_name>类体P81图4-1 [<attributedeclare>] [<constructordeclare>] [<methodsdeclare>]类的封装与信息隐藏P82例4-2成员变量基本四态:public、protected、private、—成员方法方法声明:P83[举例]P84例4-3方法调用中的参数传递:传值(包括地址)P85例4-446方法重载Overloading——允许在一个类的定义中,多个方法使用相同的方法名(多态:编译时多态)举例publicvoidprintln() publicvoidprintln(inti) publicvoidprintln(floatf) publicvoidprintln(Stringstr) publicvoidprintln(Objectx)P88

例4-547构造方法-1基本格式[public|protected|private]<classname>([<argumentlist>]){ [<statements>] }特点构造方法的名称必须和类名相同构造方法不能有返回值用户不能直接调用构造方法,必须通过关键词new自动调用[举例]P90

例4-7类成员变量的赋值:初始化->显式->构造48构造方法-2缺省的构造方法没有参数系统自动添加初始化对象重载构造方法一般加上缺省情况[举例]P91

例4-849对象的生命周期对象的创建P94

图4-4new分配内存空间显式初始化构造方法初始化对象的使用对象的清除对象的引用与多个引用空间finalize();gc();50类的继承与多态-1子类定义ClassSubClassextendsSuperClass{…}分析电子商务售书网站(不同类书、其它类)特性子类继承父类所有属性和方法,除了private修饰的属性和方法构造方法只要声明自己特有的属性和方法51类的继承与多态-2单继承extends

后面实现一个类名P97

图4-5多重继承只能靠接口实现this与super关键词P98

例4-9this() //调用本类的构造方法this.someMethod() //调用本类的方法/属性super() //调用父类的构造方法super.someMethod() //调用父类的方法/属性[讨论]

去掉super和thisChap03_2.java52子类对象的创建与实例化子类对象的创建与初始化分配对象所需要的全部内存空间,并初始化按继承关系,自顶向下显式初始化按继承关系,自顶向下调用构造方法几点注意先从各级父类继承部分完全初始化显式初始化构造初始化调用父类构造方法(super或默认)[案例分析]P99

例4-1053方法的重写(overriding)为什么要方法重写?隐藏父类成员变量或成员方法怎么实现方法重写?子类中重写方法的返回值类型必须与父类中被重写方法的返回值类型相同子类中重写方法的方法名和参数列表必须与父类中被重写方法的方法名和参数列表相同子类中重写方法的访问权限不能缩小子类中重写方法不能抛出新的异常方法重写举例P101例4-1154运行时多态多态的本质对外一个接口,内部多种实现运行时多态(晚联编)P104

与编译时多态上溯造型(upcasting)子类对象引用转成父类对象引用从extends到超集(子类是父类的超集)可以创建不同类型对象的数组下溯造型(downcasting)父类对象引用转成子类对象引用强制类型转换55Java高级特性static关键词final关键词抽象类接口包访问控制内部类其它类56static关键词static含义:静态的、作用域:所属类类变量/静态变量所属类的所有实例变量中都可以访问private类方法/静态方法57静态初始化程序语法static{

… }[举例]P118

例5-358final关键词作用范围类的声明:不能再派生子类成员方法:不能被重写成员变量:常量[举例]P119

例5-459抽象类概念包含一个或多个抽象方法只有声明,没有方法体称为抽象方法特点abstract修饰除了没有方法体,其它和class一样不能创建抽象类实例抽象类的子类可以创建实例(非抽象方法)抽象类的含义P121

图5-160关于树状结构不足之处的例子接口的引出-161卡车、轮船、喷气机这些子类都以汽油为动力燃料所以具有一些相同的属性和方法,如每公里耗油量、剩余油量、加油操作、获取剩余油量等为使程序简洁,可把这些公共属性和方法放在父类交通工具中,然后由子类、子类的子类继承但必将产生一个问题:自行车等非燃油交通工具子类也继承了这些属性和方法,这很不合理另外,子类层次越下,继承的无效的方法越多,难以管理和掌握接口的引出-262解决方法把用于完成特定功能的若干属性和方法组织成相对独立的集合,凡是需要实现这种特定功能的类,都可以继承该集合,并在类内使用它。上述集合就是接口。在上面的例子中,可以定义一个用来完成燃油功能的接口“可燃油的”包含相关属性功能,卡车、轮船、喷气机这些类均可以通过实现该接口来拥有燃油功能。接口的引出-363接口的引出-464接口概念声明方法,不定义方法体一组对外的公共接口语法[public]interfaceInterfaceName[extendsListOfSuperInterface]{ typeNAME=value; returnTypemethodName([paramlist]);

}接口的实现implementsInterfaceName可以使用接口中定义的常量必须实现接口定义的所有方法实现多态:P124

图5-2例5-565多重继承[举例]P127

图5-4扩展接口创建子接口:extendsInterfaceName接口与抽象类接口与抽象类的所有方法都是抽象的,但抽象类有空方法体一个类可以实现多个接口,而只能继承一个抽象父类接口不构成类的继承体系,因此条件比较宽松;抽象类一般位于类的顶层一般使用接口;需要成员变量和完整方法定义时,使用抽象类66包(package)OOP的封装思想:将相关功能的接口和类放到同一目录中,同时避免命名冲突和限定类的访问权限独立命名空间相关类与接口的集合优点容易根据所需功能找到相关类每个包创建新的命名空间,不同包相同名允许同一个包中的类之间有宽松的访问控制67包的定义和使用包的定义packagepkg1[.pkg2[.pkg3…]]定义类属于哪个包除去空格和注释,包的定义在最前方包名间以“.”分隔默认:package.//属于当前目录,默认不写包成员的使用引入(import)包成员或整个包,使用短名使用长名(包名.接口名或类名)[举例]P131

例5-668packagemyclass.graphics;

这条语句指定这个包中的文件存储在目录path/myclass/graphics下。包层次的根目录path是由环境变量CLASSPATH来确定的。packagemyclass.graphics;classSquare{…;}classCircle{…;}classTriangle{…;}myclasspathSquareUsingpackage-169如果在程序Test.java中已定义了包p1,编译时采用如下方式:javac-ddestpathTest.java

则编译器会自动在destpath目录下建立一个子目录p1,并将生成的.class文件都放到destpath/p1下。

destpath可以是环境变量CLASSPATH中的一个。Usingpackage-270Usingpackage-3为了方便编程和管理,通常把需要在一起工作的类放在一个包,类似于文件夹的组织文件的模式。通常一个类只能引用与它在同一个包中的类。若需要使用其它包中的类,用import语句引入整个包或所需要的类。

importpackage1[.package2…].(classname|*);

例如:

importmyclass.graphics.*;

importjava.io.File;也可以直接在类的前面添加完整的包名作为前缀。例如,定义一个日期对象:

java.util.Datethedate=newDate(2003,10,1);不推荐使用这种办法。71Howtouseclasspath为了让程序找到定义的package,需要:程序或者在定义的package上面的目录下执行,或者把classpath设置为包含有指向定义的package的路径。classpath的确切效果和设置一直在随java的修订而变化,所以使用时最好参考sun的最新说明。<举例>72Usingpackage-4//Ashortpackagedemonstration.packageBookPack;

classBook{privateStringtitle;privateStringauthor;privateintpubDate;

Book(Stringt,Stringa,intd){title=t;author=a;pubDate=d;}

voidshow(){System.out.println(title);System.out.println(author);System.out.println(pubDate);System.out.println();}}

classBookDemo{publicstaticvoidmain(Stringargs[]){Bookbooks[]=newBook[5];

books[0]=newBook("Java:ABeginner'sGuide","Schildt",2005);books[1]=newBook("Java:TheCompleteReference","Schildt",2005);books[2]=newBook("TheArtofJava","SchildtandHolmes",2003);books[3]=newBook("RedStormRising","Clancy",1986);books[4]=newBook("OntheRoad","Kerouac",1955);

for(inti=0;i<books.length;i++)books[i].show();}}73Usingpackage-5//Bookrecodedforpublicaccess.packageBookPack;

publicclassBook{privateStringtitle;privateStringauthor;privateintpubDate;

//Nowpublic.publicBook(Stringt,Stringa,intd){title=t;author=a;pubDate=d;}

//Nowpublic.publicvoidshow(){System.out.println(title);System.out.println(author);System.out.println(pubDate);System.out.println();}}为了使本包中的类可以被其他包中的类所访问,需要:把本包中的类声明为public,且这个类的构造函数也是public的。如果要访问本包中类的方法,那么这个方法也需要声明是public的或者使用包的全名访问使用import声明74usingfullnametoaccessapackage//ThisclassisinpackageBookPackB.packageBookPackB;

//UsetheBookClassfromBookPack.classUseBook{publicstaticvoidmain(Stringargs[]){BookPack.Bookbooks[]=newBookPack.Book[5];

books[0]=newBookPack.Book("Java:ABeginner'sGuide","Schildt",2005);books[1]=newBookPack.Book("Java:TheCompleteReference","Schildt",2005);books[2]=newBookPack.Book("TheArtofJava","SchildtandHolmes",2003);books[3]=newBookPack.Book("RedStormRising","Clancy",1986);books[4]=newBookPack.Book("OntheRoad","Kerouac",1955);

for(inti=0;i<books.length;i++)books[i].show();}}75包的综合举例P131

例5-6importgraphics.twoD.*;通常会出现badclass错误,java编译器不smartjava与class同一目录将*细化

setclasspath不能立即生效调用的java主文件在”根”目录,则不需设置classpath76包的访问控制成员变量、成员方法、内部类private—私有的protected—受保护的default—默认的public—公开的类publicdefault举例77内部类什么是内部类内部类的使用访问外包类所有成员外包类语句块中定义内部类外包类外其他类访问内部类内部类的特性78内部类的特性内部类的类名只用于定义它的类或语句块内,在外部引用它时必须给出带有外包类名的完整名称,并且内部类的名字不允许与外包类名字相同内部类可以访问外包类的静态(static)或实例成员变量内部类可以在成员方法中定义,该成员方法的局部变量及参数必须是final的才能被该内部使用内部类可以是抽象类或接口。如果是接口,则可以由其他内部类实现内部类可以使用public、protected、default或private等四种访问权限控制内部类可以被声明为static(普通类不可),这样的内部类变成顶层类,相当于把它放在外面,不再是嵌套的内部类,且不包含指向外包类的指针只有顶层可以声明static成员,若内部类需定义static成员,须先将内部类声明为static79包装类BooleanByteCharacterShortIntegerLongFloatDouble80集合类Collection:集合接口树的根Set:不能包含重复的元素SortedSetList:有序的集合Map:实现键值到值的映射(不能重复)SortedMap81实现Set接口的类HashSet对象中的元素存储在Hash表中,存取效率高TreeSet实现SortedSet的接口,有序(升序)树结构存储LinkedHashSet采用链表和Hash表相结合的结构存储[举例]P146

例5-1282List接口特有属性按位置存取元素查找遍历建立List视图举例83异常处理异常的概念异常处理方法自定义异常类84异常的概念概念:在程序运行时打断正常程序流程的任何不正常的情况称为错误或异常出现异常试图打开的文件不存在网络连接中断操作符越界加载的类找不到[举例]P155

例6-185异常类层次P156Error与Exception不可恢复与可恢复不可处理与可处理86异常处理方法捕获并处理异常好像traptry-catch-finally将方法产生的异常抛出好像transfermethodDeclarationthrowsException87捕获并处理异常try-catch-finally语句try{ javastatements; }catch(Exception1e){ javastatements; }catch(Exceptione){ javastatements; }finally{…}通用异常处理Exceptione;…;e.getMessage();[举例]P159

例6-288将方法中产生的异常抛出声明异常returnTypemethodName([paramList])throwsexceptionListexceptionList可包含多个异常类型,用逗号隔开适用场合方法中调用了抛出异常的方法方法体中生成并抛出异常对象P163[举例]P163

例6-589Applet基础与高级编程Applet基本概念Applet的编写Applet中的图形化用户界面GUIApplet的多媒体支持Applet的安全控制Applet与外界的通信Applet与Application90Applet基本概念什么是Applet小应用程序:web上的java依靠web浏览器或javaappletviewer运行Applet开发过程编写Applet源文件并编译编写插入Applet的HTML源文件输入:appletviewerxxx.html或双击xxx.html[举例]

Chap06_1.java,applet.htmlApplet的运行过程浏览器加载指定URL的HTML文件浏览器解析HTML文件浏览器加载HTML文件中指定URL的Applet类浏览器中的Java运行环境运行该Applet类91Applet的类层次结构每一个Applet都继承自java.applet.Applet类,并且每个Applet都有一个主程序类,之前必须加上public92Applet的生命周期-1生命周期:加载->创建->运行->消亡initstartstopdestroy装载Applet时调用,初始化操作初始化后,访问时调用Applet停止时调用,一般发生在页面重定向或关闭前在浏览器完全关闭之前调用重新装入或改变浏览器大小或返回web页面93Applet的生命周期-2Applet中没有main()方法。当Applet被浏览器运行时,init()、start()、stop()、destroy()方法等自动执行:init()方法:初始化,自动调用,只执行一次。本方法主要完成一些在Applet构造方法所不能完成的工作。start()方法:初始化后,重入等都将自动调用。本方法是Applet的主体,在其中可以执行一些任务或启动相关的线程来执行任务。stop()方法:离开Applet所在页面时调用,以停止消耗系统资源。destroy()方法:浏览器关闭时自动调用,以清除Applet所用的所有资源。94Applet的生命周期-3除了四个Applet生命周期控制的方法外,Applet类还提供了一些其他有用的方法:

publicAppletContext

getAppletContext()返回AppletContext实例

publicString

getAppletInfo()报告关于Applet的作者、版权、版号等信息

publicURL

getDocumentBase()返回包含Applet的HTML文件的URLpublicURL

getCodeBase()

返回Applet主类的URLpublicString

getParameter(String

name)

返回定义在HTML文件的</PARAM>标记中指定参数的值,如果参数不存在,返回null95Applet的显示-1AWTThreadrepaintupdatepaint程序调用初次显示、遮盖、调整大小、最大化、最小化等96Applet的显示-2paint()Update()Repaint()Graphics类:相当于画笔drawLine()drawRect();fillRect()draw3Drect();fill3Drect()drawRoundRect();fillRoundRect()drawOval();fillOval()drawArc();fillArc()drawPolygon();drawPolyline();fillPoly

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论