阿里云Java语言基础自测考试

阿里云Java语言基础自测考试

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的操作则是直接溢出。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值