Java基础

合集下载

Java基础入门第三版课后习题答案

Java基础入门第三版课后习题答案

第1章Java开发入门一、1.对象2.面向对象、跨平台性3.javac4.Java虚拟机(或JVM)5.JRE二、1.错2.错3.错4.对5.对三、1.C2.ABCD3.D4.ABCD5.D四、1.简答性、面向对象、安全性、跨平台性、支持多线程、分布性。

2. Java程序运行时,必须经过编译和运行两个步骤。

首先将后缀名为.java的源文件进行编译,生成后缀名为.class的字节码文件,然后Java虚拟机将字节码文件进行解释执行,并将结果显示出来。

五、HelloWorld.java1 public class HelloWorld {2 public static void main(String[] args) {3 System.out.println("这是第一个Java程序!");4 }5 }第2章Java编程基础一、1.class2.单行注释、多行注释、文档注释3.44.==5.容器、0二、1.对2.错3.对4.错5.对三、1.AC2.A3.BD4.C5.C四、1.Java语言的八种基本数据类型有:byte字节型,占一个字节。

short短整型,占两个字节。

int整型,占4个字节。

long长整型,占8个字节。

float单精度浮点型,占4个字节。

double 双精度浮点型,占8个字节。

char字符型,占两个字节。

boolean型,表示逻辑值,有true 和false两个值,分别占一个字节。

2. 在switch条件语句和循环语句中都可以使用break语句。

当它出现在switch条件语句中时,作用是终止某个case并跳出switch结构。

当它出现在循环语句中,作用是跳出循环语句,执行循环后面的代码;continue语句用在循环语句中,它的作用是终止本次循环,执行下一次循环。

五、1.1public class getSum {2public static void main(String[] args) {3int sum = 0;4for (int i = 1; i < 100; i++) {5if (i % 2 != 0)6sum += i;7}8System.out.println(sum);9}10}2.1public class Test {2 public static void main(String[] args) {3 int i = 1;4 long sum = 1;5 do {6 sum *= i;7 i++;8 } while (i <= 5);9 System.out.println(sum);10 }11}第3章面向对象(上)一、1.封装、继承、多态2.private、default、protected、public3.static4.private5.参数类型参数个数6.this二、1.对2.对3.错4.对5.对三、1.C2.B3.D4.B5.C四、1.面向对象的特点主要可以概括为封装性、继承性和多态性。

java基础ppt课件

java基础ppt课件

03
封装
将对象的属性和方法封装 在类中,隐藏内部实现细 节,仅通过对外提供的接 口进行访问和操作。
继承
子类可以继承父类的属性 和方法,实现代码复用和 扩展。
多态
子类可以重写父类的方法 ,实现同一方法在不同对 象上的不同表现。
接口与抽象类
接口的定义
接口是一种引用类型,用于定义一组 方法的规范,但不包含方法的实现。
抛出自定义异常
在方法中,可以使用throw语句抛出自定义异常。抛出异常时,需要创建一个异 常对象并将其抛出。
异常处理的最佳实践
尽量避免异常
合理使用try-catch语句
保持异常的原子性
提供有意义的错误信息
应该尽量编写健壮的代码,避 免出现异常。例如,进行空值 检查、范围检查等。
不要过度使用try-catch语句, 只在必要时使用。对于可以预 见的异常情况,应该尽量在代 码中处理,而不是依赖于trycatch语句。
可以使用多个catch语句来处理不同类型的异常 ,每个catch语句处理一种特定的异常类型。
自定义异常
创建自定义异常类
可以通过继承Exception类或RuntimeException类来创建自定义异常类。继承 Exception类创建的是检查型异常,而继承RuntimeException类创建的是非检查 型异常。
丰富的API
Java语言提供了大量的API, 涵盖了IO、网络编程、数据库 操作、图形界面开发等方面。
Java语言的应用领域
Web开发
Java语言在Web开发领域有着广泛的应用 ,如Servlet、JSP、Struts等框架。
游戏开发
Java语言也可以用于游戏开发,如 Minecraft等游戏就是使用Java语言开发 的。

Java基础部分题(参考答案)

Java基础部分题(参考答案)

Java基础部分题(参考答案)基础语法1:1、下列变量定义错误的是。

