JAVA程序设计(山东联盟-山东农业大学)知到智慧树章节测试课后答案2024年秋山东农业大学_第1页
JAVA程序设计(山东联盟-山东农业大学)知到智慧树章节测试课后答案2024年秋山东农业大学_第2页
JAVA程序设计(山东联盟-山东农业大学)知到智慧树章节测试课后答案2024年秋山东农业大学_第3页
JAVA程序设计(山东联盟-山东农业大学)知到智慧树章节测试课后答案2024年秋山东农业大学_第4页
JAVA程序设计(山东联盟-山东农业大学)知到智慧树章节测试课后答案2024年秋山东农业大学_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

JAVA程序设计(山东联盟-山东农业大学)知到智慧树章节测试课后答案2024年秋山东农业大学第一章单元测试

Java语言的各种分隔符中,非法的是()。

A:分号B:空白符C:问号D:逗号

答案:问号Java程序经过编译后生成的文件的后缀是().

A:javaB:exeC:classD:obj

答案:classJava语言所用的字符集中字符是()位。

A:64B:16C:32D:8

答案:16下列关于JavaApplication程序特点的描述中,错误的是()。

A:该程序只能是一个名字与主类名相同的文件组成B:该程序中仅有一个主方法,并被包含在某个类中C:该程序中没有不属于某个类的方法D:该程序实际上是一个类串

答案:该程序中没有不属于某个类的方法下列关于标识符的描述中,正确的是()。

A:标识符可选用关键字B:标识符中可以使用下划线和美元符C:标识符中大小写字母是无区别的D:标识符中可以使用连接符和井号符

答案:标识符中可以使用下划线和美元符下列关于运行字节码文件的命令行参数的描述中,正确的是().

A:命令行的命令字被存放在args[0]中B:第一个命令行参数被存放在args[1]中C:第一个命令行参数(紧跟命令字的参数)被存放在args[0]中D:数组args[]的大小与命令行参数的个数无关

答案:第一个命令行参数(紧跟命令字的参数)被存放在args[0]中下列关于运算符优先级的描述中,错误的是().

A:逻辑运算符优先级高于逻辑位运算符B:单目运算符优先级高于双目和三目运算符C:赋值运算符优先级最低D:在表达式中,优先级高的运算符先进行计算

答案:逻辑运算符优先级高于逻辑位运算符下列符号中,哪个不是Java语言的字符()。

A:'1'B:'a'C:'A'D:1'

答案:1'下面4个选项中,哪个是Java语言的关键字:

A:ClassB:mainC:classD:abc

答案:class请从下列运算符中选出,Java语言的算术运算符。

A:-B:+C:÷D:×E:*F:%

答案:-;+;÷;*;%哪些是字符常量。

A:65B:41C:'1'D:'a'E:a

答案:65;41;'1'下列哪些是Java语言的注释方式。

A:/**文档注释格式*/B:\\单行注释C://单行注释D:/*多行注释*/

答案:/**文档注释格式*/;//单行注释;/*多行注释*/下列哪些表达式的值为字符串“123”。

A:""+1+23B:1+"23"C:"1"+"23"D:"1"+23E:1+23

答案:""+1+23;1+"23";"1"+"23";"1"+23一个Java程序一般需要如下几个()过程,才能运行?

A:运行B:编译C:编辑D:调试

答案:运行;编译;编辑基于Eclipse开发Java程序,所必须的开发环境由哪些?

A:JavaJDKB:EclipseC:JavaD:JavaJre

答案:JavaJDK;JavaJreJava源程序需要经过编译和运行,下面哪些时所需要的运行命令?

A:javadB:javaC:javacD:Javab

答案:java;javac控制台输入输出指的是什么设备?

A:键盘B:U盘C:打印机D:显示器

答案:键盘;显示器在Java中,其主方法main()是程序的执行入口,该方法由下面哪些部分组成?

A:voidB:publicC:main(Stringargs[])D:static

答案:void;public;main(Stringargs[]);staticJava有3个独立的开发版本,是哪三个?

A:JavawebB:JavaEEC:JavaMED:JavaSE

答案:JavaEE;JavaME;JavaSEJava语言标识符中大小写字母是没有区别的。

A:对B:错

答案:错Java语言标识符中可以使用美元符。

A:错B:对

答案:对Java程序编译后生成的是字节码文件,其后缀是.exe。

A:错B:对

答案:错Java程序分为两大类:一类是Application程序,另一类是Applet程序。前者又称Java应用程序,后者又称Java小应用程序。

A:错B:对

答案:对Java语言的源程序不是编译型的,而是编译解释型的。

A:错B:对

答案:对Java语言既是面向对象的又是面向网络的高级语言.

A:错B:对

答案:对Java语言中变量是一种标识符。

A:对B:错

答案:对判定该运算结果是否正确:"12"+"23"="1223"

A:错B:对

答案:对下述两个命令:javac和java是不同的,编译时用前者,运行时用后者。

A:错B:对

答案:对组成JavaApplication的若干类中,有且仅有一个主类,只有主类中含有主方main()。

A:对B:错

答案:对

第二章单元测试

Java语言中字符型数据的长度是()位。

A:16B:64C:32D:8

答案:16下列描述的两种数据类型的长度不相等的是()。

A:整型和单精度浮点型B:字符型和布尔型C:字节型和布尔型D:短整型和字符型

答案:字符型和布尔型下列关于定义符号常量的描述中,错误的是().

A:定义符号常量时要赋初值B:符号常量既可定义为类成员,又可在方法中定义C:定义符号常量使用关键字constD:定义符号常量时必须给出数据类型

答案:定义符号常量使用关键字const下列表达式中,非法的是()

inta=5,b=6;doublec=1.1,d=2.2;

A:++dB:(ac)--C:a!=b?c:dD:c<<b

答案:(ac)--下列是Java语言中的复合数据类型,其中错误的是().

A:类B:接口C:枚举D:数组

答案:枚举若变量a是string类型的数据,那么表达式(a+a)的数据类型()

A:intB:longC:StringD:char

答案:String下列关于运算符优先级的说法中,不正确的一个是

A:括号可以改变运算的优先次序B:同一优先级的运算符在表达式中都是按照从左到右的顺序进行运算的 C:同一优先级的运算符在表达式中都是按照从右到左的顺序进行运算的 D:运算符按照优先级顺序表进行运算 

