Java学习心得_第1页
Java学习心得_第2页
Java学习心得_第3页
Java学习心得_第4页
Java学习心得_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

1 在面向对象部分的代码至少要写五遍 而且不准出任何的错误 2 javaSE 的应用部分 java 的面向对象 java 类集 java IO JDBC 会完整编写 3 使用 public class 声明时 类名必须与文件名完全一致 但是用 class 声明时 类名与文 件名可以不一致 但是执行 java 类名 的时候必须一致 4 在一个 Java 的文件中 只能有一个 public class 的声明 但是允许有多个 class 的声明 5 数据的溢出 任何一种数据都有其最大的取值 如果已经是最大的值 则加 1 会变成 最小值 如果是最小减 1 会变成最大值 6 一个常量在 java 中默认是 int 型 一个小数在 java 中默认的类型是 double 7 数据类型的转换 如果遇到的是字符串 则所有的类型都向字符串转换 8 数组的声明 声明时直接开辟内存空间 数据类型 数组名称 new 数据类型 长度 数据类型 数组名称 new 数据类型 长度 分步声明 声明数组 数据类型 数组名称 null 实例化数组 数组名称 new 数组类型 长度 9 数组开辟的内容都使用默认值表示 如果想要为数组的元素赋值 则需要通过下标的方 式进行访问 10 栈内存只是给数组起了个名字 堆内存才真正的存放数组的内容 11 二维数组 动态初始化 数组类型 数组名称 new 数组类型 长度 长度 静态初始化 数组类型 数组名称 1 2 3 1 5 12 方法就是一段可重复调用的代码段 但是现在的方法是使用主方法直接调用的 所以定 义格式为 public static 返回类型 void 方法名称 参数列表 return 返回内容 13 方法的重载就是方法的名称一样 但是方法中的参数类型和个数不一样 实际上 System out println 可以接受任意类型的参数 所以此方法也属于方法的重载 14 在方法的操作存在一种称为递归调用的形式 所谓的递归调用就是指自己调用自己 15 一个方法可以接收一个数组或者返回一个数组 但是在接收数组的时候 一定要注意 数组是引用数据类型 所以方法中对数组所作的一切修改 最终都会被保留下来 16 不管是接收数组还是返回数组 实际上是最终都是要以数组的形式接收和返回 17 在 java 中提供了很多与数组操作有关的方法 例如排序 Java util Arrays sort 数组名称 进行排序的操作 18 从原数组中拷贝到目标数组的部分内容 System arraycopy 原数组名称 下标 目标数组 拷贝程度 19 foreach 输出数组 语法格式 for 数据类型 变量 数组名称 20 在正常情况下 一个方法在调用是必须明确的指定传入的参数 而且参数的个数必须统 一 但是在 jdk1 5 以后 在声明方法的参数时 加入了可变参数 Public static 返回值类型 数组名称 数组类型 参数名称 这样一来 在传入参数的时候就可以传递任意多个了 而且全部的参数都是以数组的形式 接收的 21 封装性 对外部不可见 保护类中的操作不被外部直接访问 继承性 多态性 方法的重载 对象的多态性 22 在堆内存中实际上存放的是对象的各个属性 因为对象中只能依靠属性的不同来区分 23 全部的方法保存在全局代码区之中 24 一个栈内存只能引用一个堆内存空间 但是一个堆内存可以被多个栈内存所同时拥有 25 在 java 中封装性有很多的体现 但是最简单的体现就是加入 private 关键字 封装属性 private 数据类型 属性名称 默认值 封装方法 private 返回值类型 void 方法名称 参数列表 26 一个重要的概念那就是 只要是属性就必须封装 被封装的属性通过 setter 及 getter 方 法设置和取得 例如 name 属性 setter setName getter getName 27 在访问类中其他方法时 为了保证此方法是本类中定义的 可以在方法前加上 this 关键 字 this 方法 即为调用本类方法 28 在类中也可以使用 private 关键字声明一个方法 但此方法只能在类的内部进行访问 外 部是无法调用的 29 在每个类中都存在着一个构造方法 构造方法的主要目的是为类中的属性初始化 Person per new Person 实际上此 就表示调用的是一个方法 那么这个方法实际上就是构造方法 构造方法的定义要求如下 构造方法的名称必须与类名称一致 构造方法定义时没有返回值类型的声明 不能在构造方法中使用 return 返回一个内容 如果在一个类中没有明确声明一个构造方法的话 则会自动生成一个无参的什么都不做的 构造方法 30 当使用关键字 new 的时候才会调用类中的构造方法 构造方法本身是可以进行重载的 重载的原则与普通方法一致 31 构造方法一点是在使用关键字 new 的时候才进行调用的 而且一个类中允许至少存在 一个构造方法 32 匿名对象是只使用一次的对象 使用一次之后将被垃圾收集 33 类的开发步骤 题目 7 根据需求定义出所要的类 根据题目的要求划出类的属性 所有的属性必须封装 private 所有的属性必须通过 getter 或 setter 访问 如果需要构造方法的话 为属性赋值 所有的信息不要在类中直接输出 而是交给调用处输出 在类中不能出现 System out println 语句 34 面向对象的三大特点 封装性 继承性 多态性 35 String 本身就是一个类 在 String 类中定义了如下的构造方法 Public String String original 可以接收一个 String 类的对象 并重新实例化 String 对象 除了此方法之外 String 还可 以直接采用赋值的方法进行对象的实例化 String str1 new String Hello String str2 World 36 实际上 对于 比较的是两个对象的地址是否相等 比较两个字符串的内容 需要使用 String 类中的 equals 方法完成比较 此方法定义如 下 public boolean equals String str 37 一个字符串实际上就是 String 的匿名对象 一个字符串的内容使用 括起来 那么一个字符串的常量实际上本身就是属于 String 的 一个匿名对象 38 可以发现 上面的程序开辟了两个内存空间 与直接赋值相比 肯定使用直接赋值的方 式方便 所以在开发中 绝对不能使用关键字 new 调用 String 类的 String String org 的 构造方法 40 字符串 String 的内容一旦声明就不可在改变 实际上来讲 字符串变量的改变只是改变了内存空间的地址指向 而本身的字符串内容 没有任何的变化 41 在开发中 以下的开发代码绝对是要避免的 以上操作代码要不断的断开已有的连接 只向新连接 100 次 整体代码的性能极差 所以 遇到此类代码绝对不要使用 42 43 this 在 java 中表示以下概念 调用类中的属性 this 属性名称 调用类中的方法 this 方法名称 调用类中的构造方法 this 表示当前对象 this 44 通过 this 关键字调用本类中的其他构造方法 调用形式为 this 的形式 45 所有的构造方法应该是在对象操作之前最早调用的 所以使用 this 调用构造方法的时候 this 语句放在构造方法的首行 46 在使用 this 调用构造方法的时候至少有一个构造方法是没有使用 this 调用的 而此构 造方法将作为调用的出口 一般这个出口都会使用无参构造完成的 47 this 有一个重要的概念就是表示当前的对象 当前正在调用类中方法的对象 称为当前 对象 48 一个对象在类的外部不能直接访问类中的私有成员 如果现在一个对象在类的内部呢 那么他就能够访问私有成员 49 如果要将一个属性设置成公共属性 则就需要使用 static 关键字声明 50 51 一般情况下 对于使用 static 声明的属性都使用类名称直接调用 形式如下 类名称 static 属性 52 static 除了可以声明属性之外 还可以定义方法 使用 static 定义的方法可以由类名称直 接调用 53 static 的方法只能调用 static 的属性或方法 不能调用非 static 的属性或方法 因为静态的属性和方法可以在没有实例化对象的时候调用 而普通的方法和属性 肯定只有在对象实例化之后才有可能调用 54 主方法上也存在 static 关键字 那么主方法的含义是什么 public 表示最大的权限 所有人都可以访问 static 因为执行的时候执行的就是类名称 所以表示可以由类名称直接调用 void 因为主方法是一切的起点 所以表示没有返回值 main 系统内建的方法名称 String args 表示字符串数组 用于接收参数用于接收参数 55 56 程序的内存划分为 栈内存 对象名称 实际上是对象对堆的引用地址 堆内存 属性值 全局代码区 保存所有的操作方法 全局数据区 保存所有的 static 属性 57 程序的开发思路 题目 11 完善基本功能 改善功能 加入一些验证 形成更好的结构 加入一些类的设计 主方法中不能编写过多的代码 58 对象数组 就是包含了一组对象 但是对象数组使用时需要注意以下几点 声明对象数组格式 类名称 对象数组名称 new 类名称 长度 但是这样开辟之后 数组中的每个内容都是 null 值 需要进行单独实例化操作 59 60 61 static 的一些相关应用 1 使用 static 可以统计一个类产生了多少个实例化对象 因为 static 的属性是所有对象共享的 2 在开发中还可以使用 static 进行自动的命名操作 62 内部类 在一个类的内部还有另外的一个类 从代码中看 内部类的缺点就是程序的结构看起来很混乱 内部类唯一的优点就是 在于方便的访问外部类外部类中的私有私有成员 如果要在外部直接使用内部类的实例化对象 外部类 内部类 内部类对象 外部类对象 new 内部类 63 一个内部类如果使用 static 关键字声明的话 则此内部类就将成为外部类 可以直接通 过外部类 内部类的形式访问 形式如下 外部类 内部类 内部类对象 new 外部类 内部类 64 内部类可以在任意的地方使用 例如 在方法中声明 重点 在方法中定义的内部类 可以直接访问外部中的各个成员 但是要访问方法中的参 数 则在参数上要使用 final 关键字 65 递归调用 就是自己调用自己 66 继承的限制 在 java 中不允许多重继承 一个子类只能继承一个父类 在 java 允许多层继承 A 继承 B B 继承 c 在继承中不能直接访问父类的私有操作 67 方法的覆写 子类定义了与父类同名的方法 发生在继承的关系之中 在方法覆写的时候一定要注意访问权限的问题 从父类到子类被覆写的方法访问权限 只能更宽松而不能更严格 访问权限的严格度从大到小 private default 默认的 public 68 只要是使用子类实例化对象 调用的方法也被子类覆写过 则永远调用的是覆写过的方 法 69 如果希望调用父类中被子类覆写过的方法 则只能通过 super 方法 的形式调用 70 final 关键字关键字 声明类 声明的类不能有子类声明的类不能有子类 声明方法 声明的方法不能被子类所覆写 声明属性 声明的属性就成为常量 常量是不可以修改的 在 java 中如果使用 final 声明一个常量的话 则常量的标识符必须全部大写 在 final 中也存在一个很重要的概念 全局常量 使用 public static final 声明的常量称为全 局常量 71 抽象类 重点 抽象类 重点 抽象类 包含一个抽象的方法的类称为抽象类 抽象的方法是只声明而未实现的方法 所有的抽象方法必须使用 abstract 关键字声明 所有的抽象类也需要使用 abstract 关键字声 明 对于抽象类来讲 不能直接进行实例化的操作不能直接进行实例化的操作 但是可以声明对象 如果 要想使用抽象类 则必须依靠子类依靠子类 抽象类是必须被子类继承的继承的 而且被继承的子类 需要实现 也就是覆写抽象方法覆写抽象方法 抽象类中的全部抽象全部抽象方法方法 抽象类能否使用 final 声明呢 抽象类必须被子类继承 被 final 声明的类不能有子类 所以抽象类不能使用 final 声明 抽象类中允许有构造方法 但是此构造方法是不能直接被调用的 子类对象的实例化 过程中 永远是先调用父类中的构造方法 实际上来讲 抽象类就是比普通方法多了一个抽象的方实际上来讲 抽象类就是比普通方法多了一个抽象的方 法而已 法而已 72 接口 重点 接口 重点 接口是一个抽象的类 在 java 中接口是由抽象方法和全局常量抽象方法和全局常量组成的 在 java 中使用 interface 定义一个接口 接口与抽象类一样 需要子类 那么子类此时不在称为继承类 而是实现接口实现接口 通 过 implements 关键字实现 一个类只能继承一个父类 但是一个类可以同时实现多个接口 如果一个类既要实现接口又要继承抽象类的话 则必须按照以下的形式完成 class 子类 extends 抽象类 implements 接口 A 接口 B 一个抽象类可以实现多个接口 但是一个接口不能继承一个抽象类 一个接口虽然不可以继承一个抽象类 但是一个接口可以同时继承多个接口 接口实际上是作为一个标准存在的 接口实际上是作为一个标准存在的 73 对象的多态性 因为多态性的存在 才可以让程序变得更加灵活 方法的重载和方法的覆写实际上就属于多态的一种体现 真正的多态性还包含了一种称为对象多态性的概念 对象多态性主要指的是 子类和父类对象的相互转换关系 向上转型 父类 父类对象 子类实例 自动完成 例如 A a new B 向下转型 子类 子类对象 子类 父类实例 强制完成 例如 B b B a 此异常是最容易出现的的异常 编译时不会出错 但是在解释执行时会出现以上错 误 表示类转换异常 造成的根本原因是两个没有关系的类进行相互 转换的操作 74 抽象的应用抽象的应用 从对象多态性的概念上来看 子类为父类实例化是一个比较容易的操作 因为可以 发生自动向上转型的关系 那么调用的方法永远是被子类覆写过的方法 那么此时可以利用此概念通过对象多态性为抽象类实例化 抽象类最大的用处就在于模版的设计 75 接口与抽象类的区别 接口与抽象类的区别 No比较点比较点抽象类抽象类接口接口 1组成组成抽象方法 普通方法 常量 变量 构造方法 抽象方法 普通方法 常量 变量 构造方法 全局常量全局常量 抽象方法 全局常量抽象方法 全局常量 2定义定义abstractInterface 3子类子类子类通过子类通过 extends 继承抽象类继承抽象类子类通过子类通过 implements 实现接口实现接口 4限制限制一个子类只能继承一个抽象类一个子类只能继承一个抽象类一个子类可以同时实现多个接口一个子类可以同时实现多个接口 一个抽象类可以实现多个接口一个抽象类可以实现多个接口一个接口中可以包含多个抽象类一个接口中可以包含多个抽象类5关系关系 一个抽象类中可以包含多个接口一个抽象类中可以包含多个接口一个接口中可以包含多个抽象类一个接口中可以包含多个抽象类 模板设计模板设计工厂设计 代理设计工厂设计 代理设计6设计模式设计模式 两个一起操作可以完成适配器设计两个一起操作可以完成适配器设计 7实例化实例化都是通过对象的多态性 通过子类进行对象的实例化操作都是通过对象的多态性 通过子类进行对象的实例化操作 8实现限制实现限制存在单继承局限存在单继承局限不存在此类局限不存在此类局限 9特性特性表示一个标准 一种能力表示一个标准 一种能力 以上表格中可以发现 如果抽象类和接口同时都可以使用的话 以上表格中可以发现 如果抽象类和接口同时都可以使用的话 优先使用接口 因为接口可以避免单继承的局限 优先使用接口 因为接口可以避免单继承的局限 75 jdk 的配置 环境变量的配置 的配置 环境变量的配置 java home Jdk 路径路径 Path java home bin Classpath java home lib dt jar 生成生成 class 文件是为了跨越平台文件是为了跨越平台 JDk 包含包含 jvm 和和 JDk 开发工具开发工具 Jre java rountine environement java 的运行环境的运行环境 包括包括 Jvm java 平台核心类 平台核心类 Jdk java development kit java 开发工具包开发工具包 Jvm java virtual machine java 虚拟机 用于执行虚拟机 用于执行 java 程序程序 对一维数组的输出对一维数组的输出 比如比如 s 是其中的对象 是其中的对象 fun 是需要调用是需要调用 的方法的方法 for int x 0 x s length x System out print s x 对二维数组对二维数组 在表格的显示上应用在表格的显示上应用 的输出的输出 比如比如 s 是其中的是其中的 对象 对象 fun 是需要调用的方法是需要调用的方法 for int i 0 i s length i for int j 0 j 存储大量的数据 它是系统的一个类 存储大量的数据 它是系统的一个类 19 for 循环 循环 它是用来多次循环做同一件事它是用来多次循环做同一件事 循环的次数 循环的次数 i 固定固定 是固定的 是固定的 20 类也是数据类型类也是数据类型 A a new A a 的数据类型就是的数据类型就是 A 21while 它是用来它是用来无数次无数次的做同一件事的做同一件事 当次数当次数不固定时不固定时 通常选 通常选 while Iterator 迭代器 迭代器 类类 取出存储的值 取出存储的值 Iterator it l iterator 1 属性的类 值对象 属性的类 值对象 Value Object VO 作用就是存值 为 作用就是存值 为 了给方法传值 了给方法传值 2 如果存在如果存在继承关系继承关系的话 在声明对象时 可以用父类来声明也的话 在声明对象时 可以用父类来声明也 可以用子类来声明 但是只能使用父类的方法 用父类声明的对可以用子类来声明 但是只能使用父类的方法 用父类声明的对 象 象 3 父类的范围比子类的大 父类的范围比子类的大 相当于 相当于 int double 自动转换 自动转换 4 多态 一种形态 多种表现形式 多态 一种形态 多种表现形式 重载 覆写 在继承中 重载 覆写 在继承中 5 属性名称 变量名称 无需加双引号 否则就需加双引号 属性名称 变量名称 无需加双引号 否则就需加双引号 6 在不同的包中进行方法的调用 就需要将那方法的包导入到 在不同的包中进行方法的调用 就需要将那方法的包导入到 此包中此包中 7 调用本类 普通方法 中的方法 只需写上方法名称在那需呀调用本类 普通方法 中的方法 只需写上方法名称在那需呀 调用的方法中 调用的方法中 8 从控制台输出信息从控制台输出信息 BufferedReader br new BufferedReader new InputStreamReader System in 9 将内容写到文件中 硬盘 将内容写到文件中 硬盘 FileWriter fw new FileWriter true fw write fr close 10 将文件中的内容读到控制台将文件中的内容读到控制台 9 BufferdeReader br new BufferedReader new InputStreamReader new FileInputStream 以上三个 以上三个 8 9 10 都需要加在异常中 都需要加在异常中 try catch Exception e e printStacktTrace 1 静态块 为属性初始化 静态块 为属性初始化 static 2 给对象赋值必须通过实例化类给对象赋值必须通过实例化类 3 给对象属性赋值通过方法 给对象属性赋值通过方法 4 String StringBuffer StringBuilder 都是字符串都是字符串 String 不可以改变字符串 而不可以改变字符串 而 StringBuffer 可以改变字符串的内可以改变字符串的内 容 容 StringBuffer 类有类有 insert 方法和方法和 append 方法 方法 StringBuffer 类类 线程安全 线程安全 StringBuffer 效率不好 效率不好 StringBuilder 类类 线程不安全 但效率高 也有线程不安全 但效率高 也有 insert 方法和方法和 append 方法 方法 1 异常 异常 Exception try 是用来检测异常的是用来检测异常的 catch Exception e e printStaceTrace 是用来捕获异常的是用来捕获异常的 两种情况两种情况 是在自己意识到程序将会出现错误时 加上是在自己意识到程序将会出现错误时 加上 try catch 2 是系统强加需要加上异常 是系统强加需要加上异常 try catch Finallly 用法 保证资源的释放 例如 用法 保证资源的释放 例如 public class FinallyTest FileWriter fw public void fun try fw new FileWriter f zhao zhao txt fw write aaaaaaaaaaaaa catch Exception e e printStackTrace finally try fw close catch Exception e e printStackTrace 1 类的对象比较时 equals 方法比较的是地址 也比较的是地址 而字符串类里的 equals 方法比较的是值 2 Object 类 它是所有类的父类 此类有以下几个重要的方法 Clone 创建并返回此对象的一个副本 需要实现 Cloneable 此接口 做快照 toString 返回此对象的字符串 就是他的地址 equals 比较的是地址 finalize 当对象被销毁时 由垃圾回收器来调用 3 Math 类 4 System System arraycopy int a 1 2 3 4 b b new int 3 System arraycopy a 1 b 0 3 a 为需要被拷贝的数组 1 表示从第个开始 b 为目的数组 0 表示从 b 的第几个开始考贝 3 表示考几个元素 for int i 0 i b length i System out println b i 5 System currentTimeMillis 打印当前时间的毫秒数 打印当前时间 5 基本数据类型的封装 6 集合 1 集合概念 就是把多个数据存储到一起 在 java 中 为把数据存储到一起 java 提供了集合类 ArrayList LinkedList 区别 在底层 ArrayList 是通过数组实现的 而 LinkedList 是通过双向链表实现的 当 经常对集合中的数据进行增加删除时 用 LinkedList 效率会更高 list 中的数据可重复 HashSet TreeSet TreeSet 集合中的元素升序排列 所以要求 TreeSet 集合中元素要实现 Comparable 接口 区别 HashSet 底层存储数据时 是通过 hashcode 方法生成数据地址 而 TreeSet 底层 是通过树 形结构组织数据的 通常当用到排序时 会使用 TreeSet 其它情况使用 HashSet HashSet 性能优于 TreeSet 注 set 中的数据不能重复 HashMap TreeMap TreeMap 在排序时 是按照 key 值进行排序的 所 key 值必须实现 Comparable 接口 区别 HashMap 在底层是以 hashcode 来指定地址存储数据 而 TreeMap 是以树状来存储数据 HashMap 效率高于 TreeMap 当用到排序时 使用 TreeMap 集合类的组织结构 如图 List 接口 ArrayList LinkedList Set 接口 HashSet SortedSet 接口 TreeSet Map 接口 HashMap SortedMap 接口 TreeMap Collection 接口 List Set 类集 类集 类集的作用就是完成一个动作的对象数组 里面的数据元素可以动态的增加 类集中提过了以下的几种接口 单值操作接口 Collection List Set 其中 List 和 Set 是 Collection 接口的子接 口 一对值的操作接口 Map 排序的操作接口 SortedMap SortedSet 输出的接口 Iterator 队列 Queue List 接口接口 List 最大的 特点就是集合中所装的元素是可以重复的 List 的子类 ArrayList Vector Set 接口接口 最大的特点就是里面没有任何的重复元素 在 Set 接口中有以下的两个子类是最常用 的子类 TreeSet 有序存放 HashSet 散列存放 关于排序的说明 关于排序的说明 在这之前使用的是 String 类的对象向集合中加入 如果现在自定义一个类呢 程序将会出现错误 是因为一个自定义的类本身不知道该如何排序 对象所在的类必须 实现 Comparable 接口 并覆写 compareTo 方法 关于区分对象的说明 关于区分对象的说明 如果在区分对象的时候没有使用系统的类 而是自定义的类 那么自定义的类必须复写 equals 和 hashcode 例如 public boolean equals Object obj TODO Auto generated method stub if this obj return true if obj instanceof Person return false Person p Person obj if this name equals p name else return false Override public int hashCode TODO Auto generated method stub return this name hashCode this age Map 接口接口 Collection 接口是保存单值最大的父接口 那么 Map 接口保存的内容是一对值 所有的内 容是以 key Value 的形式保存的 就类似于电话本 张三 1233 里斯 1553 王五 4562 Map 接口本身有是哪个常用的子类 HashMap Hashtable TreeMap Map 的重要方法 putput key value get Object key Map Map 中的 key 值是不能重复的 一旦重复 就会被覆盖 Map 的最大特点是用于查找操作 如果查找到了则返回内容 否则的最大特点是用于查找操作 如果查找到了则返回内容 否则 返回返回 null hashMap 也属于是无序的操作 也属于是无序的操作 treeMap 按 按 key 排序的子类 排序的子类 Map 不能直接使用不能直接使用 iterator 接口直接输出 接口直接输出 使用非系统类作为使用非系统类作为 key 用于用于 Map 的输出 的输出 Map entry Map 实体实体 Map 接口使用接口使用 Iterator 输出的标准操

温馨提示

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

评论

0/150

提交评论