2、A) int a; B) double b=4.5; C) boolean b=true; D)float f=9.8;3、下列数据类型的精度由高到低的顺序是:a)float,double,int,long b)double,float,int,bytec)byte,long,double,float d)double,int,float,long4、执行完下列代码后,int a=3;char b='5';char c=(char)(a+b);c的值是?A)?8? b)53 c)8 d)565、Unicode是一种_____________A) 数据类型B)java包C)字符编码D)java类6、6+5%3+2的值是___________A)2 B)1 C)9 D)107、下面的逻辑表达式中合法的是__________A)(7+8)&&(9-5) B)(9*5)||(9*7) C)9>6&&8<10D)(9%4)&&(8*3)8、java语言中,占用32位存储空间的是__________。

A、long,doubleB、long,floatC、int,doubleD、int,float9、假设int a=3,b=2,c=1,以下语句正确的是___________。

A)c=c/float(a//b) b) c=c/((float a)/b)c) c=(float)c/(a/b) d) c= c/(int)(a/(float)b)10、2|3&5的值是________________。

A)1 B)2 C)3D)511、指出下列正确的语句:A) byte i = 389; B) long lv = i*3+4.5;C) int x = 87L; D) long l = 10;11、指出下列类型转换中正确的是______________。

java基础入门考试题目及答案

java基础入门考试题目及答案

java基础入门考试题目及答案一、选择题(每题2分,共20分)1. Java中,哪个关键字用于声明一个类?A. classB. interfaceC. structD. object答案:A2. 下列哪个是Java中的保留字?A. appleB. publicC. javaD. dog答案:B3. Java中,哪个方法用于获取字符串的长度?A. length()B. size()C. count()D. length答案:A4. 在Java中,哪个关键字用于定义一个方法?A. functionB. methodC. defD. void答案:D5. Java中,哪个关键字用于声明一个接口?A. classB. interfaceC. structD. object答案:B6. Java中,哪个关键字用于声明一个包?A. packageB. importC. classD. public答案:A7. Java中,哪个关键字用于实现多重继承?A. extendsB. implementsC. extends and implementsD. None of the above答案:B8. 在Java中,哪个关键字用于声明一个变量?A. varB. letC. defD. val答案:A9. Java中,哪个关键字用于声明一个常量?A. finalB. constC. staticD. var答案:A10. 在Java中,哪个关键字用于抛出一个异常?A. throwB. throwsC. catchD. try答案:B二、填空题(每题2分,共20分)1. Java是一种_________语言,它支持跨平台运行。

答案:面向对象2. Java程序的执行入口是_________方法。

答案:main3. 在Java中,所有的类都是_________类的子类。

答案:Object4. Java中,用于声明一个私有方法的关键字是_________。

java基础面经典试题(附答案)

java基础面经典试题(附答案)

基础知识部分:1. JDK是什么?JRE是什么?a) 答:JDK:java开发工具包。

JRE:java运行时环境。

2. 什么是java的平台无关性?a) 答:Java源文件被编译成字节码的形式,无论在什么系统环境下,只要有java虚拟机就能运行这个字节码文件。

也就是一处编写,处处运行。

这就是java的跨平台性。

3. 在一台电脑上配置java环境,path起什么作用?如何配置?a) 答:path的作用是在DOS环境下,能在任意位置使用JDK目录中b in文件夹中的可执行程序,来编译执行java程序。

b) 在环境变量中找到path变量,把bin文件夹的绝对路径加上即可。

4. 什么样的标识符是合法的?a) 由字母、数字、_和$组成,长度不限。

其中字母可以是大写或小写的英文字母,数字为0到9。

b) 标识符的第一个字符不能是数字。

c) 标识符区分大小写。

d) 标识符不能包含空格。

5. Java有几种基本数据类型?a) byte,short,int,long,float,double,char,boolean6. 什么是隐式类型转换?什么是显示类型转换?a) 当将占位数少的类型赋值给占位数多的类型时,Java自动使用隐式类型转换。

b) 当把在级别高的变量的值赋给级别底变量时,必须使用显示类型转换运算。

7. &&和&区别,||和|区别?a) &&和||是短路与,短路或,当左边的表达式能判断当前结果,则不判断右边的表达式。

