JAVA练习(错题)汇总

  • 下列哪些语句关于 java 内存回收的说明是正确的?

        A   程序员必须创建一个线程来释放内存

        B   内存回收程序负责释放无用内存

        C   内存回收程序允许程序员直接释放内存

        D   内存回收程序可以在指定的时间释放内存对象

正确答案: B

解析:A选项,垃圾回收程序是一般在堆上分配空间不够的时候会对自己进行一次GC,程序员不需要也不能主动释放内存。

B选项,Java的内存释放有垃圾回收程序来进行释放。

C选项,在Java里,内存的释放由垃圾回收程序进行管理,程序员不能直接进行释放。

D选项,程序员可以调用System.gc()来运行垃圾回收器,通知GC运行,但是Java语言规范并不保证GC一定会执行,且不能指定时间。

 

  • 下面程序的输出结果为()
public class Demo {
 public static String sRet = "";
 public static void func(int i){
 try{
     if (i%2==0){
        throw new Exception();
     }
 }catch (Exception e){
         sRet += "0";
         return;
 }finally{
        sRet += "1";
 }
 sRet += "2";
 }
 public static void main(String[] args){
        func(1);
        func(2);
        System.out.println(sRet);
 }
 }

     A   120

     B   1201

     C   12012

     D   101

正确答案: B

解析:就一句话,执行try,catch语句时finally语句一定执行,如果有return要先挂起等待finally执行完成后,再执行。

 

一个以”.java”为后缀的源文件

     A   只能包含一个类,类名必须与文件名相同

     B   只能包含与文件名相同的类以及其中的内部类

     C   只能有一个与文件名相同的类,可以包含其他类

     D   可以包含任意类

正确答案: C

解析:当编写一个java源代码文件时,此文件通常被称为编译单元(有时也被称为转译单元)。每个编译单元都必须有一个后缀名。java,而在编译单元内则可以有一个public类,该类的名称必须与文件的名称相同(包括大小写,但不包括文件的后缀名,java)。每个编译单元只能有一个public类,否则编译器就不会接受。如果在该编译单元之外还有额外的类的话,那么在包之外的世界是无法看见这些类的,这是因为他们不是public类,而且他们主要用来为主public类提供支持。   --《java编程思想》

:public类不是必须的,但是如果源文件中有一个(只能有一个)public类的话,文件名必须与这个public类同名,原因是为了方便虚拟机在相应的路径中找到相应的类所对应的字节码文件。所以没有public类的java文件中,文件名和类名都没什么联系。

草草结束!