Java程序设计基本语法课件

上传人:新** 文档编号:576336302 上传时间:2024-08-19 格式:PPT 页数:45 大小:496KB
返回 下载 相关 举报
Java程序设计基本语法课件_第1页
第1页 / 共45页
Java程序设计基本语法课件_第2页
第2页 / 共45页
Java程序设计基本语法课件_第3页
第3页 / 共45页
Java程序设计基本语法课件_第4页
第4页 / 共45页
Java程序设计基本语法课件_第5页
第5页 / 共45页
点击查看更多>>
资源描述

《Java程序设计基本语法课件》由会员分享,可在线阅读,更多相关《Java程序设计基本语法课件(45页珍藏版)》请在金锄头文库上搜索。

1、Porgramming in Java 2009.9-2010.1 http:/.第第2 2章章 JavaJava程序设计基本语法程序设计基本语法 绪绪 论论Porgramming in Java 2010.2-2010.7 .vJavaJava程序的基本组成元素程序的基本组成元素vJavaJava基本数据类型、变量与常量基本数据类型、变量与常量v运算符与表达式运算符与表达式v算法的基本控制结构算法的基本控制结构v数组数组v向量类向量类绪绪 论论Porgramming in Java 2010.2-2010.7 .了解了解JavaJava中的关键字与标识符定义和使用中的关键字与标识符定义和使用

2、掌握基本运算符和表达式的使用方法掌握基本运算符和表达式的使用方法掌握自增和自减运算符的使用方法掌握自增和自减运算符的使用方法理解运算符优先级理解运算符优先级掌握分支语句、循环语句的使用方法掌握分支语句、循环语句的使用方法区分区分breakbreak语句和语句和continuecontinue语句的作用语句的作用掌握掌握returnreturn语句使用方法语句使用方法熟练掌握一维数组的用法熟练掌握一维数组的用法掌握二维数组定义和用法掌握二维数组定义和用法理解向量类理解向量类绪绪 论论Porgramming in Java 2010.2-2010.7 .关键字与标识符关键字与标识符运算符与表达式。

3、运算符与表达式。绪绪 论论Porgramming in Java 2010.2-2010.7 .关键字关键字(keyword)(keyword),也称保留字,也称保留字(reserved word)(reserved word),是指程序,是指程序代码中规定用途的单词。也就是说,只要在程序代码内部代码中规定用途的单词。也就是说,只要在程序代码内部出现该单词,编译程序就认为是某种固定的用途。标识符,出现该单词,编译程序就认为是某种固定的用途。标识符,也就是标识的符号,指程序中一切自己指定的名称,例如也就是标识的符号,指程序中一切自己指定的名称,例如后续语法中涉及到的变量名称、常量名称、数组名称、

4、方后续语法中涉及到的变量名称、常量名称、数组名称、方法名称、参数名称、类名、接口名、对象名等等。法名称、参数名称、类名、接口名、对象名等等。绪绪 论论Porgramming in Java 2010.2-2010.7 . 关键字关键字 关键字就是关键字就是JavaJava语言中已经被赋予特定意义的一些语言中已经被赋予特定意义的一些单词。例如单词。例如publicpublic,charchar,defaultdefault等,这些保留关键字不能当等,这些保留关键字不能当成标识符使用。成标识符使用。 Java Java中的关键字有:中的关键字有:abstract abstract booleanb

5、oolean break byte break byte case catch char class continue do double case catch char class continue do double else extends false find finally float else extends false find finally float implement import implement import instanceofinstanceof intint interface long interface long native new null packa

6、ge private public native new null package private public return short static super switch synchronized return short static super switch synchronized this throw true try void while this throw true try void while strictfpstrictfp volatile transientvolatile transient。绪绪 论论Porgramming in Java 2010.2-201

7、0.7 . 标识符标识符: : 用来标识类名、方法名、类型名、文件名的有效字用来标识类名、方法名、类型名、文件名的有效字符序列成为标识符。简单的说,标识符就是一个名字。符序列成为标识符。简单的说,标识符就是一个名字。下面是命名标识符的规则。下面是命名标识符的规则。标识符严格区分大小写。标识符严格区分大小写。标识符是由字母、数字、下划线(标识符是由字母、数字、下划线(_ _)和美元符号()和美元符号($ $)组成)组成的字符序列。的字符序列。标识符必须以字母、下划线(标识符必须以字母、下划线(_ _)或美元符()或美元符($ $)开头而不能)开头而不能以数字开头。以数字开头。标识符不能是关键字或