b) 而& 和|则将两边的表达式都运算完毕后,再算结果。

8. break,continue区别?a) break结束所有循环,continue结束当次循环,进入下次循环。

9. 类的命名规则是什么?a) 如果类名使用拉丁字母,那么名字的首写字母使用大写字母。

b) 类名最好见名知意,当类名由几个单词复合而成时,每个单词的首写字母使用大写。

10. 类体的内容由两部分构成,哪两部分?a) 一部分是变量的定义,用来刻画属性。

java面试题基础篇

java面试题基础篇

java面试题基础篇当涉及Java 面试的基础篇时,以下是一些常见的问题和主题,供你进行复习和准备:1. Java 基础:-什么是Java 编程语言?Java 的特点是什么?- Java 的数据类型有哪些?基本数据类型和引用数据类型有什么区别?-解释一下Java 的封装、继承和多态。

-什么是类和对象?如何创建类和对象?-什么是构造方法?它有什么作用?-什么是方法重载和方法重写?-解释一下静态变量和实例变量的区别。

-什么是接口和抽象类?它们之间的区别是什么?2. 面向对象设计:-什么是SOLID 原则?分别解释每个原则的含义。

-什么是设计模式?举例说明几个常用的设计模式。

-什么是单例模式?如何实现线程安全的单例模式?-什么是工厂模式和抽象工厂模式?3. 异常处理:-什么是异常?Java 中的异常处理机制是什么?-解释一下try-catch-finally 块的工作原理。

-什么是运行时异常和受检异常?4. 集合框架:-介绍Java 的集合框架。

ArrayList 和LinkedList 的区别是什么?-什么是Map 接口?HashMap 和TreeMap 的区别是什么?-什么是迭代器?如何使用迭代器遍历集合?5. 线程与并发:-什么是线程?如何创建和启动一个线程?-解释一下同步和异步,阻塞和非阻塞。

-什么是线程安全?如何避免线程安全问题?-什么是死锁?如何避免死锁?6. IO 操作:-什么是输入流和输出流?-解释一下字节流和字符流的区别。

-什么是序列化和反序列化?7. Java 虚拟机(JVM):-什么是JVM?JVM 的主要组成部分是什么?-什么是垃圾回收?Java 中的垃圾回收机制是什么?8. 基础算法和数据结构:-解释一下栈和队列。

-什么是哈希表(HashTable)?如何解决哈希冲突?-什么是递归?递归的应用和注意事项是什么?这只是一些常见的Java 面试基础题目,你可以根据实际情况进行深入的学习和准备。

java基础课件ppt


3
类和对象是面向对象编程的核心概念,是实现软 件设计的基础。
继承和多态
01 继承是面向对象编程的一个重要特性,它允许一 个类继承另一个类的属性和行为。
02 多态是指一个接口可以有多种实现方式,或者一 个对象可以表现出多种形态。
03 继承和多态是实现代码重用和扩展的重要手段, 可以提高软件的可维护性和可扩展性。
自定义异常
创建自定义异常类
继承自Exception或其子类,并添加必要的成员 变量和方法。
在方法中抛出自定义异常
在需要抛出异常的地方,使用throw语句抛出自 定义异常。
在调用者处处理自定义异常
捕获自定义异常并处理,或者继续向上层调用者传递异常。
01
Java多线程编程
线程的概念和分类
总结词
理解线程的概念和分类是Java多线程编程的基础。
封装和抽象
封装是将对象的属性和行为封装在一个类中,隐藏对象的内部实现细节, 只通过类提供的接口与外部交互。
抽象是通过定义抽象类或接口来规定一组操作,具体的实现细节由子类来 完成。
封装和抽象是实现信息隐藏和代码重用的重要手段,可以提高软件的安全 性和可维护性。
01
Java常用类库
String类
字符串操作
集成开发环境
可以选择使用Eclipse、IntelliJ IDEA等集成开发环境(IDE),这 些IDE提供了代码编辑、编译、调试等功能。
配置环境变量
在安装JDK和IDE后,需要配置环境变量,以便在命令行中访问 Java和Javac命令。
01
Java基础语法
Java数据类型
整型:byte、short、int 、long
Java基础课件Βιβλιοθήκη THE FIRST LESSON OF THE SCHOOL YEAR

