Java 第一次作业
第一次作业
题量: 10 满分: 100
作答时间:09-17 19:26至09-19 20:26
智能分析 80分
一. 单选题(共10题,100分)
1. (单选题)下列哪个是JDK提供的编译器?
A. java.exe
B. javac.exe
C. javap.exe
D.javaw.exe
我的答案: B:javac.exe;正确答案: B:javac.exe;
解析:
javac.exe 是java语言编译器,用来将java源文件编译成java字节码。
java.exe 是java解释器,用来解释java字节码。
javap.exe 是java反汇编器,用来反汇编java字节码。
javaw.exe 是java无窗口执行器,用来运行java字节码。
2. (单选题)下列哪个是Java应用程序主类中正确的main方法?
A. public void main (String args[ ])
B. static void main (String args[ ])
C. public static void Main (String args[ ])
D. public static void main (String args[ ])
我的答案: D:public static void main (String args[ ]);正确答案: D:public static void main (String args[ ]);
解析:Java应用程序的入口点是主类中的main方法。main方法必须具有特定的签名,才能被Java虚拟机识别并执行。正确的main方法签名应该包括以下几个部分:
访问修饰符:必须是public,表示该方法可以被任何类访问。
静态修饰符:必须是static,表示该方法属于类,而不属于对象。
返回类型:必须是void,表示该方法没有返回值。
方法名称:必须是main,且大小写敏感。
参数列表:必须包含一个String类型的数组参数,用于接收命令行参数。
3. (单选题)下列哪项字符序列可以做为标识符?
A. true
B. default
C. int
D. good—class
我的答案: C:int;正确答案: D:good—class;
解析:本题考查的是标识符相关知识。标识符由字母(A-Z,a-z)、数字(0-9)、下划线“_”、美元$符号组成,并且首字符不能是数字,但可以是字母或者下划线。在C语言中,标识符是区分大小写的。
选项A、B、C中true、default、int是C语言中的关键字,不能作为用户标识符;严谨来说,选项D中good—class中“—”(中文短破折号)不能用于字符串的界定,因此good—class是个不合法的字符串,不能作为标识符。
4. (单选题)下列哪项是不正确的float变量的声明?
A. float foo = -1;
B. float foo = 1.0;
C. float foo = 42e1;
D. float foo = 3.03d;
我的答案: D:float foo = 3.03d; ;正确答案: A:float foo = -1; ;
解析:本题考查的是float类型数据的声明。float(单精度浮点数)的赋值可以为小数形式,也可以为指数形式,但是e后面的数字要求是整数。在Java中,小数会被默认为double类型的值。
故本题:A选项是正确的float变量声明,因为-1是一个整数(整型),可以自动转换为float。B选项错误,没有f或F后缀,此时JVM会默认浮点数为double类型的浮点数。C选项错误,因为float foo=42e1为错误写法,系统会认为你输入的是42.0e1,而不是整型,而加了小数点的系统又会认为是双精度浮点,等价于42×101=420.0,还是double类型,如果转换成float想转就要强制转换(float)42e1或者 float x=42e1f都可以。D选项错误,d或D后缀表示双精度double类型。
5. (单选题)下列哪一项叙述是正确的?
A. char型字符在Unicode表中的位置范围是0至32767
B. char型字符在Unicode表中的位置范围是0至65535
C. char型字符在Unicode表中的位置范围是0至65536
D. char型字符在Unicode表中的位置范围是-32768至32767
我的答案: B:char型字符在Unicode表中的位置范围是0至65535;正确答案: B:char型字符在Unicode表中的位置范围是0至65535;
解析:本题考查C语言的字符数据类型。char型字符使用1个字节存储,在Unicode表中的位置范围是0至65535。ASCII字符则为0至127。
6. (单选题)以下哪项是正确的char型变量的声明?
A. char ch = "R";
B. char ch = '\\'
C. char ch = 'ABCD';
D. char ch = "ABCD";
我的答案: B:char ch = '\\';正确答案: B:char ch = '\\';
解析:本题考查字符变量的声明。char ch="R",字符串赋值给字符变量,所以A选项错误;char ch='\',字符变量赋值给字符常量,B选项正确。char型变量用于存储单个字符,占两个字节,通常使用单引号来表示字符常量。
7. (单选题)对于int a[ ] = new int[3];下列哪个叙述是错误的?
A. a.length的值是3。
B. a[1]的值是1。
C. a[0]的值是0。
D. a[a.length-1]的值等于a[2]的值。
我的答案: B:a[1]的值是1。;正确答案: B:a[1]的值是1。;
解析:本题考查Java数组相关知识。数组的长度可以通过数组名后面加上.length来获取,得知数组a的长度是3,索引范围是从0到2,即a[0],a[1],a[2],在定义初始化后,a[0]的值是0,a[1]的值是0,a[2]的值是0,a.length的值是3。
//用程序来验证:
public class OutputData {
public static void main(String[] args) {
int a[] = new int[3];
System.out.println("a[0]="+a[0]);
System.out.println("a[1]="+a[1]);
System.out.println("a[2]="+a[2]);
}
}
//运行输出结果:
a[0]=0
a[1]=0
a[2]=0
由上可知对于没有赋值的数组,默认数组的值都是“0”。
8. (单选题)下列哪个叙述是正确的?
A. 5.0/2+10的结果是double型数据。
B. (int)5.8+1.0的结果是int型数据。
C. '苹'+ '果'的结果是char型数据。
D. (short)10+'a'的结果是short型数据。
我的答案: A:5.0/2+10的结果是double型数据。;正确答案: A:5.0/2+10的结果是double型数据。;
解析:本题考查了Java语言中表达式计算的基础知识。
在A选项中,表达式5.0/2+10的结果是double型数据。其中,5.0是一个double型字面量,2是一个int型字面量。根据Java语言中的类型提升规则,当两个不同类型的操作数进行运算时,较小类型的操作数会被提升为较大类型。因此,在计算5.0/2时,int型字面量2会被提升为double型,然后在与5.0进行除法运算。除法运算的结果是一个double型数据2.5,接着,2.5与int型字面量10进行加法运算,同样根据类型提升规则,10会被提升为double型,然后再与2.5进行加法运算。最终得到的结果是12.5,它是一个double型数据。
在B选项中,(int)5.8表示将double型字面量5.8强制转换为int型。强制转换会截断小数部分,因此(int)5.8的结果是5。接着,int型数据5与double型字面量1.0进行加法运算,根据类型提升规则,5会被提升为double型5.0,再与1.0进行加法运算。最终得到的结果是6.0,它是一个double型数据。
在C选项中,表达式'苹'+'果'并不是一个合法的Java表达式。在Java语言中,字符字面量必须用单引号括起来,并且只能包含一个字符。因此,“苹”和“果”都不是合法的字符字面量。
在D选项中,表达式[(short)10+'a']的结果不一定是short型数据。在这个表达式中,(short)10表示将int型字面量10强制转换为short型。强制转换不会改变数值,因此(short)10的结果仍然是10。但由于表达式中包含字符字面量'a',而字符字面量在参与运算时会被转换为其对应的ASCII值(即97),因此表达式[(short)10+'a']相当于[(short)10+97],其结果为107,并且结果类型为int。
9. (单选题)用下列哪个代码替换程序标注的【代码】会导致编译错误?
public class E {
public static void main (String args[]) {
int m=10,n=0;
while(【代码】) {
n++; }
}
}
A. m-->0
B. m++>0
C. m = 0
D. m>100&&true
我的答案: C:m = 0 ;正确答案: C:m = 0 ;
解析:本题考查while循环条件的知识。while循环条件可以是任意表达式,当表达式为真时,则执行循环,如果为假,则退出循环。while循环条件也可以是布尔表达式boolean类型,当布尔表达式为真时,执行循环体,否则退出循环,而C是赋值语句,所以会编译错误,要注意=是赋值,==才是等于。
10. (单选题)下列程序的输出结果是什么?
public class E {
public static void main (String args[ ]) {
char x='你',y='e',z='吃';
if(x>'A'){
y='苹';
z='果';
}
else
y='酸';
z='甜';
System.out.println(x+","+y+","+z);
}
}
A. 你,苹,甜
B. 你
C. 苹
D. 甜
我的答案: A:你,苹,甜;正确答案: A:你,苹,甜;
解析:根据程序中的条件语句和字符比较,分析如下:
x的值为'你',对应的Unicode编码大于'A',所以条件 x > 'A' 成立,进入if分支。在if分支中,y被赋值为'草',z被赋值为'果',程序继续执行,到达else分支。然而,由于在if分支中已经改变了y和z的值,else分支的代码不会执行。最后,z被赋值为'甜'。
- 感谢你赐予我前进的力量