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
一个新的对象;因此str2
、str3
、str4
都在年轻代,一次FullGC
清理了年老代,还剩下年轻代str2
、str3
、str4
共15个字符。
6、关于sleep()
和wait()
,以下描述错误的一项是(D)
A、sleep
是线程类(Thread
)的方法,wait
是Object
类的方法;
B、sleep
不释放对象锁,wait
放弃对象锁
C、sleep
暂停线程、但监控状态仍然保持,结束后会自动恢复
D、wait
后进入等待锁定池,只有针对此对象发出notify
方法后获得对象锁进入运行状态
解析:
待续…
7、以下哪项不属于java类加载过程?(D)
A、生成java.lang.Class对象
B、int类型对象成员变量赋予默认值
C、执行static块代码
D、类方法解析
解析:
对象成员变量实是在实例化的时候分配在堆中。