8、保留字。标识符不能是关键字或保留字。绪绪 论论Porgramming in Java 2010.2-2010.7 .运算符:运算符:是一种特殊符号,用以表示数据的运算、赋值和比是一种特殊符号,用以表示数据的运算、赋值和比较。一般由一至三个字符组成,但较。一般由一至三个字符组成,但JavaJava将其视为一个符号。将其视为一个符号。运算符共分为以下几种:算术运算符、比较运算符、条件运运算符共分为以下几种:算术运算符、比较运算符、条件运算符、逻辑运算符、位运算符、赋值运算符和自增自减运算算符、逻辑运算符、位运算符、赋值运算符和自增自减运算符。符。表达式:表达式:是指一个或多个运算符和运算数共同作用

9、以完成某是指一个或多个运算符和运算数共同作用以完成某项计算的组合。计算后的值通常是一个数,但也可以不是,项计算的组合。计算后的值通常是一个数,但也可以不是,参与运算的运算数可以是文本、常量、变量或其它数据资源。参与运算的运算数可以是文本、常量、变量或其它数据资源。表达式的计算与使用方式是编写程序的基础。表达式的计算与使用方式是编写程序的基础。绪绪 论论Porgramming in Java 2010.2-2010.7 .u 运算符优先级运算符优先级表表2-6 运算符优先级表运算符优先级表顺序顺序运算符运算符1括号,如括号,如 ( ) 和和 3一元运算符,如一元运算符,如 -、+、- -和和 !

10、3算术运算符,如算术运算符,如 *、/、%、+ 和和 -4关系运算符,如关系运算符,如 、=、char-intint数值型之间的转换:数值型之间的转换:byte-short-byte-short-intint-long-float-double-long-float-double绪绪 论论Porgramming in Java 2010.2-2010.7 . 强制类型转换强制类型转换当两种类型彼此不兼容,或目标类型取值范围小于源类当两种类型彼此不兼容,或目标类型取值范围小于源类型时,自动转换无法进行,这就需要进行强制类型转换。强型时,自动转换无法进行,这就需要进行强制类型转换。强制类型转换的格

11、式为:制类型转换的格式为:(目标数据类型)变量名或表达式(目标数据类型)变量名或表达式其中,目标数据类型是值转换后的数据类型。其中,目标数据类型是值转换后的数据类型。参看例程参看例程cpp2_0.javacpp2_0.java注意:在程序设计中,不推荐从较长数据向较短数注意:在程序设计中,不推荐从较长数据向较短数据的转换,会导致计算数据精度的降低。据的转换,会导致计算数据精度的降低。 绪绪 论论Porgramming in Java 2010.2-2010.7 . 字符串转换成数值型数据字符串转换成数值型数据数字字符串数据转换成数字字符串数据转换成byte/short/byte/short/i

12、ntint等数据类型,可以利等数据类型,可以利用下表提供的用下表提供的Byte/ShortByte/Short、IntegerInteger、FloatFloat、DoubleDouble、LongLong类类的的parseXXXparseXXX()()方法。方法。转换的方法转换的方法功能说明功能说明Byte.parseByte()将数字字符串转换为字节型数据将数字字符串转换为字节型数据Short.parseShort()将数字字符串转换为短整型数据将数字字符串转换为短整型数据Integer.parseInt()将数字字符串转换为整型数据将数字字符串转换为整型数据Long.parseLong(

13、)将数字字符串转换为长整型数据将数字字符串转换为长整型数据Float.parseFloat()将数字字符串转换为浮点型数据将数字字符串转换为浮点型数据Double.parseDouble()将数字字符串转换为双精度型数据将数字字符串转换为双精度型数据Boolean.parseBoolean()将字符串转换为逻辑型数据将字符串转换为逻辑型数据绪绪 论论Porgramming in Java 2010.2-2010.7 .数值型数据转换成字符串数值型数据转换成字符串字符串可用加号字符串可用加号“+”+”来实现连接操作。来实现连接操作。u字符串转换成数值型数据字符串转换成数值型数据String My

