1
1.假设有如下程序:
public class Demo {
public static void main(String args[]) {
int x = 10 ;
double y = 20.2 ;
long z = 10L;
String str = "" + x + y * z ;
System.out.println(str) ;
}
}
最终执行结果是什么?
A. 10202.0
B. 0212.0
C. 302.0
D. 1020.210
正确答案是:A
因为运算符优先级,先计算 y * z 也就是 20.2*10= 202.0,然后是 “” + x + 202.0,同级从左到右。
“” + 则变成字符串拼接。
最后结果为"10202.0"
3
3.下面关于Java程序编写描述正确的一项是?
A. Java程序直接利用javac.exe命令就可以直接运行程序
B. 一个Java文件中可以定义有多个class声明,并且类名称可以与文件名称同名
C. 一个Java文件可以使用public class定义多个程序类
D. Java文件的后缀必须使用“*.javac”
正确答案是:B
A错误是因为javac命令是用于编译源文件的。C错误是因为一个Java文件只能定义一个public class,而非public的类可以定义多个。D错误是因为Java源文件后缀名应该为"*.java",编译源文件所得的java字节码文件的后缀名为".class"。
8
8.下面关于Java的特点不正确的一项是?
A. Java具备跨平台性,可以在任意的操作系统间进行移植
B. Java编写的程序可以直接解释执行,属于解释型的编程语言类型
C. Java中具备垃圾收集机制,这样在用户编写代码中无须处理手工处理内存空间的释放操作
D. Java EE企业级开发是在Java SE基础之上的扩展应用
正确答案是:B
可以说Java是兼具编译型语言与解释型语言的特点的,对于C和C++,它们经过一次编译之后,可以由操作系统直接执行,所以它们是编译型语言。而Java不一样,它首先由编译器编译成.class(字节码)文件,然后在通过JVM从.class文件中读一行解释执行一行。
14
14.下面的数据声明及赋值哪一个是正确的?
A. float f = 1.3;
B. char c =
C. byte b = 257
D. int i = 10
正确答案是:D
A中1.3默认是double类型,正确的写法应该是 float f = 1.3F; 或 float f = 1.3f;
B中=后面没有任何值,正确的写法应该是char c =’ ';注意char比较特殊单引号中间必须有字符才可以,必须是单引号,如果是双引号,会编译报错;
C中257是int类型,直接赋值给byte类型报错,正确的写法应该是 byte b = (byte) 257; 需要强制类型转换才可以。
16
16.假设有如下程序:
public class Demo {
public static void main(String args[]) {
int num = 50 ;
num = num ++ * 2 ;
System.out.println(num) ;
}
}
最终的执行结果是什么?
A. 50
B. 102
C. 100
D. 101
正确答案是:C
这是因为 JVM 在处理 i = i++; 时 , 会建立一个临时变量来接收 i++ 的值 , 然后返回这个临时变量的值 , 返回的值再被等号左边的变量接收了 , 这样就是说 i 虽然自增了但是又被赋值了0 , 这样输出的结果自然就是 0 了。
同理num自增操作临时变量接受num++的值变为51并返回,但是被赋值语句num=num*2覆盖得num=100。
19
19.假设有如下程序:
public class Demo {
public static void main(String args[]) {
int num = 2147483647 ;
num += 2L ;
System.out.println(num) ;
}
}
最终的执行结果是什么?
A. -2147483648
B. 2147483649
C. -2147483647
D. 2
正确答案是:C
int表示范围为:-2147483648~2147483647,加法运算后导致num溢出。
补充:20题的题目是把num+=2L改为num+=2,答案一致。
以下是不大胆的猜测:num+=2L的操作是先使int类型的num与long类型的2L进行相加得到的结果再强制转换为Int型赋值给num导致溢出。而num+=2的操作则是直接溢出。