JAVA SE基础知识.doc_第1页
JAVA SE基础知识.doc_第2页
JAVA SE基础知识.doc_第3页
JAVA SE基础知识.doc_第4页
JAVA SE基础知识.doc_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

1、课程名称:JAVA SE基础知识2、知识点2.1、上次课程的主要知识点1、在Oracle的学习之中有以下几点必须重点掌握: 数据的查询和更新操作、事务处理; 表的建立、约束的使用、序列的使用; 表的设计范式应该是理解。2.2、本次预计讲解的知识点1、JAVA学习层次;2、Java简介及JDK的安装及配置;3、Java SE的基础程序设计;4、数组及方法的使用。3、具体内容3.1、Java的学习层次从程序的开发来讲,Java语言是整个JAVA EE体系的核心基础部分,在这一部分之中,只有将核心概念掌握透彻了,才有可能为以后的学习提供方便。知识点的学习:可以根据每一个关键字或者是知识点,联想到其所对应的程序及其概念,以及各个注意事项。在整个JAVA基础部分之中,有以下三个主要部分组成: JAVA SE的基础部分:基本程序的一个恢复以及数组及方法的使用; Java SE的面向对象:此部分概念很多,而且必须全部记下; Java SE的应用部分:类集、IO、类库、JDBC等等。其他的有许多的了解部分:多线程、网络编程;理解的部分:Java SE 1.5的提供的各种新特性。在以上的所有知识之中按照重要性来讲,一共有如下几部分: 面向对象:所讲解的一切都是为了抽象类和接口服务的; 类集部分:为数据结构实现; IO:面向对象的完美体现; JDBC:为以后的JAVA EE开发做准备呢。3.2、Java简介(理解)Java:是一门编程语言,而且现在已经形成了一自己的一套完整的开发体系,被大多数的公司所支持,所以现在的Java已经不再纯粹的作为一门语言出现了,更多的是作为一个行业的开发标准出现了。从整个行业发展来讲,Java平台、.NET平台、Adobe FLEX等已经算是将编程霸占的已经足够多了,因为这些公司的实力较大。 .NET:微软支持; FLEX:Adobe公司支持; Java:Oracle/SUN支持、IBM、HP等公司支持。Oracle要收购SUN公司,是为了形成:中间件 + 编程语言 + 开发工具 + 操作系统 + 数据库,完整商用体系;从历史发展来看商用体系: IBM:Websphere + Java + WSAD(RAD) + AIX + DB2; BEA + Borland + Oracle:BEA WebLogic + JBuilder + Java + Linux + Oracle; 开源项目:Tomcat + JBoss + Eclipse + Linux + MySQL(Oracle)一旦Oracle形成了这样的开发体系,则直接针对于微软了。Oracle在收购SUN公司之前最早是由IBM提出收购的,因为IBM主要的软件产品线都在Java上,之所以现在的Java这么的火暴,主要的原因还在于IBM的推广。IBM的典型标志:只搞理论研究从来不搞实践。Java语言最早是在1991年的时候推出的,其前身是Oak语言,这门语言的主要目的是为了竞争一个GREEN的项目,这个项目就非常类似于今天的嵌入式开发,可以通过邮件控制家电的运行,原本SUN公司的设计人员打算使用C+进行开发的,但是后来考虑到C+的复杂性,所以使用了C+语言开发了一个新的平台 OAK(橡树),但是遗憾的是此平台并没有竞争成功,被网景公司的SGL的平台所打败,从此之后Oak基本上就无家可归了。网景公司是靠浏览器技术发展的,但是其浏览器的市场被微软抢走了,在90年代的时候网景公司的浏览器相当的流行,但是就当其达到顶峰的时候内部开始出现问题了,这个时候大部分的人不再去研究浏览器的技术了,而只是专注于市场的推广了,而就在这个时候微软一直注意着提升浏览器的技术,所以慢慢的发展势头就盖过了网景公司了。现在的网景公司的主要依靠的是FireFox浏览器来重新抢夺市场。通过了学习浏览器技术之后,SUN公司的设计人员使用了OAK平台开发出了一套自己的浏览器技术 HotJava。一直到了1995年的时候,SUN才正式的将Oak更名为Java,同时推出了JDK 1.0开发平台,最早的Java是在浏览器中运行的一种技术 Applet。在1998年的时候推出了JDK 1.2,同时将Java更名为Java 2;后来又到了2005年,Java十周年大会上,推出了JDK 1.5,将Java更名为J2SE 5.0;Java的主要开发公司是SUN公司,那么SUN公司的全名:斯坦伏大学网络,最早的时候是靠卖硬件赚钱的,AMAZON,主要是依靠小型机,其中AMAZON网上书店就是采用了SUN的小型机。斯坦伏大学除了一个扬志远,其创办了YAHOO公司,Hewlet、Packed,1976年的时候HP的一个工程师:沃滋尼阿克发明了世界上第一台PC机,可是遗憾是HP公司没有采纳这个东西,但是后来此技术被一个独具慧眼的人看见了 乔布斯,所以在80年的时候Apple的电脑卖的相当的好。最早的Java有如下的几个技术的分支: J2SE:为Java的核心的基础版本,JDK安装完成之后则自动具备此环境;|- 在2005年之后J2SE更名为JAVA SE; J2ME:是在J2SE的基础之上发展起来的,主要是完成手机的嵌入式开发;|- 在2005年之后J2ME更名为JAVA ME; J2EE:是在J2SE基础之上发展的,主要完成企业的平台开发,也是现在Java的主要技术方向;|- 在2005年之后J2EE更名为JAVA EE。Java语言作为以上的所有开发平台的技术根本,有如下的几个特点:1、java语言足够简单;2、Java中存在多线程的处理机制,这也是Java的一大特点,而且也是为数不多的支持多线程的开发语言;3、自动的垃圾收集机制;4、可移植性;5、避免了指针等复杂问题的操作,而使用了更加简单的引用方式来解决同类问题。在Java语言中有自己的运行机制,运行机制如下图所示。C语言中每一个程序编译完成之后会自动生成一个*.exe的文件,从而可以直接执行,但是Java不一样,因为Java中的所有运行都依靠两种方式完成: 所有的Java程序的文件后缀都是*.java,但是这并不是真正要使用的程序而需要将其编译; 将编译成的*.class文件直接放在电脑上进行解释,但是此电脑可不是一台物理存在的电脑,而是一台虚拟的电脑,而此电脑就称为JVM Java虚拟机。3.3、Java的可移植性实现(重点)Java的可移植性完全体现在JVM上,通过JVM去使用不同的操作系统。现在的程序只认JVM,而由JVM去适应不同的操作系统,这样一来,程序在各个操作系统之间就可以实现任意的移植操作,从而实现可移植性,但是这种执行的方式其性能上呢肯定不如直接在固定的操作系统上方便,可是这样做的好处是方便开发。3.4、Java开发环境搭建 JDK(重点)要想进行java程序的开发,则首先必须将JDK配置到位,JDK现在使用最广泛的版本是JDK 1.5,以后的开发中记住了,只使用稳定版本,而不要使用最新版本。本次使用的是JDK 1.6版本,直接从上下载即可。现在如果直接启动了JDK的安装程序,则显示的语言是中文,因为JDK 属于多国语言版,所以要想更准确的发现各种错误信息,建议将本机操作系统的语言环境设置为英文。控制面板:区域和语言选项。选择完成之后,直接选择确定,再重新启动安装程序界面。安装完成之后下面要进入到JDK的配置,因为在JAVA中需要程序和解释,而编译和解释的命令:javac、java,但是这两个命令由于本身并不属于windows,所以默认情况下根本就无法找到,此时,就需要将JDK安装目录下的bin文件夹配置到path路径之中。我的电脑属性 高级选项 配置环境配置完成之后必须重新启动命令行方式才可以将新的内容加载进来。3.5、编写第一个java程序(重点)下面使用Java编写第一个应用程序,目的是在屏幕上输出“Hello World”。范例:编写Hello.javapublic class Hello public static void main(String args)System.out.println(Hello World!) ;程序编写完成之后,按照如下的步骤进行执行:1、编译程序:javac Hello.java,编译完成之后出现了一个*.class的文件;2、解释程序:java Hello,但是此时出现了如下的错误信息:Exception in thread main java.lang.UnsupportedClassVersionError: Hello (Unsupported major.minor version 50.0)现在提示的错误信息是:错误的版本,查看现在使用JAVA的版本:java version显示信息:java version 1.4.2_03Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_03-b02)Java HotSpot(TM) Client VM (build 1.4.2_03-b02, mixed mode)现在显示的信息是Java 1.4版本,那么我们配置的JDK 1.6呢?实际上这个出现的错误信息完全是由Oracle,因为Oracle本身已经自带了JDK,因为许多Oracle的一些应用程序都是java开发的,所以运行,就必须有JDK的支持。但是要想解决此问题,现在有两种方式: 在path属性之后,删除掉所有与oracle的JDK有关的配置;D:oracleproduct10.1.0db_1jre1.4.2binclient;D:oracleproduct10.1.0db_1jre1.4.2bin; 将所要使用新的配置放在path的最前面:因为读取的时候采用的是顺序的方式。3.6、第一个程序的相关解释(重点)第一个程序编写完成之后,下面来看一下程序的组成部分,所有的java程序都是定义在一个类之中的,而此出使用的类名称是Hello。public class Hello任何的程序都是从主方法开始运行的,在java中的主方法定义如下;public static void main(String args)以上是程序运行的基本的结构,而要想在屏幕上进行输出的话,则必须使用如下的语句:System.out.println(Hello World!) ;以上的输出的表示是输出之后加一个换行,如果现在没有使用println(),而使用的是print()的方法就表示不换行。但是现在在使用的时候也有一个注意点,所有的程序都是由主方法开始执行,但是主方法要定义在一个类中,而且关于类的声明现在有两种形式: public class声明:文件名称(*.java)必须与声明的类名称保持一致; class声明:文件名称可以与类名称不一致,但是在执行的时候必须执行生成的类名称;在一个*.java文件之中,可以同时定义多个class,但是只能有一个public class,但是编译之后文件夹中将生成多个*.class文件。而且可以发现,现在在编写类名称的时候采用的格式是,每个单词的首字母大写,例如:HelloWorldDemo3.7、classpath环境属性(重点)在默认的情况下,一个java程序编译完成之后,只能在其所在的目录中解释此程序。如果现在在不同的路径下也想继续访问*.class文件的话,则只能依靠classpath环境属性的支持了,设置方法:SET CLASSPATH=路径范例:将d:testjava作为classpathSET CLASSPATH=d:testjava现在设置完成之后,即使当前的路径中不包含了*.class文件,但是也可以依照着classpath找到所指定路径中的*.class文件,也就是现在的程序运行:java解释 找到classpath环境所设置的路径 解释*.class文件。但是这样一来也会出现一个问题,如果将classpath到处设置的话也很麻烦,所以一般情况下都会将classpath设置为当前所在的文件夹中查找所需要的*.class文件,也就是当前目录查找,设置为“.”即可。SET CLASSPATH=.这种设置实际上也就是默认的设置,但是有些时候这种设置有可能出现问题,则只能按照如上方式进行了,如果觉得每次这样设置过于麻烦的话,也可以直接通过环境属性完成。这样的话,每次就不用重新设置了,以后有新的classpath也可以在此处直接完成配置,具体的这些操作将在以后的程序讲解中出现。3.8、标识符及关键字(重点)Java中的变量及类名称的组成也是有标识符的要求的,这些要求如下:只能由字母、数字、下划线、$所组成,其中不能以数字开头,不能是java中的关键字(保留字)。这些保留字没有任何的必要去背,这些随着程序的深入而逐步都会接触到,但是这些关键字之中也有如下的几个注意点: 从版本的发展来讲:|- JDK 1.4之后增加了一个assert关键字;|- JDK 1.5之后增加了一个enum关键字; 以上的关键字之中,有两个未使用到的保留字:const、goto; 有特殊含义的标记(严格讲不能算做关键字):true、false、null;3.9、数据类型(重点)任何的编程语言都无法回避数据类型的问题,在Java之中数据类型一共分为两大类: 基本数据类型:传递是一个个具体的数值;|- 数值型:|- 整型:byte、int、short、long|- 浮点型:float、double|- 字符型:char|- 布尔型:boolean 引用数据类型:就类似于C语言中的指针传递,传递的是内存地址;|- 数组|- 类|- 接口3.9.1、基本型数据每种基本数据类型都有其自己的取值范围和默认值,下面通过如下的表来列出。No.基本数据类型取值范围默认值(不可靠)1byte-128 12702short-32768 3276703int-2147483648 214748364704long-9223372036854775808 922337203685477580705float1.4E-45 3.4028235E380.06double4.9E-324 1.7976931348623157E3080.07boolantrue、falsefalse8char-u0000从以上的取值范围来讲,double的范围是最大的,所以使用double几乎可以装下全宇宙最大的一个数字。这些基本类型可以直接产生变量并进行计算。范例:定义整型数据public class Hello public static void main(String args)int x = 1 ;int y = 2 ;System.out.println(x + y) ;但是有一点必须注意的是,在java语言之中,一个数字的默认类型是int型的数据,但是在进行这种运算的时候也有一个问题,就是如果数据已经超过了int的范围,则有可能出现数据的溢出问题。public class Hello public static void main(String args)int max = Integer.MAX_VALUE ;/ 取得int的最大值int min = Integer.MIN_VALUE ;/ 取得int的最小值System.out.println(max + 1) ;System.out.println(min - 1) ;如果已经是最大值了,则继续进行相加操作会变为最小值,如果已经是最小值了,则再相减就成为了最大值。如果现在要想保持住一个比较合理的做法,则最好的方式是扩大数据的范畴,因为在java之中,所有范围小的数据可以自动向范围大的数据转换。public class Hello public static void main(String args)int max = Integer.MAX_VALUE ;/ 取得int的最大值int min = Integer.MIN_VALUE ;/ 取得int的最小值System.out.println(max + 1L) ;/ long x = max, x += 1 ;System.out.println(min - 1L) ;自动的数据类型转换是由位数低的向位数高的转换,但是如果现在要想将位数高的向位数低的转换,则必须采用强制手段。public class Hello public static void main(String args)long x = 1L ;int y = (int) x ;/ 位数大的向位数小的转换,需要强制int temp = 190 ;byte b = (byte) temp ;System.out.println(b) ;/ 数据溢出思考题:请说出以下的答案public class Hello public static void main(String args)System.out.println(11 + 1l) ;一定要注意了,表示long的“L”和“l”是一个含义。如果要想表示出小数的话,则可以使用float和double,但是默认的一个小数其类型是double。public class Hello public static void main(String args)double d1 = 1902.3345 ;System.out.println(d1 + 10) ;如果现在一个小数要使用float接收的话,则必须加上一个字母“f”(“F”),这样表示将double变为float。public class Hello public static void main(String args)float d1 = 1902.3345F ;System.out.println(d1 + 10) ;但是有些时候在计算上也有一写注意点,例如:除法操作。范例:现在使用整型除法public class Hello public static void main(String args)int line = 10 ;int cp = 3 ;System.out.println(line / cp) ;/ 因为int没有小数System.out.println(line / (double)cp) ;/ 将一个类型变为double除了这些操作之外,在定义变量的时候也有一个注意点,即:一个变量定义的时候必须声明默认值,但是这种做法要分不同的版本:范例:JDK 1.5之后此种做法正确public class Hello public static void main(String args)int x ; x = 10 ;System.out.println(x) ;但是在JDK 1.4和以前这种做法都是错误的,而且根本就无法编译通过。在以后定义变量的时候永远要给出默认值。在基本类型之中,还有字符型的数据,可是字符型和int型是可以互相转换的,而且一个字符要使用“”声明。范例:定义字符public class Hello public static void main(String args)char c = A ; System.out.println(c) ;范例:和int型互相转换public class Hello public static void main(String args)char c = A ; int x = c ;/ char - intx + ;c = (char) x ;/ int - charSystem.out.println(c) ;System.out.println(x) ;在C语言之中,这种转换后的数字实际上就是ASCII码,但是在Java之中所有的编码是采用的UNICODE编码,而UNICODE编码中兼容了ASCII码。面试题:一个字符能否保存一个中文呢?public class Hello public static void main(String args)char c = 阳 ; System.out.println(c) ;以上程序在编译的时候出现了错误的信息,但是之所以会存在错误信息主要的原因是因为现在的语言环境是英文,而如果换到了中文的语言环境下,则就可以了。之所以可以保存主要的原因是java采用的十六进制编码,则此编码可以包含世界上所有的文字。在基本数据类型有一个表示真与假的功能,就是boolean型的内容,此类型只有两种取值:true、false,而且此类型大部分情况下都是用于程序逻辑的实现上的。public class Hello public static void main(String args)boolean flag = true ;if(flag)/ 等价于:flag = trueSystem.out.println(Hello World !) ;3.9.2、初窥String在数据库的学习之中曾经学习过,要是想表示出一个人的姓名肯定是字符串,所以字符串在java中就可以使用String来定义了,可是String是一个类,只是这个类使用起来即特殊也方便。public class Hello public static void main(String args)String name = 张三 ;System.out.println(name) ;而且字符串中也可以使用“+”进行字符串的连接。public class Hello public static void main(String args)String name = 张三 ;name += ,你好 ;/ 连接字符串name = name + ! ;/ 连接字符串System.out.println(信息: + name) ;但是有一点也必须注意的是,如果任何的数据类型遇到了String,则所有的数据类型都将变为字符串。public class Hello public static void main(String args)String info = 计算结果: ;int x = 1 ;int y = 2 ;System.out.println(info + x + y) ;System.out.println(info + (x + y) ;3.10、运算符(重点)数学运算符:+、-、*、/、%;简便运算符:+、-、+=、-=、.;逻辑运算符:&、&、|、|、!;关系运算符:、=、 y ? x : y ;System.out.println(max) ;位运算:在开发中出现较少,但是作为知识点需要先掌握一下在进行位运算之前必须先把握一个概念:十进制变为二进制数据。除2取余,倒着取数据。51012 21 2 |10 |2 |01 |但是在java之中整型的数据长度是32位,所以以上的数据如果严格来讲,变为二进制是:00000000 00000000 00000000 00000101在java中提供的位运算符:&、|、范例:观察与操作public class Hello public static void main(String args)int x = 13 ;int y = 15 ;System.out.println(x & y) ;下面使用二进制的方式分析以上的程序:13的二进制:000000000 00000000 00000000 0000110115的二进制:000000000 00000000 00000000 00001111&操作:000000000 00000000 00000000 0000110113范例:或操作public class Hello public static void main(String args)int x = 9 ;int y = 7 ;System.out.println(x | y) ;继续使用二进制分析:9的二进制:000000000 00000000 00000000 000010017的二进制:000000000 00000000 00000000 00000111|操作:000000000 00000000 00000000 0000111115范例:观察移位操作,但是需要注意的是,移位之后的原数据内容不改变public class Hello public static void main(String args)int x = 9 ;System.out.println(x 2) ;System.out.println(x) ;分析以上的数据操作:9的二进制:000000000 00000000 00000000 00001001向左移两位:000000000 00000000 00000000 0010010036面试题:要求以最快的方式计算出2的3次方 靠移位最快public class Hello public static void main(String args)int x = 2 ;System.out.println(x = 0 & age 12 & age 18 & age =150)System.out.println(成年了) ; else System.out.println(您不是人了。) ;这种if.else的判断是可以直接使用boolean型的数据完成的,同样,对于多条件判断,也可以使用switch,但是switch可以判断的内容只能数字、字符、枚举。public class Hello public static void main(String args)int ch = 1; switch(ch)case 0 :System.out.println(* 结果是0) ;break ;case 1 : System.out.println(* 结果是1) ;break ; case 2 : System.out.println(* 结果是2) ;break ;default :System.out.println(没有满足条件的地方。) ;break ;循环程序肯定是必须的,实际上任何语言的学习之中,循环是一大难关,循环有如下几点需要注意: 循环要注意循环体的操作; 循环的时候要考虑到死循环的问题; 考虑到循环条件的变更。范例:1 100累加 while循环public class Hello public static void main(String args)int sum = 0 ;int x = 1 ;while (x = 100) / 判断条件sum += x ;/ 累加x + ;/ 修改循环条件System.out.println(sum) ;范例:1 100累加 dowhile循环public class Hello public static void main(String args)int sum = 0 ;int x = 1 ;do / 判断条件sum += x ;/ 累加x + ;/ 修改循环条件 while (x = 100) ;System.out.println(sum) ;范例:1 100累加 for循环public class Hello public static void main(String args)int sum = 0 ;for (int x=1; x=100; x+) sum += x ; System.out.println(sum) ;对于循环的使用: 在实际之中while循环要比dowhile使用更多; 如果不知道循环次数的时候使用while,而知道循环次数的时候使用for循环。对于循环的操作本身是允许嵌套的,比较常见的功能。范例:打印乘法口诀public class Hello public static void main(String args)for (int x = 1;x = 9;x+)for(int y = 1;y = x;y+)System.out.print(x + * + y + = + x * y + t) ;System.out.println() ;范例:打印三角形public class Hello public static void main(String args)int line = 10 ;/ 希望打印10行for(int x = 0;xline ; x+)for(int y = 0 ; y line - x ; y+)System.out.print( ) ;for(int y = 0;y = x;y+)System.out.print(* ) ;System.out.println() ;/ 换行这些都是一些基本程序的设计。3.12、方法(重点)3.12.1、方法的基本概念方法就是一段可以被重复调用的代码段,在C语言之中将方法又称为函数,但是在java开发之中千万不能说函数,永远只能说方法。但是现在的方法稍微有一些特殊,现在的方法是要求由主方法直接进行调用的,则必须按照如下的格式定义:public static 返回值类型 方法名称(参数列表)return 返回值 ;对于返回值就是java中的数据类型,这种类型就分为基本数据类型和引用数据类型两大类了,而如果现在一个方法不需要返回值,则在方法中不需要编写return语句,返回值类型处声明为void。范例:定义一个没有返回值的方法public class Hello public static void main(String args)printStar() ;/ 由方法直接调用printStar() ;/ 由方法直接调用printStar() ;/ 由方法直接调用public static void printStar()System.out.println(*) ;System.out.println(* HELLO WORLD *) ;System.out.println(*) ;范例:定义接收参数的方法public class Hello public static void main(String args)printStar(3) ;printStar(16) ;public static void printStar(int line)/ 接收参数for(int x = 0;xline ; x+)for(int y = 0 ; y line - x ; y+)System.out.print( ) ;for(int y = 0;y = x;y+)System.out.print(* ) ;System.out.println() ;/ 换行方法依然可以返回内容,这个时候使用return即可。范例:定义一个返回数据计算的方法public class Hello public static void main(String args)int result = add(10,20) ;System.out.println(result) ;System.out.println(add(20,30) ;public static int add(int x,int y)return x + y ;3.12.2、使用return完结方法之前使用return的时候都是在方法有返回值类型声明的时候操作的,如果现在返回的返回值类型声明为void的话,则也可以使用return,一旦使用了return的话,则表示将直接返回到方法的被调用处执行。public class Hello public static void main(String args)printStar(-3) ;printStar(-16) ;public static void printStar(int line)/ 接收参数if(line = 0)/ 数据没有任何的意义return ;/ 返回方法的被调用处for(int x = 0;xline ; x+)for(int y = 0 ; y line - x ; y+)System.out.print( ) ;for(int y = 0;y = x;y+)System.out.print(* ) ;System.out.println() ;/ 换行这种操作只能在返回值类型是void的情况下才可以使用。3.12.3、方法的重载(重点)在讲解此概念之前,先来观察如下的一段程序。public class Hello public static void main(String args)System.out.println(add1(20,30) ;System.out.println(add2(20,30,10) ;System.out.println(add3(190.1,182.2) ;public s

温馨提示

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

评论

0/150

提交评论