14、Num=“1234.567”;float MyFlo=Float.parseFloat(MyNum);u数值型数据转换成字符串数值型数据转换成字符串Int MyInt=1234;String MyString=“”+MyInt;绪绪 论论Porgramming in Java 2010.2-2010.7 .程序控制语句分为三类:程序控制语句分为三类:分支语句,包括分支语句,包括ifif语句和语句和switchswitch语句;语句;循环语句,包括循环语句,包括forfor循环语句、循环语句、whilewhile循环语循环语句和句和do-whiledo-while循环语句;循环语句;跳转语句,包

15、括跳转语句,包括breakbreak语句、语句、continuecontinue语句和语句和returnreturn语句。在本节将详细介绍这些控制程序执语句。在本节将详细介绍这些控制程序执行流程的语句。行流程的语句。绪绪 论论Porgramming in Java 2010.2-2010.7 .分支语句是所有流程控制结构中最基础的控制语句。程序在分支语句是所有流程控制结构中最基础的控制语句。程序在执行过程中会根据条件来选择执行程序分支。执行过程中会根据条件来选择执行程序分支。分支语句的两种语句是:分支语句的两种语句是:ifif和和switchswitch语句,两种语句的特点语句,两种语句的特点

16、如下表所示。如下表所示。语句语句实际使用实际使用特点特点if语句语句if语句语句满满足足条条件件,则则执执行行该该条条件件语语句句;如如果果不不满满足足,则则跳跳过过该该条条件件语语句句。可可以以嵌嵌套套使使用用,实实现现多多路路条条件件分分支支ifelse实实现现简简单单的的两两路路条条件件分分支支。可可以以嵌嵌套套使使用用,实实现现多路条件分支多路条件分支switch语句语句se实现多路分支,提高执行效率,可以嵌套使用实现多路分支,提高执行效率,可以嵌套使用绪绪 论论Porgramming in Java 2010.2-2010.7 .u if语句语句绪绪 论论Porgramming in

17、 Java 2010.2-2010.7 .u ifelse语句语句绪绪 论论Porgramming in Java 2010.2-2010.7 .u 嵌套使用嵌套使用ifelse语句语句例如:例如:Core.javaCore.java绪绪 论论Porgramming in Java 2010.2-2010.7 .u switch语句语句例如:例如:SwitchT.javaSwitchT.java绪绪 论论Porgramming in Java 2010.2-2010.7 .循环结构,在某些条件继续时,重复执行一段代码。能够多循环结构,在某些条件继续时,重复执行一段代码。能够多次执行同一个任务。

18、包括次执行同一个任务。包括forfor循环、循环、whilewhile循环以及循环以及do-whiledo-while循循环。每一种循环语句都有各自的优点,如下表所示。环。每一种循环语句都有各自的优点,如下表所示。循环语句循环语句特点特点for语句语句计计数数型型循循环环语语句句,提提前前指指定定循循环环的的次次数数,适适用用于于循环次数已知的情况循环次数已知的情况while语句语句指定循环结束条件,适用于循环次数未知的情况指定循环结束条件,适用于循环次数未知的情况do-while语句语句与与while基基本本相相同同,但但它它的的循循环环体体至至少少会会执执行行一一次次,适用于循环次数未知的

19、情况,适用于循环次数未知的情况绪绪 论论Porgramming in Java 2010.2-2010.7 .使用使用forfor循环时,一般遵循下面所示的语法结构:循环时,一般遵循下面所示的语法结构:for(for(表达式表达式1;1;表达式表达式2;2;表达式表达式3)3) 循环体循环体; ;例如:例如:ForSum.javaForSum.java绪绪 论论Porgramming in Java 2010.2-2010.7 . while while循环语法格式非常简单,如下所示:循环语法格式非常简单,如下所示: while( while(逻辑表达式逻辑表达式) ) 循环体循环体; ; 例

20、如:例如:Avg.javaAvg.java绪绪 论论Porgramming in Java 2010.2-2010.7 .do-whiledo-while循环的一般语法结构如下所示:循环的一般语法结构如下所示:dodo 循环体;循环体; while(while(测试条件测试条件););例如:例如:DoSum.javaDoSum.java绪绪 论论Porgramming in Java 2010.2-2010.7 .在使用循环语句时,只有循环条件表达式的值为假时才能结在使用循环语句时,只有循环条件表达式的值为假时才能结束循环。如果想提前中断循环,只需在循环语句块中添加束循环。如果想提前中断循环,

