每日Java学习(2019/4/12)

1、下面代码在main()方法中第八行后可以正常使用的是( A D)

public class Test
{
    private int a=10;
    int b=20;
    static int c=1;
    public static void main(String arg[])
    {
        Test t = new Test();
    }
 }

A t.a B this.c C Test.b D Test.c
解析:
B选项,this指代对象,static是属于类的,不能用this调用static。不能在static上下文中使用this关键字。
C选项:b不是静态的,是属于对象的。


2、编译Java Application 源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为(.class)。
解析:
Java源程序的扩展名为.java;编译之后的字节码文件后缀为.class


3、在java中,无论在何处调用,使用静态属性必须以类名做前缀。(错误
解析:

  • 如果是本类使用,可以直接调用;
  • 如果是外部类使用,可以用类名作前缀调用,也可创建对象然后调用
  • 如果该属性是静态类中的静态属性,那么不管在本类还是外部类都可以直接调用

4、this调用语句必须是构造函数的第一个可执行语句(错误
解析:
注意题目说的是this不是this()
this()super()是构造方法,作用是在JVM中创建一个对象。避免了多次创建对象,同一个方法内只能调用一次this()super()为了避免操作对象时对象还未创建成功,必须放在第一行


5、下列程序的运行结果(A)

public void getCustomerInfo() {
        try {
            // do something that may cause an Exception
        } catch (java.io.FileNotFoundException ex) {
            System.out.print("FileNotFoundException!");
        } catch (java.io.IOException ex) {
            System.out.print("IOException!");
        } catch (java.lang.Exception ex) {
            System.out.print("Exception!");
        }
    }

A IOException!
B IOException!Exception!
C FileNotFoundException!IOException!
D FileNotFoundException!IOException!Exception!
解析:
catch只会匹配一个,一旦匹配一个之后虚拟机便会使整个语句退出。


6、假定str0,...,str4后序代码都是只读引用。Java 7中,以上述代码为基础,在发生过一次FullGC后,上述代码在Heap空间(不包括PermGen)保留的字符数为(15)

static String str0="0123456789";
static String str1="0123456789";
String str2=str1.substring(5);
String str3=new String(str2);
String str4=new String(str3.toCharArray());
str0=null;

解析:
substring()方法实际上也是new一个新的对象;因此str2str3str4都在年轻代,一次FullGC清理了年老代,还剩下年轻代str2str3str4共15个字符。


6、关于sleep()wait(),以下描述错误的一项是(D)
A、sleep是线程类(Thread)的方法,waitObject类的方法;
B、sleep不释放对象锁,wait放弃对象锁
C、sleep暂停线程、但监控状态仍然保持,结束后会自动恢复
D、wait后进入等待锁定池,只有针对此对象发出notify方法后获得对象锁进入运行状态
解析:
待续…


7、以下哪项不属于java类加载过程?(D)
A、生成java.lang.Class对象
B、int类型对象成员变量赋予默认值
C、执行static块代码
D、类方法解析
解析:
对象成员变量实是在实例化的时候分配在堆中。


猜你喜欢

转载自blog.csdn.net/SiSimmons/article/details/89257469