java的8种基础类型

java的8种基础类型⼀、基础类型Java 是⼀种强类型语⾔。

这就意味着必须为每⼀个变量声明⼀种类型 : 在 Java 中,⼀共有 8种基本类型( primitive type ) , 其中有 4 种整型、 2 种浮点类型、 1 种⽤于表⽰ Unicode 编码的字符单元的字符类型 char 和1 种⽤于表⽰真值的 boolean 类型。

类型存储需求取值范围默认值byte1字节-128 ~ 1270short2字节-32768 ~ 327670int4字节-2^31 ~ 2^31 - 1(正好超过20亿)0long8字节-2^63 ~ 2^63 - 10Lfloat4字节⼤约 ± 3.402 823 47 E + 38 F ( 有效位数为 6 ~ 7 位)+0.0Fdouble8字节⼤约 ± 1.797 693 134 862 315 70 E + 308 ( 有效位数为 15 位 )+0.0Dchar2字节使⽤unicode编码,最⼤65535'\u0000'boolean取决于虚拟机,1字节或4字节。

true或false。

所占字节⼤⼩参考:false尽管它们的默认值看起来不⼀样,但在内存中都是0。

⼆、Java语⾔中的boolean类型在Java语⾔规范中,boolean类型的值只有两种可能,它们分别⽤true和false来表⽰,显然这两种符号是不能被虚拟机直接使⽤的。

在Java虚拟机规范中,boolean类型则被映射成int类型(4字节)。

Java 代码中的逻辑运算以及条件跳转,都是⽤整数相关的字节码来实现得。

具体来说,就是true -> 1false -> 0这个编码规则约束了Java字节码的具体实现。

举个例⼦,对于存储boolean数组(1字节)的字节码,Java虚拟机需保证直接存⼊的值是1或0。

java基础课件ppt下载

Git特点
Git具有分支管理、强大的冲突解决功能、灵活的版本回退 等特点,能够大大提高团队协作和项目管理效率。
Git使用
Git的基本使用包括创建仓库、提交代码、合并分支等,还 有高级功能如分支策略制定、Gitflow工作流等。
01
Java实践项目
学生信息管理系统
总结词
功能全面、综合性强
详细描写
学生信息管理系统是一个典型的Java实践项目,涵盖了数 据库操作、界面设计、系统架构等多个方面。通过开发这 个项目,学生可以全面掌握Java的基础知识和技能,提高 实际操作能力。
总结词
贴近实际、应用广泛
详细描写
学生信息管理系统在实际生活中应用广泛,可用于学校、 培训机构等场景。这个项目能够让学生了解Java在实际开 发中的应用,提高解决实际问题的能力。
总结词
团队合作、锻炼沟通协作能力
详细描写
在开发学生信息管理系统的进程中,学生需要组成团队进 行协作。通过团队成员之间的沟通、协作,学生可以锻炼 团队合作和沟通能力,为未来的职业发展做好准备。
Eclipse特点
Eclipse具有丰富的插件支持、可扩大性、跨平台 性、强大的项目管理和调试工具等特点。
3
Eclipse使用
Eclipse的基本使用包括创建项目、编写代码、运 行程序等,还有高级功能如断点调试、版本控制 集成等。
Maven项目管理工具
Maven简介
Maven是一个项目管理工具,它 提供了项目构建、依赖管理等功 能,广泛应用于Java项目的开发
01
Java基础语法
数据类型与变量
数据类型
Java是一种静态类型语言,变量 在声明时必须指定数据类型。基 本数据类型包括整型、浮点型、 字符型和布尔型。

java基础1-共85题