21、只需在循环语句块中添加breakbreak语句。语句。breakbreak语句属于跳转语句,跳转语句还包括语句属于跳转语句,跳转语句还包括continuecontinue语句,语句,它功能是跳过本次循环要执行的剩余语句,然后开始执行下一它功能是跳过本次循环要执行的剩余语句,然后开始执行下一次循环。除了次循环。除了breakbreak语句和语句和continuecontinue语句可以实现程序跳转外,语句可以实现程序跳转外,returnreturn语句也能实现跳转。它们的功能特点如下表所示。语句也能实现跳转。它们的功能特点如下表所示。语句语句功能功能break语句语句退出循环,执行循环后面的语句

22、退出循环,执行循环后面的语句continue语句语句跳出当前循环,执行循环下一次循环跳出当前循环,执行循环下一次循环return语句语句跳出方法,并为方法返回相应值跳出方法,并为方法返回相应值绪绪 论论Porgramming in Java 2010.2-2010.7 .数组提供了一种将有联系的信息分组的便利方法。然而数组提供了一种将有联系的信息分组的便利方法。然而JavaJava数组的工作原理与数组的工作原理与C/C+C/C+语言中数组不相同。在本节接下来的内语言中数组不相同。在本节接下来的内容将介绍数组的声明、使用及原理。容将介绍数组的声明、使用及原理。一维数组是一组相关变量的一维集合,在

23、程序设计中这样的一维数组是一组相关变量的一维集合,在程序设计中这样的列表很常见列表很常见声明一维数组的语法有两种格式:声明一维数组的语法有两种格式: type type arrayNamearrayName = new = new typesizetypesize type type arrayNamearrayName=new =new typesizetypesize 对数组初始化有两种方法:一种是在数组声明时就初始化,对数组初始化有两种方法:一种是在数组声明时就初始化, 另一种是在定义后进行初始化。另一种是在定义后进行初始化。例如:例如:ArraySort.javaArraySort.j

24、ava绪绪 论论Porgramming in Java 2010.2-2010.7 .1 1声明数组格式:声明数组格式:数组元素类型数组元素类型 数组名数组名 ; ;或或 数组元素类型数组元素类型 数组名数组名; ;例如:int intArray ; 2. 2. 创建数组空间创建数组空间 数组名数组名 = new = new 数组元素类型数组元素类型 数组元素的个数数组元素的个数 ; 例如: intArray = new int 10 ; 为整型数组为整型数组intArrayintArray分配分配10个整数元素所占据的内存空间,并使每个元个整数元素所占据的内存空间,并使每个元素初值为素初值为

25、0 。 即即intArray0, intArray1, intArray9的值各为0绪绪 论论Porgramming in Java 2010.2-2010.7 .int intArray ;intArray = new int 10 ;int intArrayint intArray = new int 10;= new int 10;合二为一合二为一绪绪 论论Porgramming in Java 2010.2-2010.7 . String stringArray = new StringString stringArray = new String5 5; ; / 初值为null 用用

26、new关关键键字字为为一一个个数数组组分分配配内内存存空空间间后后,系系统统将将为为每每个个数组元素都赋予一个初值,这个初值取决于数组的类型。数组元素都赋予一个初值,这个初值取决于数组的类型。v 所有数值型数组元素的初值为所有数值型数组元素的初值为0,v 字字符符型型数数组组元元素素的的初初值值为为一一个个不不可可见见的的ISO控控制制符符(u0000),),v 布尔型数组元素的初值为布尔型数组元素的初值为false,v 类的类型的数组在创建时,元素的初值为类的类型的数组在创建时,元素的初值为null。 数数组组对对象象一一旦旦创创建建之之后后,在在程程序序整整个个执执行行期期间间,就就不不能

27、能再再改变数组元素的个数。改变数组元素的个数。绪绪 论论Porgramming in Java 2010.2-2010.7 .数组的内存结构如图数组的内存结构如图2-242-24所示:所示:绪绪 论论Porgramming in Java 2010.2-2010.7 .对数组的一些基本操作,像排序、搜索与比较等比较常见。对数组的一些基本操作,像排序、搜索与比较等比较常见。在在JavaJava中提供了中提供了ArraysArrays类可以协助完成这几个操作,类可以协助完成这几个操作,ArraysArrays类位于类位于java.utiljava.util包中,它提供了几个方法可以直接使用,以包中

