1.以下描述错误的一项是?(C)
A.程序计数器是一个比较小的内存区域,用于指示当前线程所执行的字节码执行 到了第几行,是线程隔离的
B.原则上讲,所有的对象都是在堆区上分配内存,是线程之间共享的
C.方法区用于存储JVM加载的类信息、常量、静态变量,即使编译器编译后的代码等数据,是线程隔离的
D.Java方法执行内存模型,用于存储局部变量,操作数栈,动态链接,方法出口等信息,是线程隔离的
解析:方法区: 1.又叫静态区,跟堆一样,被所有的线程共享。
2.下面程序的输出是什么?(B)
package algorithms.com.guan.javajicu;
public class TestDemo
{
public static String output = ””;
public static void foo(inti)
{
try
{
if (i == 1)
{
throw new Exception();
}
}
catch (Exception e)
{
output += “2”;
return ;
} finally
{
output += “3”;
}
output += “4”;
}
public static void main(String[] args)
{
foo(0);
foo(1);
System.out.println(output);
}
}
A.342
B.3423
C.34234
D.323
解析:
首先是foo(0),在try代码块中未抛出异常,finally是无论是否抛出异常必定执行的语句,
所以 output += “3”;然后是 output += “4”;
执行foo(1)的时候,try代码块抛出异常,进入catch代码块,output += “2”;
前面说过finally是必执行的,即使return也会执行output += “3”
由于catch代码块中有return语句,最后一个output += “4”不会执行。
所以结果是3423。
3.
1 .class Parent{
2. public float aFun(float a, float b) { }
3 .}
4 .class Child extends Parent{
5 .
6 .}
将以下哪种方法插入行5是不合法的。( A )
A.float aFun(float a, float b){ }
B.public int aFun(int a, int b) { }
C.public float aFun(float p, float q){ }
D.private int aFun(int a, int b){ }
解析:两同两小一大
4.在java中重写方法应遵循规则的包括 (BC)
A.访问修饰符的限制一定要大于被重写方法的访问修饰符
B.可以有不同的访问修饰符
C.参数列表必须完全与被重写的方法相同
D.必须具有不同的参数列表
解析:方法的重写(override)两同两小一大原则:
方法名相同,参数类型相同
子类返回类型小于等于父类方法返回类型,
子类抛出异常小于等于父类方法抛出异常,
子类访问权限大于等于父类方法访问权限。
5.下列哪个选项是错误的。(AD)
A.一个文件中只能有一个public class。
B.一个文件中可以有多个类。
C.一个类中可以有两个main方法。
D.若类中只含一个main方法,则必须是public的。
解析:
内部类也可以是public class
main方法可以重载