java基础1-共85题1、在Java中,以下关于主方法写法正确的是() [单选题] *A、public static void main()B、public void main(String[] args)C、public static void main(String[] args)(正确答案)D、static void main(String[] args)2、在Java中,当需要使用Scanner类时,应为java源代码编写的导入语句是()[单选题] *A、import ng.ScannerB、import java.util.Scanner(正确答案)C、package java.util.ScannerD、import ng.*3、在Java中,以下代码输出结果正确的是()public class Test { public static void main(String[] args) { String s1 = "runoob"; String s2 = "runoob";System.out.print(s1==s2); }} [单选题] *A、TRUE(正确答案)B、0C、1D、FALSE4、在Java中,以下语句用于访问数组 arrOne 的第一个元素正确的是() [单选题] *A、arrOne[0](正确答案)B、arrOne[1]C、arrOne[2]D、arrOne[3]5、在Java中,以下为类Test所定义的构造方法,正确的是() [单选题] *A、void Test()B、void Test(int i)C、MyTest()D、Test()(正确答案)6、在Java中,以下代码输出结果为()public class Test { public static void main(String[] args) { char c = 65; System.out.println("c = "+c); }} [单选题] *A、c = 65B、编译错误C、c = A(正确答案)D、运行错误7、在Java中,以下初始化 Java 数组的代码正确的是() [单选题] *A、int [] myArray = {"1", "2", "3"};B、int [] myArray = (5, 4, 3);C、int [3] myArray= {1,2,3};D、int myArray [] = {1, 3, 5};(正确答案)8、在Java中,float 类型的变量在内存中占据()字节 [单选题] *A、8B、4(正确答案)C、2D、169、在Java中,double 类型的变量在内存中占据()字节 [单选题] *A、8(正确答案)B、4C、2D、1610、在Java中,int 类型的变量在内存中占据()字节 [单选题] *A、8B、4(正确答案)C、2D、1611、在Java中,以下不正确的字符串常量是() [单选题] *A、'abc'(正确答案)B、"12'12"C、"0"D、""12、在Java中,以下关于方法说法错误的是() [单选题] *A、方法可以没有返回值B、方法如果无返回值则在方法体内不能有return语句(正确答案)C、方法可以定义参数,并且参数可以是多个D、可以定义多个方法,且定义前后顺序无特殊要求13、在Java中,以下选项创建Scanner对象正确的是() [单选题] *A、Scanner sc=new Scanner(System);B、Scanner sc=new Scanner(System.in);(正确答案)C、Scanner sc=new Scanner(System.out);D、Scanner sc=new Scanner(in);14、在Java中,Math.round(3.7)获取的结果是() [单选题] *A、4(正确答案)B、3.7C、3D、015、在Java中,以下赋值语句正确的是() [单选题] *A、int a=10.1f;B、int a=(int)2.5;(正确答案)C、byte b=200;D、float f=2.5;16、在Java中,main方法必须声明为() [单选题] *A、publicB、voidC、public voidD、public static void(正确答案)17、在Java中,若要实现两个条件都成立时结果才会发生的情况,那么以下()符号可以满足要求 [单选题] *A、!B、||C、&&(正确答案)D、|18、在Java中,声明变量保存数据5.5,需要使用()数据类型。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Java基础: ·java环境变量的配置 ·java数据类型 ·变量的作用域 ·数据类型转换 ·分支和循环 ·数组

Java环境变量的配置:jdk安装完成之后,在环境变量中配置path:C:\Program Files\Java\jdk1.6.0_18\bin public class JavaDemo01 { public static void main(String args[]){ System.out.println("Hello World!"); } }

用public修饰的类一定要和文件名称相同,另外在开发过程中,类名的首字母要大写。 Java的数据类型 ·基本数据类型(原始数据类型):int、short、long、char、boolean、double、float、byte ·引用数据类型:数组、接口、类 Int :整形变量,初始值是0 public class JavaDemo02 {

public static void main(String args[]){ int i[] = new int[5]; System.out.println(i[0]); } }