28、,它提供了几个方法可以直接使用,以下介绍两个与数组操作有关的函数。下介绍两个与数组操作有关的函数。使用使用System.arraycopySystem.arraycopy()()函数复制数组函数复制数组用用Arrays.sortArrays.sort来排序数组来排序数组例如:例如:ArrayCopy.javaArrayCopy.java例如:例如:TestArraySort.javaTestArraySort.java绪绪 论论Porgramming in Java 2010.2-2010.7 .VectorVector类,即向量类可以实现可增长的对象数组,它也是一种类,即向量类可以实现可增长

29、的对象数组,它也是一种集合类,存在集合类,存在java.utiljava.util. .包中。包中。VectorVector类提供了实现可增长数类提供了实现可增长数组的功能,随着更多元素加入其中,数组变的更大。在删除一组的功能,随着更多元素加入其中,数组变的更大。在删除一些元素之后,数组变小。些元素之后,数组变小。VectorVector有三个构造函数:有三个构造函数:public public Vector(intVector(int initialCapacity,intinitialCapacity,int capacityIncrementcapacityIncrement) )pub

30、lic public Vector(intVector(int initialCapacityinitialCapacity) )public Vector()public Vector()绪绪 论论Porgramming in Java 2010.2-2010.7 .JavaJava语言有关内存分配知识语言有关内存分配知识栈内存和堆内存:栈内存和堆内存:在方法中定义的一些基本类型的变量和对象的引用变量都在在方法中定义的一些基本类型的变量和对象的引用变量都在方法的栈内存中分配。方法的栈内存中分配。堆内存用来存放由堆内存用来存放由newnew运算符创建的对象和数组,在堆中分运算符创建的对象和数组

31、,在堆中分配的内存,由配的内存,由javajava虚拟机的自动垃圾回收器来管理。虚拟机的自动垃圾回收器来管理。在堆内存中创建一个数组或对象后,还可以在栈内存中定义在堆内存中创建一个数组或对象后,还可以在栈内存中定义一个特殊的变量,让栈中的这个变量的取值等于数组或对象堆内一个特殊的变量,让栈中的这个变量的取值等于数组或对象堆内存中的首地址,栈中的这个变量就成了数组或对象的引用变量,存中的首地址,栈中的这个变量就成了数组或对象的引用变量,引用变量实际上保存的是数组或对象在堆内存中的地址。引用变量实际上保存的是数组或对象在堆内存中的地址。引用变量相当于是为数组或对象起个名字,是普通的变量,引用变量相

32、当于是为数组或对象起个名字,是普通的变量,定义时在栈中分配,数组或对象在没有引用变量指向它时,变为定义时在栈中分配,数组或对象在没有引用变量指向它时,变为垃圾,在随后一个不确定的时间内被垃圾回收器收走(释放掉)垃圾,在随后一个不确定的时间内被垃圾回收器收走(释放掉)绪绪 论论Porgramming in Java 2010.2-2010.7 .JavaJava语言有关内存分配知识语言有关内存分配知识Intx;Intx;X=new int10;X=new int10;.?Intx堆内存.0x8000Intx0000x8000(对象首地址)New int(10)产生的对象0X0X1.X8X9栈内存

