一名java培训生的学习笔记(基础部分1).doc_第1页
一名java培训生的学习笔记(基础部分1).doc_第2页
一名java培训生的学习笔记(基础部分1).doc_第3页
一名java培训生的学习笔记(基础部分1).doc_第4页
一名java培训生的学习笔记(基础部分1).doc_第5页
已阅读5页,还剩83页未读 继续免费阅读

下载本文档

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

文档简介

第一章 2007年6月3日 星期日授课教师:老刘学生:王洪峰第一节JDK的安装 一、在安装前,先打开控制面板,点击添加删除程序,检查列表中是否已安装过JDK如果已经安装过JDK的会有JRE与JDK两个程序在列表中出现,如下图一所示。 图 一分别删除卸载这2个程序。 二、安装前先关闭杀毒软件,以免安装过程中有些程序被误判为病毒, 双击安装文件,如图二所示。选择accept.点击Next. 图 二三、选择安装路径,NEXT以后.出现图三所示的界面,系统默认的的路径是C盘的跟目录。四、点击change改变安装路径如图四。最好安装在某一盘符的跟目录下 图 四 五、选择OK进行程序安装,如图五。 图 五六、安装过程结束,出现图六的界面,是否将IE做为默认浏览器。 图 六七、安装完毕,如图七。 图 七第二节 配置环境变量JDK安装完毕后,开始构筑JAVA开发环境,配置环境变量。右键点击我的电脑属性高级系统环境变量配置两个变量 Path 和 ClasspathPath 变量已经有设置了,点击编辑,需要添加JDK的bin目录。点击编辑添加完成后,系统会在这个目录下找到JAVAC可执行程序来进行JAVA文件的编译,并生成.class文件 Classpath 变量需要添加,点击添加,把一些经常用的路径以及跟目录加上去。其中还包括lik文件夹下的dt和tools两个jar包。当变量值有多个路径的时候用分号分隔;注意,最后一个路径后不要有分号。另外,已经设置好了系统环境变量以后就不要再设置用户的环境变量了,以免他们设置相同的内容而发生冲突。已经设置的最好删除。配置好以后请重新运行命令提示符。第三节 编译并运行JAVA程序以验证环境变量设置正确一、 打开命令提示符 可以用几种不同的方法 1 开始程序附件命令提示符;2 开始运行,如下图,打上cmd回车;3 使用快捷键 WIN+R。 二、用一些常用DOS命令CD DIR等,将目录转换到存放JAVA文件所在的文件夹下,用JAVAC命令将JAVA文件编译,生成class文件。然后再用JAVA命令来运行class文件。注意文件名的大小写。 第二章 2007年6月4日 星期一 授课教师:老刘 学生:王洪峰 第一节 用记事本编写JAVA小程序 首先建立一个文本文档,将名字改为Laoliu.java。然后打开文件,编写如下代码 public class Laoliu public static void main(String args) System.out.println(听老刘的话,一定能掌握Java。); 编写完成后保存、编译、并运行。打印出一段话:“听老刘的话,一定能掌握Java。” 在JAVA程序中,代码的单元叫做类,JAVA文件叫源文件。Class文件叫类文件。注意事项:1、文件应建立在classpath设置的目录中,改名的时候要注意显示扩展名。文件名要和类名保持一致。 2、public class要小写,类名Laoliu的第一个开头字母最好要大写。然后打上大括号;3、程序的下一行是一个JAVA程序的入口函数main方法。一个方法同样得有大括号扩起来,它的格式是固定的,注意这里的String的开头字母S要大写。4、第三行要注意System中的开头字母要大写,(” ”)中的内容就是程序的结果。如果要输出中文不要使用中文的“”。在每个语句结束后,记得加上分号。 第二节 eclipse中文版的基本操作 一、 在eclipse下建立项目 在导航器中点击右键项目JAVAJAVA项目下一步。配置缺省值,在文件夹选项中分别写出源文件夹名src和输出文件夹名classes应用确定下一步完成。 二、 在项目中创建java文件,编写程序,然后运行。 在src上点击右键新建类在名称中填写类名,并创建程序入口main方法,然后点击完成。如果没有显示出行号可按照以下步骤执行。窗口首选项JAVA编辑器显示行号确定。在main方法中写上System.out.println(听老刘的,一定能掌握Java。);按快捷键Ctrl+S保存并生成class文件。如果在程序中有错误,会以红色标记出来。在大纲下显示出类名右键点击类名运行1 JAVA应用程序。在控制台中会显示出运行结果使用eclipse时一些应该注意的地方:1、尽量不要把eclipse文件夹放在桌面上,由于桌面是中文目录,容易产生一些错误。2、eclipse需要JDK1.4以上版本的支持,早期的版本在运行是会出错。 第三节 面向对象的程序设计一、 基本概念数据:可以在计算机中存储的信息称为数据。 变量:程序在计算机中数值可变的数据称为变量,变量包括变量名和变量值。 类: 类是有共同特性事物的抽象集合。 对象:某一事物的具体实例。 类的结构:类包括数据成员(又称字段、域、属性),方法和构造方法。 类的功能:存储数据和实现某个操作。二、 分别用几个程序来实现类的功能 1、 存储数据 public class Student int age=18; int name; 可以用以下程序来测试: public class Studenttest Student stu=new Student(); System.out.println(stu.age);在eclipse中编辑并运行,可得到18这个结果,可以证明类可以存储数据。2、实现某个操作首先定义一个Cat类,这个类中只有一个方法。public class Cat public void zhualaoshu() System.out.println(猫抓到一只老鼠。);然后在Cattest这个测试类中测试public class CattestCat mimi=new Cat(); mimi.zhualaoshu();在eclipse中编辑并运行,可以看到打印出“猫抓到一只老鼠。” 实现了抓老鼠的操作,可以证明类可以实现某一操作。3、既可以存储数据又可以实现一些功能首先定义一个Person这个类,在这个类中定义两个数据成员和吃饭这个方法。public class Personint age=22; int name; public void eat() System.out.println(eating); 在另外一个Persontest这个类中来测试public class Persontest Person whf=new Person(); System.out.println (whf.age); whf.eat();在eclipse中编写以上两个类,运行结果如下图。可证明一个类既可以存储数据又可以实现某一操作。 第四节 包的概念和导入包一、JAVA语言中每个类都会生成一个类文件.class。为了有效管理这些类文件,JAVA提供了包的概念,一个包就相当于操作系统的文件夹,包中的类就相当于文件。定义包:用关键字package创建一个包 package+包名+分号package china;包也可以有类似文件夹的层次结构,用“.”来分隔。package china.heilongjiang.harbin;二、导入包:当想要使用一个包中的类时,应该使用包名加类名的形式,这种方法非常不方便。为此可以使用import关键字来导入一个包中的类。import china.honglongjiang.harbin.Xindongfang;三、在eclipse中创建包和导入包首先创建一个类:Xindongfang,它在china.heilongjiang.harbin这个包中编写以下代码:package china.heilongjiang.harbin;public class Xindongfang public int studentnum; public int teachernum; public void shouxuefei() System.out.print(我交了13300。);在test包中创建Xindongfangtest这个类,用来测试。编写代码如下:package test;import china.heilongjiang.harbin.Xindongfang;public class Xindongfangtest public static void main(string args) Xindongfang yibo=new Xindongfang(); yibo.studentnum=150; yibo.teachernum=22; System.out.println(yibo.studentnum); System.out.println(yibo.teachernum); yibo.jiaoxuefei(); 第三章 2007年6月5日 星期二 授课教师:老刘 学生:王洪峰 第一节 处理数据成员的两种方式和构造方法一、 处理数据成员的两种方式 1、 int age; 只定义成员数据的类型 2、 int age=0; 定义的同时给它赋值二、测试其他类型数据成员的默认值 测试程序入下 public class Morenbyte b; short s; int i; long l; float f; double d; char c; boolean bool; public class MorenTest public static void main(String args) Moren m=new Moren(); System.out.println(m.b); System.out.println(m.s); System.out.println(m.i); System.out.println(m.l); System.out.println(m.f); System.out.println(m.d); System.out.println(m.bool);三、构造方法构造方法是一个特殊的方法。1、 默认的构造方法:如果一个类没有构造方法,系统会默认一个与类名相同的方法,(例如:Xindongfang() )它的作用是创建一个对象。当我们用以下命令创建一个对象的时候就使用的系统默认的构造方法:Xindongfang yibo=new Xindongfang(); 2、有参数的构造方法:他的作用是创建对象的同时为它的数据成员赋值。 例如: public Xindongfang(int a,int b) studentnum=a; teachernum=b; 当我们创建对象的时候就可以直接赋值给studentnum和teachernum。Xindongfang yibo=new Xindongfang(140,33);注意:如果写了有参数的构造方法,系统就不提供默认的构造方法了Xindongfang yibo=new Xindongfang(); error. 如果有多个构造方法时,其形式可以多样化。这里要注意创建一个对象时,要与构造方法中的类型、顺序、个数都一致。 举一个实际例子:package china.heilongjiang.harbin;public class Xindongfang public int studentnum; public int teachernum;public Xindongfang()/默认的构造方法 public Xindongfang(int a,int b) /有参数的构造方法 studentnum=a; studengnum=b; public void shouxuefei() System.out.print(我交了13300。); 第二节 怎么样读程序写注释 经常读一些程序可以提高阅读编码的速度,使自己对程序中的概念更加清晰,可以在理解的基础上为java代码写注释,有助于java的学习。 举一个例子说明:package test;/创建一个名叫test的包import china.heilongjiang.harbin.Xindongfang;/导入china.heilongjiang.harbin包中的Xindongfang这个类public class XindongfangTest /创建一个用来测试Xindongfang这个类的类.取名叫XindongfangTestpublic static void main(String args) /在这个类中添加入口函数,作为程序的入口Xindongfang yibo=new Xindongfang();/调用默认的构造方法来创建yibo这个对象yibo.studentnum=130;/把130赋值给yibo对象的studentnum属性yibo.teachernum=22;/将22赋值给yibo对象的teachernum属性Xindongfang yibo1=new Xindongfang(140,25);/调用有参数的构造方法来创建yibo1这个对象,并为其数据成员赋值。System.out.println(yibo.studentnum);/在控制台输出yibo对象的studentnum的属性值System.out.println(yibo1.teachernum);/在控制台输出yibo1对象的teachernum的属性值yibo.jiaoxuefei();/调用yibo对象的jiaoxuegei方法 第三节 变量 变量有两种:1、 类变量一个类中的变量叫类变量也叫全局变量,类变量可以在该类的所有方法中使用。 2、局部变量 在方法中的变量叫局部变量也叫临时变量,局部变量不可声明为public 它只能在自己的方法中使用,在其他的方法中不能使用,在使用前必须先定义再赋值。 int b=0; 定义变量 int c; 声明变量 c=0; 为变量赋值 第四节 用eclipse来调试java程序调试方法可以让程序一行一行的运行。1、设定断点: 双击蓝边出现一个蓝点,弹出对话框点是。 运行调试方式java应用程序记住决定是单步跳入 F5 可以进入方法内部单步跳过 F6 让程序一行一行执行2、调试完毕返回原来的界面: 点击软件上面的资源 或者 窗口打开透视图其他资源确定。 第四章 2007年6月6日 星期三 授课教师:老刘 学生:王洪峰 第一节 在java语言中变量的赋值 一、基本类型变量的赋值 int i=1; 首先计算机会在内存当中开辟一块空间,用来存放i的地址,在另外一个空间中用来存放i的值,空间的大小由i的类型决定。当我们把1这个值赋给i时,i的地址就指向了存放数据1的这个空间。当我们对i进行操作的时候,计算机会先找到i,再找到的这个地址,把数据1读取出来。 int i=1; int j=2; i=j; 同样道理。计算机分别为i和j分配内存空间,将地址分别指向存放数据的内存空间。当执行j=i这个操作时,计算机会先找到i ,然后把i的值赋给j。注意,在进行两个变量之间赋值时,它们的类型要保持一致。 总之,基本类型变量赋值过程是一个值传递的过程。二、引用类型变量的赋值 对象也是一种数据类型,叫引用类型,也是一个变量。 String是一个特殊的类,他在创建对象的时候可以直接为他赋值。 例如:String name=”tom”;我们可以举个例子来说明引用类型变量的赋值过程:public class Student int age; String name;public class StudentTest public static void main(String args) Student tom=new Student(); tom.age=20; =”tom”; Student harry=new Student(); hurry=tom; Student may; May=tom 下面我们来分析它们的赋值过程: Student tom=new Student();当执行这个语句时,计算机为tom这个对象分配一个空间,用来存放tom的地址,当我们使用new关键字去创建tom对象时,会根据其所有的成员变量的类型分配相应的空间大小用来存放相应数据成员数据的数据:一个空间放age,将age的地址指向它的值20所对应的空间;另一个放name,将name的地址指向它的值“tom”所对应的空间。tom的地址指向age和name这堆空间。 Student hurry=new Student(); 同理hurry也为其数据成员分配了内存空间,并为它的age属性赋值25。而name使用了String类型的默认值null. hurry=tom; 是将hurry的地址指向tom的空间中,这样tom和hurry就会共用一块空间。这个空间的名字既可以叫tom也可以叫hurry。当我们改变任意一个对象数据成员时,另外一个对象的相应的数据成员也会跟着改动。 而 may=hurry;的道理和hurry=tom;的道理是一样的。区别只是没有为may的数据成员分配内存空间。 总之,引用类型变量之间,传递的是对象的引用。它们的类型必须是一致的,与基本数据类型的值传递有本质上的区别。 第二节 面向对象的程序设计一、如何设计数据成员 在设计数据成员时首先要考虑它的类型,例如:温度可以定义为byte类型,因为温度在我们的日常生活中不会超过-128-127这个范围。其次,要为数据成员起一个有意义的名字,这样会方便程序的阅读。最后,最好为它加上注释。二、如何设计方法 1、没有返回值的方法(void方法) 该方法被执行后,其结果不会被储存,当我们不需要使用方法的运行结果时。可设计为void方法。 例如:public void fun() System.out.println(“没有返回值。”) 2、带有返回值的方法 该方法在定义时,首先要定义它的返回值类型,然后用return语句将运行的结果返回,返回值的类型既可以是基本数据类型也可以是引用类型,但一定要与方法定义的类型保持一致,另外还要注意,在return语句后不要再写其他代码了,因为在一个方法中执行到return语句的时候就不会再往下执行了。 当我们需要使用方法的运行结果时,可设计带有返回值的方法。 例如:public int fun() int i; int i=1+2; return i; 这时候我们可以把i的值返回出来,用于其他地方。3、带有参数的方法 定义方法时,方法中的参数叫做形式参数,简称形参;在调用方法时的参数叫实参。 参数的作用:提供方法执行的必要条件 带有参数的方法可以使该方法的功能更强。例如:public class LuCheng public int fun(int v, int t) int s = v * t; return s; public class TestLuCheng public static void main(String args) Lucheng tobeijing = new Lucheng();int a = 3;int b = 4;int val = tobeijing.fun(a,b);System.out.println(val = + val);三、如何设计一个可读性更强的程序1、一个类只实现一个功能2、将这个功能分几个步骤完成,每个方法都完成单一的步骤。3、创建一个总的方法,将其他的方法放入其中进行汇总。4、创建另外一个类作为程序的入口。然后调用汇总的方法。调用方法的顺序不分先后。注意:不要将方法相互调用,以免进入死循环。例如:public class Student int age; String name;public class StudentGrow public void xiaoxue()System.out.println(上小学);public void zhongxue()System.out.println(上中学);public void daxue ()System.out.println(上大学); public void shangban()System.out.println(上班);public void count()xiaoxue();zhongxue();daxue();shangban(); public class StudentGrowTest public static void main(String args) StudentGrow tom=new StudentGrow(); tom.count(); 第五章 2007年6月7日 星期四 授课教师:老刘 学生:王洪峰 第一节 java程序中的一些基本概念一、分隔符、标识符和关键字 1、分隔符: java程序中分隔符有三种:分号 ;大括号 和空格。 分号的作用:语句必须以分号作为结束标记。 大括号的作用:可以将一组语句扩起来。用来限定类、方法、以及循环等的作用范围 空格的作用:用来分隔两个程序要素,如:关键字与变量、类、对象之间必用空格进行分隔。 2、标识符: java中的标识符是给方法、变量或其他自定义项所起的名称。 标识符不能使用java程序中的关键字,它可以由数字、字母、美圆符号和下划线的连续组合而成,各符号之间没有空格。标识符的第一个符号必须为字母、下划线或美圆符号。标识符对大小写敏感,长度无限制。 3、关键字: 关键字是对编译器有特殊意义的固定单词,不能在程序中做其他目的的使用。java语言目前定义了50个关键字,这些关键字不能作为标识符来使用。如果定义一个变量,在eclipse上显示的是红色的,那么它就是关键字,不能作为变量使用。 java语言的关键字都是小写的,goto const也是关键字。为了是程序清晰及可读性,要尽量避免使用关键字的其他形式, 如:Public。 第二节 数据类型 一、整数类型: 1、整数常量: 整数常量有三种表达形式: 十进制整数 如12,-314,0。 八进制整数 要求以0开头 如 012。 十六进制整数 要以0x开头 如0x8c6。 2、整数类型的变量有四种byte short int long,它们的定义方法如下图: 二、引用类型: 引用类型的变量包括类、数组和接口。 引用类型变量的作用: 1、引用类型的变量可以作为数据成员来使用。举例来说明public class Chengji/创建一个名叫Chengji的类,用来存储学生的成绩。 int math; /定义一个整数类型的数据成员math用来存储数学成绩 int english; /定义一个整数类型的数据成员english用来存储英语成绩public class Student /创建一个名叫Student的类,用来存储学生的基本信息int age; /定义一个整数类型的数据成员age用来存储学生的年龄String name; /定义一个字符串类型的引用变量name来存储学生的姓名Chengji cj; /定义一个Chengji类型的引用变量cj用来存储学生的成绩public class Test /创建一个用来测试用的类Test,用来测试如何初始化引用变量类型数据成员public static void main(String args) /创建main方法作为程序的入口Student std = new Student (); /用默认的构造方法创建一个Student的对象std;std.age = 20; = Tom;/初始化std对象的年龄和姓名 Chengji tom = new Chengji(); /用默认的构造方法创建一个Chengji类型的对象tom tom.math = 80; tom.english = 60; /初始化tom对象的数据成员math和english std.cj=tom; /将std对象的cj属性指向tomSystem.out.println(std.age);System.out.println();System.out.println(std.cj.math);System.out.println(std.cj.english); /在控制台输出该学生的各个属性值2、引用类型的变量可以作为方法的返回值举例说明:public class Student /创建一个Student类/定义两个数据成员分别存储学生的年龄和姓名int age;String name;public class StudentFun /创建名叫StudentFun的类,用来设计一个方法public Student fun() /这个方法返回Student类型的变量Student tom=new Student();/初始化一个对象tom,并为其属性赋值tom.age=22;=Tom; return tom;/将tom这个对象的信息返回public class Test /创建测试类Test,作为程序入口/测试引用类型变量tom的返回值public static void main(String args) StudentFun whf=new StudentFun();/创建StudentFun对象whf用来调用fun方法Student jack=whf.fun();/声明一个Student类型的jack变量将fun方法返回的引用取出来/也就相当于给tom起了个外号叫jack/通过对jack的数据成员的访问来获取tom的信息System.out.println();System.out.println(jack.age);/在控制台打印出tom的信息姓名、年龄 第六章 2007年6月8日 星期五 授课教师:老刘 学生:王洪峰 第一节 运算符和表达式 数据的类型除了限定数据的存储方式、取值范围之外,还定义了对该数据类型进行的操作,既运算。表示各种不同运算的符号叫运算符,参与运算的数据叫操作数。 表达式是符合一定语法规则的运算符和标识符的序列算术运算符: 如+、-、+、-、*、/、%。关系运算符: 如、=、&、|、条件运算符: 如?:赋值运算符: 如=扩展运算符: 如+=、-=、*=、/=其他运算符: 如new、instanceof一、算数运算符:使用算术运算符的时候要注意:如果操作数都为整型,那么只要其中有一个long型,那么表达式结果也是long型;其他情况下,即使两个操作数全是byte或short型,表达式的结果也是int型;如果操作数为符点型,只要其中有一个double型,表达式结果就是double型,只有两个操作数都是float型,或者其中一个是float型另外一个是int型的时候,才是float型。对于取模运算符“%”操作数可以为符点型。另外还要注意,当进行/和%运算的时候,除数为0会出现异常。各类型数据的自动转换byteshortcharintlongfloatdouble 举例说明: 另外,java的对运算符进行了扩展,可以与字符串相连接:如”abc”+”de”.得到字符串”abcde”. 5+5+”hello”+5+5.得到字符串”10hello55” 除此之外,还有i+ ,i-,+i,-i等。 i+的意思是 i=i+1; +i的意思是 i=i+1 j=i; 返回j的值。 i- , -i与i+, +i类似例如:执行int i=5;a=(i+)+(+i)+(-i)+(i-);后 a=5+7+6+6=24; i=5.二、关系运算符:关系运算符的结果是boolean型的,只能是true或false.关系运算符常与布尔运算符一起使用,作为流程控制语句的条件。三、布尔运算符:这里要注意,java中的&和|采用电工中的短路方式进行运算对于&先进行运算符左面的表达式进行运算,如果是false就不会对右面进行运算。同理对于|,如果左面的表达式是true,就不会对右面进行运算。四、位运算符:五、赋值运算符六、三目运算符、语法格式:x?y:z;其中x是boolean类型的,当x=ture时,其结果为y,当x=false时,结果为z;注意:要保证冒号两边的数据类型是相同类型。七、各类运算符的优先级 在对一个复杂的表达式运算的时候,要按运算符的优先顺序从高到低进行,同级的运算符则按从左到右的方向进行,下表列出了运算符的优先顺序。如果搞不清,可以加上(),这样就可以明显的标明运算顺序。 第二节 流程控制语句一、if-else:格式:if(条件) 代码块1 else 代码块2 当需要处理多个分支时:if(条件1) 代码块1 else if (条件2) 代码块2 else if (条件3) 代码块3else(条件N) 代码块N 这里要注意,尽量不要使用多个if-else 分支。这样做对于程序的维护会带来很大困难。举个例子:public class If1 public static void main(String args) int age=24;if (age18) System.out.println(未成年); else if (age=18) System.out.println(青年人); else if (age=25 & age55) System.out.println(中年人); else System.out.println(老年人); 二、多分支结构switch语句: 当处理多个分支结构时,使用if-else就显得非常麻烦。因此,java也给我们提供了多分支结构switch。switch结构根据表达式的值从多分支结构中选择一个来执行。它的一般格式为:switch(变量) case 情况1:语句1;break; case 情况2:语句2;break; case 情况3:语句3;break; . case 情况N:语句N;break;default: 语句N+1;break; 1、switch括号中的变量只能是byte short int char中的一种,多分支结构把变量的值与列出的情况想比较,遇到相匹配的则执行该情况的语句。 2、如果没有找到任何一个相匹配的则执行default语句。 3、break语句用来执行完一个case分支后,使其跳出switch结构。如果多个相邻的case执行同一个操作,可以在这些case的最后一个加上break。 4、比较if-else与switch结构。 switch的功能可以用if-else实现,但在某些情况下,使用swich结构更清晰、简单,可读性强,程序执行的效率也得到提高。 但是swich结构在数据类型上受到了限制,即只能使用byte short int char中的一种,如果是其他类型的就不能使用switch结构,但是用if-else可以实现。switch结构程序举例:public class Case public void fun(int i)switch(i)case 1:case 2:System.out.println(不是1就是2);break;case 3:System.out.println(肯定是3);break;default:System.out.println(肯定不是1、2、3);public class Casedemopublic static void main(String args) Case c=new Case(); c.fun(5); 控制台打印出:肯

温馨提示

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

评论

0/150

提交评论