答案:同一优先级的运算符在表达式中都是按照从右到左的顺序进行运算的 已知y=2,z=3,n=4则经过n=n+-y*z/n运算后n的值为()

A:3B:1C:-1D:-3

答案:3已知x=2,y=3,z=4,则经过z-=--y-x--运算后z的值为()

A:4B:3C:1D:2

答案:4表达式(12==0)&&(1/0<0)的值

A:0B:trueC:运行时抛出异常D:false

答案:false下列变量定义中,合法的是()

A:int$xB:int#dimC:int_123D:intSummer_2010_gross_sale

答案:int$x;int_123;intSummer_2010_gross_sale下面是关于Java语言中数据类型的强制转换的描述,其中错误的是().

A:强制转换时使用强制转换运算符,形如(类型)B:赋值操作中都要采用强制类型转换C:浮点型数据强制转换为整型时,小数部分四舍五入D:当数据类型从高转换为低时需要强制转换

答案:赋值操作中都要采用强制类型转换;浮点型数据强制转换为整型时,小数部分四舍五入下列关于常量的描述中,错误的是().

A:数据:1、01、0x1都是Java语言中的整型常量。B:浮点型数12.456是单精度的C:字符串常量含有结束符‘\0'D:布尔型常量只有两个可选值:truefalse

答案:数据:1、01、0x1都是Java语言中的整型常量。;浮点型数12.456是单精度的下列定义中,哪些是错误的()。

A:intx=10.5;B:floaty=10.5;C:charc=10.5;D:doublez=10.5;

答案:intx=10.5;;charc=10.5;下列关于变量的默认值的描述,其中错误的是().

A:定义变量而没有进行初始化时,该变量具有默认值B:变量的默认值是可以被改变的C:字符型变量的默认值为换行符D:布尔型变量的默认值为true

答案:定义变量而没有进行初始化时,该变量具有默认值;变量的默认值是可以被改变的;字符型变量的默认值为换行符;布尔型变量的默认值为true下列关于变量定义的描述中,正确的是().

A:定义变量时,同一个类型多个变量间可用逗号分隔B:定义变量时必须要给变量初始化C:定义变量时至少应指出变量名字和类型D:定义变量时没有给出初值,该变量可能是无意义值

答案:定义变量时,同一个类型多个变量间可用逗号分隔;定义变量时必须要给变量初始化;定义变量时至少应指出变量名字和类型下列关于表达式的描述中,不正确的是().

A:逻辑表达式的操作数是逻辑型的B:赋值表达式的类型取决于右值表达式的类型C:任何表达式都有确定的值和类型D:算术表达式的类型由第一个操作数的类型决定

答案:逻辑表达式的操作数是逻辑型的;赋值表达式的类型取决于右值表达式的类型;算术表达式的类型由第一个操作数的类型决定下列哪些类型为基本数据类型()。

A:byteB:floatC:shortD:longE:intF:double

答案:byte;short;long;int下列属于Java关键字的是()

A:thisB:superC:finallyD:NULL

答案:this;super;finally下列表达式中,类型不是int型的是()

A:“a”+“b”B:1+2C:1+“2”D:'a'+'b'

答案:“a”+“b”;1+“2”;'a'+'b'下列声明语句是否正确()。

floatx=10.5;

A:对B:错

答案:错下列两句关于字符串的声明功能相同()。

Stringx;

Stringx=null

A:对B:错

答案:错若有声明语句:chara;则下面的语句是否正确()

a=1000;

A:错B:对

答案:对分号(;)、逗号(,)和冒号(:)都可作为Java语言中的分隔符。()

A:对B:错

答案:对ava语言的基础数据类型有种:整型、浮点型、字符型和布尔型。()

A:错B:对

答案:对Java语言是-种强类型语言,数据类型转换有两种:隐含转换和强制转换。数据由高类型转换到低类型时,采用强制转换,数据精度要受到损失。()

A:错B:对

答案:对关系表达式和逻辑表达式的值都是布尔型的()

A:对B:错

答案:对赋值表达式的值不能是逻辑型的。()

A:对B:错

答案:错运算符">>"和">>>"都是右移位运算符,其区别在于对向右移出的位是舍弃还是保留()

A:错B:对

答案:错说明或声明数组时不分配内存大小,创建数组时分配内存大小。

A:错B:对

答案:对

第三章单元测试

下列循环语句的循环次数是().

inti=5;

do{

System.out.println(i--);

i--;

}while(i!=0);

A.0B.1C.5D.无限

A:1B:无限C:5D:0

答案:无限下列循环语句中,循环体被执行的次数为().

for(inti=O,j=O;(j!=18)||(j<4);i++);

A:不确定B:4C:3D:无限

答案:无限下列说法正确的是()

A:C、JAVA程序中类名必须与文件名一样B:B、JAVA程序中可以有多个main方法C:D、JAVA程序的main方法中如果只有一条语句,可以不用{}(大括号)括起来D:A、JAVA程序的main方法必须写在类里面

答案:A、JAVA程序的main方法必须写在类里面下列输出结果是()

inta=0;

while(a<5){

switch(a){

case0:

case3:a=a+2;

case1:

case2:a=a+3;

default:a=a+5;

}

}

System.out.print(a);

A:C、10B:D、其他C:B、5D:A、0

答案:C、10下面有关for循环的描述正确的是()

A:A、for循环体语句中,可以包含多条语句,但要用大括号括起来B:B、for循环只能用于循环次数已经确定的情况C:D、for循环是先执行循环体语句,后进行条件判断D:C、在for循环中,不能使用break语句跳出循环

答案:C、在for循环中,不能使用break语句跳出循环在调用方法时,若要使方法改变实参的值,可以()。

A:两种说法都对:用基本数据类型作为参数;用对象作为参数B:两种说法都不对:用基本数据类型作为参数;用对象作为参数C:用基本数据类型作为参数D:用对象作为参数

答案:用对象作为参数类Test1定义如下:1、publicclassTest1{2、publicfloataMethod(floata,floatb){}3、4、}将以下哪种方法插入行3是不合法的()