33、栈内存绪绪 论论Porgramming in Java 2010.2-2010.7 .import java.io.*;public class class_namepublic static void main(String args) throws IOExceptionBufferedReader buf;/声明声明buf为为BufferedReader类型的变量,该类在类型的变量,该类在java.io类库中类库中String str;/声明声明str为为String类型的变量类型的变量.buf=new BufferedReader(new InputStreamReader(Syste

34、m.in);/创建创建buf对象对象str-buf.readLine();/用用readLine()方法读入字符串存入方法读入字符串存入str中中. 由键盘输入数据由键盘输入数据利用键盘输入数据,利用键盘输入数据,JavaJava语言提供了两种方式语言提供了两种方式方式方式1 1、利用键盘输入数据,基本格式如下:、利用键盘输入数据,基本格式如下:绪绪 论论Porgramming in Java 2010.2-2010.7 .参看例程参看例程app2_1.javaapp2_1.java 由键盘输入数据由键盘输入数据1 1、输入字符串:、输入字符串:参看例程参看例程app2_2.javaapp2_

35、2.java 2 2、输入数值:从键盘输入的数据均被视为字符串,所、输入数值:从键盘输入的数据均被视为字符串,所以必须转换。以必须转换。参看例程参看例程app2_3.javaapp2_3.java 3 3、输入多个数据:、输入多个数据:绪绪 论论Porgramming in Java 2010.2-2010.7 .import java.util.*;public class class_namepublic static void main(String args)Scanner reader=new Scanner(System.in);/用用System.in创建一个创建一个Scanne

36、r对象对象Double num;/声明声明double型变量,也可以声明其他数值型变量型变量,也可以声明其他数值型变量.num=reader.nextDouble();/调用调用reader对象的相应方法,读取键盘数据对象的相应方法,读取键盘数据. 由键盘输入数据由键盘输入数据利用键盘输入数据,利用键盘输入数据,JavaJava语言提供了两种方式语言提供了两种方式方式方式2 2、利用键盘输入对象,基本格式如下:、利用键盘输入对象,基本格式如下:绪绪 论论Porgramming in Java 2010.2-2010.7 .由键盘输入数据由键盘输入数据利用键盘输入对象,利用键盘输入对象,Scan

37、nerScanner类的对象有下列方法:类的对象有下列方法:nextBytenextByte()()、nextDouble()nextDouble()、nextFloat()nextFloat()、nextInt()nextInt()、nextLongnextLong()()、nextShort()nextShort()、next()next()和和nextLine()nextLine()上述的上述的nextXXX()nextXXX()方法被调用后,则等待用户在命令方法被调用后,则等待用户在命令行输入数据并按行输入数据并按EnterEnter键(或空格键、键(或空格键、TabTab键)确认。在

38、键)确认。在从键盘上输入数据时,通常是让类对象先调用从键盘上输入数据时,通常是让类对象先调用hasNextXXXhasNextXXX()()方法等待用户在键盘上输入数据,然后调用方法等待用户在键盘上输入数据,然后调用nextXXX()nextXXX()方法读取数据。方法读取数据。next()next()和和nextLine()nextLine()方法被调用后,则等待用户在键方法被调用后,则等待用户在键盘上输入一行文本,这两个方法返回一个盘上输入一行文本,这两个方法返回一个StringString类型的类型的数据。数据。参看例程参看例程app2_4.javaapp2_4.java 参看例程参看例

39、程app2_5.javaapp2_5.java 绪绪 论论Porgramming in Java 2010.2-2010.7 .n程序结构程序结构: :包声明、导入语句、类定义。包声明、导入语句、类定义。n词法记号:关键字、标识符、文字、操作符、分隔词法记号:关键字、标识符、文字、操作符、分隔符、空白符。符、空白符。n数据类型数据类型: :简单数据类型和复合数据类型简单数据类型和复合数据类型. .n表达式表达式:由运算符和操作数组成。由运算符和操作数组成。n运算符运算符:算术运算符、赋值运算符、关系运算符、逻算术运算符、赋值运算符、关系运算符、逻辑运算符位运算符、条件运算符等。辑运算符位运算符

40、、条件运算符等。n对一个表达式进行运算时,要注意运算符的优先级对一个表达式进行运算时,要注意运算符的优先级与结合性,以及混合运算时数据类型的转换。与结合性,以及混合运算时数据类型的转换。小结绪绪 论论Porgramming in Java 2010.2-2010.7 .n程序控制结构中常用的语句程序控制结构中常用的语句: :n条件语句、循环语句和跳转语句。条件语句、循环语句和跳转语句。nBreakBreak语句跳出循环继续执行循环外的下一条语语句跳出循环继续执行循环外的下一条语句;句;continuecontinue语句是中止本次循环而转到循环的语句是中止本次循环而转到循环的开始处继续运行。开始处继续运行。n数数组组是是有有序序相相同同的的数数据据类类型型的的数数据据的的集集合合,利利用用数数组数据结构,可以很好地为程序组织起循环。组数据结构,可以很好地为程序组织起循环。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号