变量的作用域:声明变量最近的一对“{}”就是变量的作用域范围。 成员变量(全局变量):声明在方法的外面,类中所有的方法都可以访问的变量 局部变量:声明在方法里面,只有特定的代码(声明变量的方法)才能够访问的变量 数据类型转换: ·自动转换:向上转型就是自动转换 public class JavaDemo03{ public static void main(String args[]){ int i = 10; long x = i;//类型转换 System.out.println(x); } } ·强制转换:向下转型为强制类型转换 public class JavaDemo03{ public static void main(String args[]){ double d = 10.1234; int x = (int)d;//强制类型转换 System.out.println(x); } }

运算符: ·数学运算符(+、-、*、/、%) ·关系运算符:(==、>=、<=、>、<、!= 等 等),返回值都是boolean(true or false) ·逻辑运算符: ·&&:表示&&前后两个表达式都为true的话,则整个表达式为true,如果有一个表达式为false,则整个表达式为false ·||:表示||前后的表达式只要有一个为true,则整个表达式都为true,如果两个表达式都为false,则整个表达式为false ·&:表示&前后两个表达式都为true的话,则整个表达式为true,如果有一个表达式为false,则整个表达式为false ·| :表示|前后的表达式只要有一个为true,则整个表达式都为true,如果两个表达式都为false,则整个表达式为false。

区别:&&的时候会先判断第一个表达式是否为假,如果为假,则后面的表达式不再进行判断,而&是会每个表达式都会进行判断,不管是否为假。 ·! : 表示非,比如 !true = false ·三元运算符(三目运算符):格式(表达式?变量1:变量2),表示如果表达式为真,则取值为变量1,否则为变量2 public class JavaDemo04{ public static void main(String args[]){ int i = 10; int j = 20; int k = iSystem.out.println(k); } } ·赋值运算符:=、+=、-=、*= 、/= public class JavaDemo05{ public static void main(String args[]){ int i = 10; int j = 20; //j += i; //表示 j = j+i; //j -= i; //表示 j= j-i; //j *= i;//表示的 j = j*i; j /= i ;//表示 j = j/i; System.out.println(j); } } ·自增++ 和 自减 – 注意:++ 放在前面表示先自增后操作,放在后面表示先操作后自增 -- 同上。 public class JavaDemo06{ public static void main(String args[]){ int j = 20; System.out.println(j++); System.out.println(j); } } 运算符的优先级: ·和小学数学中所学的优先级类似。 控制流语句(分支): · if else 如果。。。否则。。。 例如:考试java成绩大于等于60为及格,否则不及格,现在小明考试成绩为59分,我们使用程序判断是否为及格。 public class JavaDemo07{ public static void main(String args[]){ int java_score = 59; if(java_score >= 60){ System.out.println("小明java成绩为及格"); }else{ System.out.println("小明java成绩不及格"); } } } 现在小明的父母想知道小明的成绩在哪个等级 A: 大于等于90分, B 80 ~90 C:70~80 D:60~70 E:小于 60 public class JavaDemo08{ public static void main(String args[]){ int java_score = 59; if(java_score >= 90){ System.out.println("A"); }else{ if(java_score >= 80){ System.out.println("B"); }else{ if(java_score >= 70){ System.out.println("C"); }else{ if(java_score >= 60){ System.out.println("D"); }else{ System.out.println("E"); } } }

} } } 这种写法虽然程序功能已经实现,但是if else 嵌套过多,降低了程序的可读性和可维护性,现在有一种更好的方式来书写程序:if else if 。。。。else public class JavaDemo09{ public static void main(String args[]){ int java_score = 59; if(java_score >= 90){ System.out.println("A"); }else if(java_score >= 80){ System.out.println("B"); }else if(java_score >= 70){ System.out.println("C"); }else if(java_score >= 60){ System.out.println("D"); }else{ System.out.println("E"); } } } 如果是纯粹的分支语句,java中还提供了另外一种写法 Switch 。。。case 假如有一个数字,如果为1的时候打印这个数字是1,一次类推。。。

public class JavaDemo09{ public static void main(String args[]){ int i = 3; switch (i) { case 1: System.out.println("这个数字是1"); case 2: System.out.println("这个数字是2"); case 3: System.out.println("这个数字是3"); case 4: System.out.println("这个数字是4"); case 5: System.out.println("这个数字是5"); }

} } 以上的程序发现,只要条件符合某一个,后面也会全部执行,这个时候需要添加关键字break表示退出分支 public class JavaDemo09{ public static void main(String args[]){ int i = 3; switch (i) { case 1: System.out.println("这个数字是1"); break; case 2: System.out.println("这个数字是2"); break; case 3: System.out.println("这个数字是3"); break; case 4: System.out.println("这个数字是4"); break; case 5: System.out.println("这个数字是5"); break; } } }

现在如果这个数字是8,但是case中并没有判断是8的情况,我们需要统一的输出怎么办? public class JavaDemo09{ public static void main(String args[]){ int i = 7; switch (i) { case 1:

相关文档
最新文档