A:C、publicfloataMethod(inta,intb){}B:A、publicfloataMethod(floata,floatb,floatc){}C:B、publicfloataMethod(floatc,floatd){}D:D、publicfloataMethod(inta,intb,intc){}

答案:B、publicfloataMethod(floatc,floatd){}下列关于for循环和while循环的说法中哪个是正确的()

A:D、两种循环的循环体都不能为空B:A、while循环能实现的操作,for循环也都能实现C:C、两种循环任何时候都可替换D:B、while循环判断条件一般是程序结果,for循环判断条件一般是非程序结果

答案:B、while循环判断条件一般是程序结果,for循环判断条件一般是非程序结果下列方法定义中正确的是()

A:C、intx(){…returnture;B:D、intx(inta,b){returna+b;}C:B、voidx(){…returnture;}D:A、intx(){charch='a';return(int)ch;}}

答案:A、intx(){charch='a';return(int)ch;}}当条件为真和条件为假时,()控制结构可以执行不同的动作。

A:C、forB:A、switchC:D、if/elseD:B、while

答案:D、if/else下面哪些循环不会导致死循环()。

A:C、for(intk=0;k<10;k--)B:A、for(intk=0;k<0;k++)C:D、for(intk=0;k>0;k++)D:B、for(intk=10;k>0;k--)

答案:A、for(intk=0;k<0;k++);D、for(intk=0;k>0;k++);B、for(intk=10;k>0;k--)关于while和do-while循环,下列说法不正确的是()

A:两种循环除了格式不同外,功能完全相同B:do-while语句首先计算终止条件,当条件满足时,才去执行循环体中的语句C:与do-while语句不同的是,while语句的循环至少执行一次D:其余都不对。

答案:两种循环除了格式不同外,功能完全相同;do-while语句首先计算终止条件,当条件满足时,才去执行循环体中的语句;与do-while语句不同的是,while语句的循环至少执行一次()表达式可以作为循环条件

A:D、count==i;B:C、bEqual=str.equals("q");C:A、i++;D:B、i>5;

答案:D、count==i;;B、i>5;下面哪几个函数是publicvoidexample(){…}的重载函数?

A:A、publicvoidexample(intm){…}B:D、publicintexample(intm,floatf){…}C:C、publicvoidexample2(){…}D:B、publicintexample(){…}

答案:A、publicvoidexample(intm){…};D、publicintexample(intm,floatf){…}给出下面的代码段:publicclassBase{intw,x,y,z;publicBase(inta,intb){x=a;y=b;}publicBase(inta,intb,intc,intd){//assignmentx=a,y=bw=d;z=c;}}

在代码说明//assignmentx=a,y=b处写入如下哪几个代码是正确的()

A:B、x=a,y=b;B:D、this(a,b);C:C、x=a;y=b;D:A、Base(a,b);

答案:D、this(a,b);;C、x=a;y=b;下列关于条件语句的描述中,错误的是()。

A:if语句中的条件可以使用任何表达式B:if语句中可以没有else子句和elseif子句C:if语句可以有多个else子句和elseif子句D:if语句的ifelse体内可以有循环语句

答案:if语句中的条件可以使用任何表达式;if语句可以有多个else子句和elseif子句下列关于开关语句的描述中,错误的是().

A:开关语句中,case子句的语句序列一定含有break语句.B:退出开关语句的唯一条件是执行break语句.C:开关语句中,case子句和default子句都可以有多个.D:开关语句中,default子句可以省略.

答案:开关语句中,case子句的语句序列一定含有break语句.;退出开关语句的唯一条件是执行break语句.;开关语句中,case子句和default子句都可以有多个.下列关于循环语句的描述中,错误的是()

A:floatB:任何一种循环体内都可以包含一种循环语句C:doubleD:循环体可以是空语句,也可以是空E:循环语句中,循环体至少被执行一次F:循环体内可以出现多个break语句

答案:循环体可以是空语句,也可以是空;循环语句中,循环体至少被执行一次下列特点中不属于Java的是()。

A:多线程B:跨平台C:报考性D:多继承

答案:多线程;跨平台;报考性结构化程序所要求的基本结构包括

A:GOTO跳转B:选择(分支)结构C:顺序结构D:重复(循环)结构

答案:选择(分支)结构;顺序结构;重复(循环)结构在异常处理中,若try中的代码可能产生多种异常则可以对应多个catch语句,若catch中的参数类型有父类子类关系,此时应该将父类放在后面,子类放在前面。

A:错B:对

答案:对在Java中对象可以赋值,只要使用赋值号(等号)即可,相当于生成了一个各属性与赋值对象相同的新对象。

A:对B:错

答案:错default语句块在switch语句中是必需的。

A:对B:错

答案:错if结构和if/else结构所做的动作相同。

A:错B:对

答案:错在switch(expression)语句中,expression的数据类型可以是double

A:对B:错

答案:错表达式(12==0)&&(1/0<0)的值为true

A:错B:对

答案:错下面程序段的输出结果是7。

publicclassTest{

publicstaticvoidmain(Stringargs[]){

inta,b;

for(a=1,b=1;a<=100;a++){

if(b>=10)break;

if(b%2==1){

b+=2:

continue;

}

}

System.OUt.println(a);

}

}

A:错B:对

答案:对break是Java语言中的跳转语句

A:对B:错

答案:对for(;;){}可作为无限循环语句。

A:对B:错

答案:对

第四章单元测试

已知表达式intm[]={0,1,2,3,4,5,6};下面哪个表达式的值与数组下标量总数相等?

A:m.length()+1B:m.length()C:B、m.lengthD:m.length+1

答案:B、m.length下列语句会造成数组newint[10]越界的是()

A:a[0]=a[0]-a[9]B:for(inti=0;i<=10;i++)a[i]++;C:a[0]+=9;D:a[9]=10;

答案:for(inti=0;i<=10;i++)a[i]++;当访问无效的数组下标时会发生()。

A:终止程序B:抛出异常C:系统崩溃D:直接跳过

答案:抛出异常下列关于字符串的描述中,错误的是().

A:Java语言中不再使用字符数组存放字符串B:两种不同的字符串都是String类的对象C:JavaApplication程序的main()的参数args[]是一个String类的对象数组,用它可存放若干个命令行参数D:Java语言中,字符串分为字符串常量和字符串变量两种

答案:两种不同的字符串都是String类的对象

score是一个整数数组,有五个元素,已经正确初始化并赋值,仔细阅读下面代码,程序运行结果是()

temp=score[0];

for(intindex=1;index<5;index++){

if(score[index]<temp){

temp=score[index];

}

}

A:编译出错B:求最大数C:求最小数D:找到数组最后一个元素

答案:求最小数编译并且执行以下代码,会出现什么情况?

publicclassQ{

publicstaticvoidmain(Stringargv[]){

intanar[]=newint[]{1,2,3};

System.out.println(anar[1]);

}

}

A:有错误,数组anar在初始化以前不能正常输出。B:有错误,数组的大小没有定义。C:1D:2

答案:2以下程序的输出结果是

publicclassko6_9

{

publicstaticvoidmain(Stringargs[])

{

intsum=0;

intko[][]={{1,2,3},{4,5,6},{7,8,9}};

for(intn=0;n<3;n++)

for(intm=0;m<3;m++)

sum+=ko[n][m];

System.out.println("sum="+sum);

}

}

A:sum=0B:sum=9C:sum=55D:sum=45

答案:sum=45执行下面程序段的输出结果为()。

publicclassQ

{

publicstaticvoidmain(Stringargv[])

{

intanar[]=newint[5];

System.out.println(anar[0]);

}

}

A:1B:0C:5D:2

答案:0以下各选项中能正确声明一个表示50个值为null的字符串数组的是()。

A:string[]a;B:chara[50][];C:stringa[];D:stringa[]=newString[50]

答案:stringa[]=newString[50]下列程序运行的结果是______。

publicclassExample{

Stringstr=newString("good");

char[]ch={’a’,’b’,’c’};

publicstaticvoidmain(Stringargs[]){

Exampleex=newExample();

ex.change(ex.str,ex.ch);

System.out.print(ex.str+"and");

System.out.print(ex.ch);

}

publicvoidchange(Stringstr,charch[]){

str="testok";

ch[0]=’g’;

}

A:testokandgbcB:testokandabcC:goodandabcD:goodandgbc

答案:goodandgbc下面关于数组的说法中,错误的是()

A:在类中声明一个整数数组作为成员变量,如果没有给它赋值,数值元素值为空B:数组必须先声明,然后才能使用C:数组本身是一个对象D:数组可以在内存空间连续存储任意一组数据

答案:在类中声明一个整数数组作为成员变量,如果没有给它赋值,数值元素值为空;数组可以在内存空间连续存储任意一组数据下列关于数组的定义形式,错误的是().

A:int[]d[3J=newint[2]<]B:int[]a;a=newint;;C:charb[];b=newchar[80];D:int[Jc=newchar[lOJ;

答案:int[]d[3J=newint[2]<];int[]a;a=newint;;;int[Jc=newchar[lOJ;引用数组元素时,数组下标可以是()。

A:其余都不是B:整型表达式C:整型常量D:整型变量

答案:整型表达式;整型常量;整型变量下面声明数组的写法正确的是()

A:int[3][]a;B:inta[];C:int[]a;D:int[][3]a;

答案:int[3][]a;;inta[];;int[]a;执行完代码int[]x=newint[25];后,以下说法不正确的是()

A:x[25]为0B:x[0]为空C:x[24]为0D:x[24]未定义

答案:x[25]为0;x[0]为空;x[24]未定义下列关于Java语言的数组描述中,正确的是()。

A:数组下标从0开始B:数组在赋初值和赋值时都不判界C:数组的长度通常用length表示D:数组元素是按顺序存放在内存的

答案:数组下标从0开始;数组的长度通常用length表示;数组元素是按顺序存放在内存的下面关于数组声明和初始化的语句哪个语法是正确的?

A:inta1[]={3,4,5};B:Stringa3[]=newString(3);C:int[][]a4=newint[3][3];D:B、Stringa2[]={"string1","string2","string3"};

答案:inta1[]={3,4,5};;int[][]a4=newint[3][3];;B、Stringa2[]={"string1","string2","string3"};下面哪一个不是合法的数组声明和构造语句()

A:int()a=newint[100];B:inta=newint[100];C:int[]a=[100];D:int[]a=newint[100];

答案:int()a=newint[100];;inta=newint[100];;int[]a=[100];对于数组int[][]t={{1,2,3}{4,5,6}};来说t.length=3,t[0].length=3

A:对B:错

答案:错数组由具有一个名字和相同类型的一组连续内存单元构成

A:对B:错

答案:对数组对象的长度在数组对象创建之后,还可以改变。

A:对B:错

答案:错一个数组可以存放许多不同类型的数值

A:对B:错

答案:错数组可以声明为任何数据类型

A:对B:错

答案:对java中数组的元素可以是简单数据类型的量,也可以是某一类的对象

A:对B:错

答案:对数组声明后其大小固定

A:对B:错

答案:错grid[9][5]是二维数组

A:对B:错

答案:对编译并且执行以下代码,结果为1?

publicclassQ{

publicstaticvoidmain(Stringargv[]){

intanar[]=newint[]{1,2,3};

System.out.println(anar[1]);

}

}

A:对B:错

答案:错二维数组的列的长度可以不同

A:对B:错

答案:对数组中可以包含什么类型的元素?

A:floatB:

数组

C:string型D:int型

答案:float;

数组

;string型;int型

第五章单元测试

类成员和对象成员的区别是前者加()修饰符

A:privateB:staticC:abstractD:final

答案:static下列访问权限控制符中权限最小的是

A:privateB:publicC:protectedD:默认

答案:private创建对象时调用()方法

A:getB:setC:mainD:构造

答案:构造将类放在包中,使用()语句。

A:packageB:namespaceC:importD:include

答案:package类内定义了一个String类型的属性,未赋初值,则其值为

A:“空串”B:“空格”C:"abc"D:"null"

答案:"null"包外子类能访问,非子类不能访问,指的是哪种修饰符修饰的成员?

A:protectedB:默认C:publicD:private

答案:protected关于import语句说法错误的是:

A:只能有一条B:放在类外面C:支持通配符D:可以有多条

答案:只能有一条对于private成员,允许访问的是

A:包内B:类外C:包外D:类内

答案:类内要访问包外的某个无继承关系的类的方法,需要满足

A:类和方法都是公共的B:方法是公共的就行C:类和方法都不必是公共的D:类是公共的就行

答案:类和方法都是公共的定义类时,用()指代当前对象

A:方法B:属性C:类D:变量

答案:类构造函数主要用于创建对象时调用。

A:对B:错

答案:对通过类名可以直接调用实例方法(不用static修饰)。

A:错B:对

答案:错同一类中,main方法可以直接调用实例方法。

A:对B:错

答案:错构造方法的返回值是void,方法名同类名。

A:对B:错

答案:错通过对象名可以调用静态方法

A:错B:对

答案:对定义类时,构造方法必须定义。

A:错B:对

答案:错成员属性必须初始化。

A:对B:错

答案:错导入包中的类使用include语句。

A:错B:对

答案:错package语句可以省略,写的话要放在第一句。

A:对B:错

答案:对公共类中的方法在包外允许访问。

A:对B:错

答案:错类的特征有()

A:继承B:抽象C:封装D:多态

答案:继承;抽象;封装;多态final可以修饰

A:成员属性B:方法C:局部变量|常量D:类

答案:成员属性;方法;局部变量|常量;类外部类的访问控制符可以是

A:privateB:不加C:publicD:protected

答案:不加;public下列有关构造方法说法正确的是

A:返回类型为voidB:构造方法只能有一个C:方法名同类名D:可以有多个

答案:方法名同类名;可以有多个关于静态方法的访问说法正确的是

A:不可通过类名访问B:可通过对象访问C:不可通过对象访问D:可通过类名访问

答案:可通过对象访问;可通过类名访问关于实例成员访问说法正确的是

A:可在同一类内其它实例方法内直接用方法名调用B:可在同一类内其它静态方法内直接用方法名调用C:可通过类名访问D:可通过对象访问

答案:可在同一类内其它实例方法内直接用方法名调用;可通过对象访问Aa=newA();则Ab=a完成的功能为:

A:a,b指向同一个对象B:a,b指向两个相同内容的对象C:让b指向a所指对象的一个copyD:将a中地址值赋给b

答案:a,b指向同一个对象;将a中地址值赋给b成员属性的访问控制符可以是

A:publicB:不加C:privateD:protected

答案:public;不加;private;protected下列说法错误的是

A:一个源文件中可以定义多个公共类B:一个源文件中最多只能定义一个公共类C:一个源文件中只能定义一个类D:一个源文件中可以定义多个类

答案:一个源文件中可以定义多个公共类;一个源文件中只能定义一个类下列哪种修饰符修饰的成员可以通过包内的其他类访问

A:privateB:protectedC:默认D:public

答案:protected;默认;public

第六章单元测试

类之间、接口之间继承使用关键字()

A:implementsB:extendsC:extendD:implement

答案:extends不能被继承的类或不能被覆盖的方法用()修饰

A:finalB:abstractC:voidD:static

答案:final接口中的属性都是()的

A:publicabstractB:staticabstractC:publicstaticfinalD:privatefinal

答案:publicstaticfinal抽象方法f写法正确的是

A:voidf();B:abstractvoidf(){}C:abstractvoidf();D:其余都对

答案:abstractvoidf();类实现的多个接口用()分隔

A:冒号B:逗号C:分号D:短横线

答案:逗号下列不能同时使用的是

A:abstractfinalB:staticfinalC:publicabstractD:publicstatic

答案:abstractfinal实现接口使用关键字

A:extendB:extendsC:implementD:implements

答案:implements下列抽象方法定义正确的是()

A:abstractvoidf();B:voidf(){}C:abstractvoidf(){}D:voidf();

答案:abstractvoidf();一个类没定义父类,则它的父类是

A:StringB:MathC:ParentD:Object

答案:Object子类会继承父类的()

A:只继承属性B:其余都对C:只继承方法D:属性和方法

答案:属性和方法Java中一个类只能有一个父类,却可以实现多个接口

A:对B:错

答案:对父类型变量可以赋值为子类对象,反之父类对象赋给子类型变量则需要强制转换

A:对B:错

答案:错子类改写父类方法时,可以缩小方法访问权限。

A:错B:对

答案:错静态方法中可以出现this或super

A:错B:对

答案:错重载的方法要求方法头完全相同。

A:对B:错

答案:错创建子类对象时,默认先调用父类无参的构造方法。

A:错B:对

答案:对实现接口的非抽象类不必实现所有接口中定义的抽象方法。

A:对B:错

答案:错重载的方法参数个数及类型都相同,参数名不同也是允许的。

A:错B:对

答案:错定义一个类没指定父类时,它就没有父类。

A:对B:错

答案:错类A实现了接口I,则语句Ii=newA();是正确的

A:对B:错

答案:对abstract能修饰

A:属性B:类C:接口D:方法

答案:类;方法下列说法正确的是:

A:接口中可以定义构造方法B:非抽象类中可以有抽象方法C:抽象类中可以定义构造方法D:抽象类中可以有非抽象方法

答案:抽象类中可以定义构造方法;抽象类中可以有非抽象方法多态的两种实现方式

A:重载B:封装C:覆盖D:继承

答案:重载;覆盖B是A的子类,下列语句正确的是

A:Bb=(B)newA();B:Bb=newA();C:Aa=newB();D:Aa=newA();

答案:Aa=newB();;Aa=newA();关于super说法正确的是

A:不能出现在静态方法中B:指代父类对象,访问父类成员C:在子类构造方法中调用父类构造方法D:可用在静态方法中

答案:不能出现在静态方法中;指代父类对象,访问父类成员;在子类构造方法中调用父类构造方法在JDK1.8中,接口方法除了抽象方法,还允许有

A:普通方法B:静态方法C:默认方法D:其余都可以

答案:静态方法;默认方法下列说法正确的是:

A:接口可以是protected的。B:接口可以是private的C:接口中的属性的publicstaticfinal修饰符可以省略D:接口中抽象方法的publicabstract修饰符可以省略

答案:接口中的属性的publicstaticfinal修饰符可以省略;接口中抽象方法的publicabstract修饰符可以省略接口的作用有

A:提供多重继承B:约定行为规范供子类实现C:提高程序的扩展性D:提供方法实现细节

答案:提供多重继承;约定行为规范供子类实现;提高程序的扩展性抽象方法可以存在于()中

A:其余都可以B:普通类C:接口D:抽象类

答案:接口;抽象类下列哪些修饰符可以搭配使用

A:staticfinalB:staticabstractC:abstractfinalD:publicabstract

答案:staticfinal;publicabstract

第七章单元测试

下列哪个类是所有类的直接或间接父类。

A:RuntimeB:SystemC:ObjectD:String

答案:Object那个包不用import导入就能用?

A:java.sqlB:java.langC:java.ioD:java.util

答案:java.lang表示字符串常量的类是

A:char[]B:StringBufferC:StringD:char

答案:String日期类Date在哪个包下?

A:java.sqlB:java.ioC:java.langD:java.util

答案:java.utilMath类中运算方法主要是()方法

A:静态B:实例C:抽象D:最终

答案:静态求字符串常量的长度使用()

A:length属性B:size属性C:length方法D:size方法

答案:length方法DecimalFormat类属于()包

A:java.textB:java.ioC:java.sqlD:java.util

答案:java.text输出一个对象时,会调用它的()方法

A:toStringB:cloneC:getClassD:hashCode

答案:toString对于两个字符串s1、s2,表达式s1==s2是判断它们()是否相同

A:首字符B:长度C:地址D:内容

答案:地址Java系统类的字节码文件都压缩为()文件

A:txtB:zipC:warD:jar

答案:jar"abcd".substring(0,2)的值为"abc'

A:对B:错

答案:错判断两个字符串内容是否相等用==

A:对B:错

答案:错基本类型和包装类型间变量可以相互赋值。

A:错B:对

答案:对所有包都需要import语句导入

A:对B:错

答案:错System.out中的out是System类的实例成员。

A:对B:错

答案:错char对应的封装类是Char

A:对B:错

答案:错从jdk1.4开始,Java提供了基本类型和包装类之间的自动转换。

A:对B:错

答案:错字符串和字符数组可以相互转换。

A:错B:对

答案:对字符串对象的trim方法可以将字符串中所有空格去除。

A:错B:对

答案:错字符串的compareTo方法返回类型为boolean类型。

A:对B:错

答案:错下列哪种方法可以将"123"转换成整数123

A:"123"-"0"B:Integer.parseInt("123")C:newInteger("123").intValue();D:(int)"123"

答案:Integer.parseInt("123");newInteger("123").intValue();java.lang包下的类有

A:StringB:SystemC:MathD:Object

答案:String;System;Math;Object把整数123转换为字符串“123”的方法有

A:newInteger(123).toString()B:(String)123C:123+空格D:123+空串

答案:newInteger(123).toString();123+空串Object中的equals方法作用

A:等同于==B:判断对象是否是同一个C:判断对象内容是否相等D:判断对象地址是否相同

答案:等同于==;判断对象是否是同一个;判断对象地址是否相同java.util包的类有

A:DateB:CalendarC:SimpleDateFormatD:BigInteger

答案:Date;CalendarSimpleDateFormat对象的方法有

A:formatB:parseC:charAtD:append

答案:format;parse用于高精度计算的类有

A:BigIntegerB:DecimalFormatC:MathD:BigDecimal

答案:BigInteger;BigDecimalSystem类的方法有

A:gcB:exitC:arraycopyD:currentTimeMillis

答案:gc;exit;arraycopy;currentTimeMillisMath类中方法有

A:roundB:randomC:sqrtD:pow

答案:round;random;sqrt;powjava系统包有

A:java.swingB:java.langC:java.sqlD:java.util

答案:java.lang;java.sql;java.util

第八章单元测试

抛出系统或自定义的异常对象用()关键字

A:catchB:throwsC:tryD:throw

答案:throw方法头中声明该方法可能发生某些异常用()关键字。

A:finallyB:throwC:tryD:throws

答案:throws执行语句charc="abc".charAt(3);会产生什么异常

A:NullPointerExceptionB:StringIndexOutOfBoundsExceptionC:NumberFormatExceptionD:ArithmeticException

答案:StringIndexOutOfBoundsException执行Integer.parseInt("abc")发生的异常是()。

A:NullPointerExceptionB:ArithmeticExceptionC:StringIndexOutOfBoundsExceptionD:NumberFormatException

答案:NumberFormatException关于异常的描述中,错误的是()。

A:不仅Java语言有异常处理,C++语言也有异常处理。B:出现异常不是简单结束程序,而是执行某种处理异常的代码,设法恢复程序的执行。C:异常是一种程序在运行中出现的不可恢复执行的错误。D:异常是一种经过修正后程序仍可执行的错误。

答案:异常是一种程序在运行中出现的不可恢复执行的错误。下列关于用户创建自己的异常的描述中,错误的是()。

A:为实现抛出异常,需在可能抛出异常的方法中书写throw语句B:使用异常处理不会使整个系统更加安全和稳定C:捕捉异常的方法是使用try-catch-finally语句格式D:创建自己的异常应先创建一个异常类

答案:使用异常处理不会使整个系统更加安全和稳定Exception类的父类是以下哪一个()。

A:ScannerB:MathC:ThrowableD:Error

答案:Throwable算术异常类是下面哪一个()。

A:ClassCastExceptionB:NullPointerExceptionC:ArithmeticExceptionD:ArrayIndexOutOfBoundsException

答案:ArithmeticException数组下标越界异常类是()。

A:NullPointerExceptionB:ClassCastExceptionC:ArithmeticExceptionD:ArrayIndexOutOfBoundsException

答案:ArrayIndexOutOfBoundsException类型强制转换异常是()。

A:NullPointerExceptionB:ClassCastExceptionC:ArrayIndexOutOfBoundsExceptionD:ArithmeticException

答案:ClassCastException下列属于非检验异常(可以不捕获)的有()。

A:NullPointerExceptionB:ArithmeticExceptionC:IOExceptionD:NumberFormatException

答案:NullPointerException;ArithmeticException;NumberFormatException下列关于try-catch-finally语句的描述中,正确的是()。

A:catch()方法跟在try语句后面,它可以是一个或多个B:finally语句后面的程序段总是被执行的,该语句起到提供统一接口的作用C:catch()方法有一个参数,该参数是某种异常类的对象D:try语句后面的程序段将给出处理异常的语句

答案:catch()方法跟在try语句后面,它可以是一个或多个;finally语句后面的程序段总是被执行的,该语句起到提供统一接口的作用;catch()方法有一个参数,该参数是某种异常类的对象下列关于异常的描述中,正确的是()。

A:在说明要抛出异常的方法时应加关键字throwsB:捕捉到发生的异常可在当前方法中处理,也可以抛到调用该方法的方法中处理C:中可以有多个用逗号分隔的异常D:抛出异常的方法中要使用下述抛出异常语句:throw;其中,是异常类的类名

答案:在说明要抛出异常的方法时应加关键字throws;捕捉到发生的异常可在当前方法中处理,也可以抛到调用该方法的方法中处理;中可以有多个用逗号分隔的异常RuntimeException运行异常类包含下面哪个()。

A:ErrorB:ClassCastExceptionC:ArrayIndexOutOfBoundsExceptionD:ArithmeticException

答案:ClassCastException;ArrayIndexOutOfBoundsException;ArithmeticExceptionThrowable有两个重要的子类是()。

A:MathB:ErrorC:ExceptionD:Button

答案:Error;Exception下面说法正确的是()。

A:异常处理可以使整个系统更加安全稳定。B:用户可以建立自定义异常C:多个catch块排列时,没有先后顺序,可以任意调整。D:异常可有可无,没什么用处

答案:异常处理可以使整个系统更加安全稳定。;用户可以建立自定义异常异常处理的方法可以归纳为哪三种()。

A:程序运行时异常通常不做处理,而由Java虚拟机自动进行处理B:使用子句throw声明抛出异常C:关闭程序D:使用try-catch-finally语句捕获异常

答案:程序运行时异常通常不做处理,而由Java虚拟机自动进行处理;使用子句throw声明抛出异常;使用try-catch-finally语句捕获异常下面关于异常处理的描述中,正确的是()。

A:finally语句是必须有的B:数组下标越界异常类是ArrayIndexOutOfBoundsException。C:异常处理可以使整个系统更加安全稳定。D:异常处理是在编译时进行的。

答案:数组下标越界异常类是ArrayIndexOutOfBoundsException。;异常处理可以使整个系统更加安全稳定。下面关于异常处理中,有关catch语句的描述正确的是()。

A:多个catch块排列时,没有先后顺序,可以任意调整。B:catch语句可以只设计一个C:catch语句和finally语句的顺序可以互换D:catch语句可以设计多个

答案:catch语句可以只设计一个;catch语句可以设计多个多个catch块排列时,没有先后顺序,可以任意调整。

A:对B:错

答案:错try和finally之间可以省略catch块。

A:错B:对

答案:对异常类可以自定义。

A:对B:错

答案:对异常与否都要执行的语句应该放在finally块中。

A:错B:对

答案:对异常处理是在编译时进行的。

A:错B:对

答案:错异常处理可以使整个系统更加安全稳定。

A:对B:错

答案:对在异常处理中,出现异常和抛出异常是一回事。

A:对B:错

答案:错如果异常类没有被捕获将会产生不正常的终止。

A:错B:对

答案:对Exception类只有一个子类为RuntimeException。

A:错B:对

答案:错数组下标越界异常类是ArithmeticException。

A:对B:错

答案:错

第九章单元测试

Java语言的集合框架类定义在()语言包中

A:java.langB:java.utilC:java.arrayD:java.coIlections

答案:java.util对于Map接口,获取该接口对象中的所有键对象的方法是()。

A:putB:getC:keySetD:values

答案:keySet关于集合类描述正确的是()。

①集合类中容纳的都是指向0bject类对象的指针

②集合类容纳的对象都是Object的类例

③只能容纳对象

④只能容纳基本数据类型

A:①、②、③B:①、②、③、④C:①、③D:①、②

答案:①、②、③Java中,关于HashMap类的描述,错误的是()。

A:HashMap允许将null用作键B:HashMap允许将null用作值C:HashMap能够保证其中元素的顺序D:HashMap使用键/值的形式保存数据

答案:HashMap能够保证其中元素的顺序将MaP集合中的所有值对象以Collection集合的形式返回的方法()

A:keySet()B:get()C:containsKey()D:values()

答案:values()shanchu对于Set接口,求两集合的交集的方法()。

A:containsAll()B:retain()C:retainAll()D:contains()

答案:retainAll()()可实现有序的对象操作。

A:HashSetB:HashMapC:TreeMapD:LinkedList

答案:TreeMap;LinkedList迭代器(lterator)接口所定义的方法是().

A:remove()B:next()C:nextElement()D:hasNext()

答案:remove();next();hasNext()List接口给出的实现类有()

A:LinkedListB:TreeSetC:HashSetD:ArrayList

答案:LinkedList;ArrayListSet接口给出的实现类有()

A:ArrayListB:LinkedListC:TreeSetD:HashSet

答案:TreeSet;HashSet对集合元素,实现其遍历方法有()。

A:采用Iterator接口遍历元素。B:利用传统的循环语句遍历集合元素。C:采用新型for循环(增强for循环)。D:利用数组下标方式。

答案:采用Iterator接口遍历元素。;利用传统的循环语句遍历集合元素。;采用新型for循环(增强for循环)。TreeSet类的主要方法有哪些()。

A:publicObjectlast()B:publicObjectfirst()C:publicObjectget(inti)D:publicObjectget()

答案:publicObjectlast();publicObjectfirst()允许存在重复对象的集合接口或者类。

A:MapB:CollectionC:SetD:List

答案:Collection;ListLinkedList类,获取首尾元素的方法()

A:removeFirst()B:getLast()C:removeLast()D:getFirst()

答案:removeFirst();getLast()对集合操作,有两大类,主要是()

A:集合之间操作B:删除集合元素C:集合与元素之间的操作D:查找

答案:集合之间操作;集合与元素之间的操作集合(Set)是通过键-值对的方式来存储对象的。()

A:错B:对

答案:错Map接口是自Collection接口的继承而来()

A:对B:错

答案:错集合(Set)中元素类型必须是相同的。()

A:对B:错

答案:错集合(Set)中可以包含相同的对象。()

A:对B:错

答案:错数组中的元素都是基本类型的数据,而集合中的元素都是对象.()

A:错B:对

答案:错List接口不允许存放重复的对象.

A:错B:对

答案:错Collection接口是允许存在重复的对象。

A:对B:错

答案:对Collection接口给出了集合与集合元素之间、集合之间的操作方法。

A:错B:对

答案:对Iterator接口给出对集合元素遍历的方法。

A:错B:对

答案:对Map接口以键值对(key-value)的形式存放对象,其中的键(key)对象不可以重复,值(value)对象可以重复.

A:对B:错

答案:对Collection接口给出了集合与集合元素之间、集合之间的操作方法,Iterator接口给出对集合元素遍历的方法.

利用Collection接口或子接口或实现类的iterator()方法,可得到Iterator接口对象。其语句格式为:

Iteratoriterator=集合对象名.iterator();

该描述是否正确。

A:错B:对

答案:对List接口的实现类有两种:

ArrayList:基于顺序存储方式给出的实现类

LinkedList:链式存储方式给出的实现类

在使用时,通常声明为List类型,实例化时根据实际情况,实例化为ArrayList或LinkedList对象.

该描述是否正确。

A:错B:对

答案:对Set接口用以描述不能包含重复元素的集合。

该接口具有的两种实现类:HashSet类、TreeSet类。

该描述是否正确。

A:对B:错

答案:对集合中的每一个元素都具有一定的数据类型,任何数据类型的对象都可以存放在集合中,并提供了对集合及其集合元素的相关的操作方法。该描述正确吗?

A:对B:错

答案:对

第十章单元测试

实现字符流的读操作类是()。

A:WriterB:FileOutputStreamC:FileReaderD:FilelnputStream

答案:FileReader可用于获得文件或目录的路径名的类为().

A:FilelnputStreamB:RandomAccessFileC:BufferedReaderD:File

答案:File用于关闭流的方法是().

A:read()B:close()C:flush()D:write()

答案:close()对于下面的Java语句:

Filef=newFile("d:\src\Hello.txt");

出现的错误()。

A:文件类表示的是目录而不是文件B:文件类构造方法的参数不能是字符串C:文件类构造方法的字符串参数必须有转义D:文件类的构造方法不需要参数

答案:文件类构造方法的字符串参数必须有转义()方法表示获取一个字节的数据。

A:flush()B:close()C:write()D:read()

答案:read()()是节点流.

A:BufferedReaderB:FilterlnputStreamC:StringBufferlnputStreamD:InputStreamReader

答案:BufferedReader进行文件字符流操作的类是().

A:FileWriterB:ReaderC:WriterD:FilelnputStream

答案:FileWriter可实现对基本数据类型的读操作类是().

A:DataOutputStreamB:FileWriterC:FileReaderD:DatalnputStream

答案:DatalnputStreamScanner类提供了输入字符出的方法,下面哪个方法可以实现字符串的输入且该串可以含有空格()。

A:nextB:nextLongC:nextStringD:nextLine

答案:nextLine下面哪个类输入字节流类()。

A:FileReadB:FileC:FileInputStringD:FileWrite

答案:FileInputString对于存放在D盘的vb文件夹下的文件cj.dat,在Java中,可以访问的路径表示是正确的是()。

A:d:/vb/cj.datB:d://vb//cj.datC:d:\\vb\\cj.datD:d:\vb\cj.dat

答案:d:/vb/cj.dat;d:\\vb\\cj.dat对于存放在D盘的vb文件夹下的文件cj.dat,创建该文件的File类对象的语句,正确的是()。

A:Filef=newFile("d:/vb","cj.dat");B:Filef=newFile("d:/vb/cj.dat");C:Filef=newFile("d:\\vb","cj.dat");D:Filef=newFile("d:\\vb\\cj.dat");

答案:Filef=newFile("d:/vb","cj.dat");;Filef=newFile("d:/vb/cj.dat");;Filef=newFile("d:\\vb","cj.dat");;Filef=newFile("d:\\vb\\cj.dat");内外存的数据交换,采用“流”的方式实现,根据流的传输方式,分为()。

A:字符流B:字节流C:输入流D:输出流

答案:输入流;输出流流可以分为字节流/字符流,输入流/输出流,具有缓冲的流,按这种方式组合,下面哪些是正确的流类()。

A:输入字节流类B:输出字符流类C:具有缓冲的字节输入流类D:具有缓冲的字符输入流类

答案:输入字节流类;输出字符流类;具有缓冲的字节输入流类;具有缓冲的字符输入流类对于文件"d:\abc\x.txt",若实现读该文件的内容,需要创建扫描器对象,其正确语句为()

A:Filef=newFile("d:\\abc\\x.txt");

Scannercin=newScanner(f);B:Filef=newFile("d://abc//x.txt");

Scannercin=newScanner(f);C:Filef=newFile("d:\abc\x.txt");

Scannercin=newScanner(f);D:Filef=newFile("d:/abc/x.txt");

Scannercin=newScanner(f);

答案:Filef=newFile("d:\\abc\\x.txt");

Scannercin=newScanner(f);;Filef=newFile("d:/abc/x.txt");

Scannercin=newScanner(f);下面那些流是字符流类?

A:FileWriterB:FileReaderC:FileInputStreamD:PrintWriterE:FileOutputStream

答案:FileWriter;FileReader;PrintWriter字节流转换为字符流的读写类有哪些

A:FileWriteB:FileInputStringC:FileReadD:File

答案:FileWrite;FileRead对文件非属性操作的方法是()。

A:delete()B:exists()C:length()D:getName()

答案:delete();exists()哪些是获取文件属性的方法()。

A:getName()B:exists()C:getPath()D:length()

答案:getName();getPath();length()Scanner类,输入字符串的方法()。

A:next()B:nextLine()C:hasNext()D:nextString()

答案:next();nextLine()当InputStream对象读到文件结束处,返回-1。

A:对B:错

答案:对文件缓冲流的作用是提高文件的读写效率。

A:错B:对

答案:对通过File类可对文件属性进行修改。

A:错B:对

答案:对对于存放在D盘的a文件夹下的文件b.txt,其Java绝对路径为"d:\a\

温馨提示

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

评论

0/150

提交评论