##选择题
###1、以下代码的输出结果是?
public class B
{
public static B t1 = new B();
public static B t2 = new B();
{
System.out.println("构造块");
}
static
{
System.out.println("静态块");
}
public static void main(String[] args)
{
B t = new B();
}
}
A. 静态块 构造块 构造块 构造块
B. 构造块 静态块 构造块 构造块
C. 构造块 构造块 静态块 构造块
D. 构造块 构造块 构造块 静态块
####解析:
最先初始化的并不是静态块而是静态域,静态域包括“静态变量”“静态块”“静态方法”,其中需要初始化的是“静态变量”和“静态块”,而初始化顺序是谁靠前先搞谁。
所以先初始化 t 1 、 t 2 t1、t2 t1、t2,初始 t 1 、 t 2 t1、t2 t1、t2 时调用构造块,输出“构造块”,两次,然后再初始化静态块输出“静态块”,最后执行 m a i n ( ) main() main(),创建 t t t 调用构造块,输出“构造块”。
其实,这个题准确讲是没用正确答案的,因为 p r i n t l n println println,而不是 p r i n t print print,不过这个题考点明显不在这里,将就着选 C C C 也是可以理解的。
###2、java中下面哪些是Object类的方法( )
A. notify()
B. notifyAll()
C. sleep
D. wait()
####解析:
概念题,在根类 O b j e c t Object Object 中包含的方法有:
clone();
equals();
finalize();
getClass();
notify(), notifyAll();
hashCode();
toString();
wait();
……
不包含 s l e e p ( ) sleep() sleep(),故选 A B D ABD ABD。
###3、考虑下面这个简单的例子,让我们看看reflection是如何工作的。
import java.lang.reflect.*;
public class DumpMethods{
public static void main(String[] args) {
try {
Class c=Class.forName(args[0]);
Method m[]=c.getDeclaredMethods();
for (int i = 0; i < m.length; i++) {
System.out.println(m[i].toString());
}
} catch (Throwable e) {
System.err.println(e);
}
}
}
其中"c.getDeclaredMethods"的作用是:
A. 取得类的公有方法对象
B. 取得类的所有公有方法名称
C. 取得类的所有方法对象
D. 以上选项都不正确
####解析:
g e t D e c l a r e d M e t h o d s getDeclaredMethods getDeclaredMethods 的作用是:返回 M e t h o d Method Method 对象的一个数组,这些对象反映此 C l a s s Class Class 对象表示的类或接口声明的所有方法,包括公共、保护、默认(包)访问和私有方法,但不包括继承的方法。
###4、下面程序的输出结果是?
package algorithms.com.guan.javajicu;
public class TestDemo {
public static String output ="";
public static void foo(int i){
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. 出错
B. 342
C. 34234
D. 3423
####解析:
除了两种情况, t r y try try 没用被执行到或者在 f i n a l l y finally finally 前有 S y s t e m . e x i t ( 0 ) ; System.exit(0); System.exit(0); 这样的语句被执行,否则 f i n a l l y finally finally 中的语句总会执行,即使有 r e t u r n return return,也会执行。 f i n a l l y finally finally 是在 r e t u r n return return 执行之后,返回之前执行。
###5、检查程序,是否存在问题,如果存在指出问题所在,如果不存在,说明输出结果。
public class HelloB extends HelloA
{
public HelloB()
{
}
{
System.out.println("I’m B class");
}
static
{
System.out.println("static B");
}
public static void main(String[] args)
{
new HelloB();
}
}
class HelloA
{
public HelloA()
{
}
{
System.out.println("I’m A class");
}
static
{
System.out.println("static A");
}
}
A. static A
I’m A class
static B
I’m B class
B. I’m A class
I’m B class
static A
static B
C. static A
static B
I’m A class
I’m B class
D. I’m A classstatic AI’m B classstatic B
####解析:
本题涉及静态初始化代码块、构造代码块、构造方法,当涉及到继承时,按照如下顺序执行:
1、执行父类静态代码块;
2、执行子类静态代码块;
3、执行父类构造代码块;
4、执行父类构造函数;
5、执行子类构造代码块;
6、执行子类构造函数。
###6、有如下代码:请写出程序的输出结果。
public class Test
{
public static void main(String[] args)
{
int x = 0;
int y = 0;
int k = 0;
for (int z = 0; z < 5; z++) {
if ((++x > 2) && (++y > 2) && (k++ > 2))
{
x++;
++y;
k++;
}
}
System.out.println(x + ”” +y + ”” +k);
}
}
A. 432
B. 531
C. 421
D. 523
####解析:
z = 0 : 100 z = 0 : 100 z=0:100
z = 1 : 200 z = 1 : 200 z=1:200
z = 2 : 310 z = 2 : 310 z=2:310
z = 3 : 420 z = 3 : 420 z=3:420
z = 4 : 531 z = 4 : 531 z=4:531
###7、下面有关JDK中的包和他们的基本功能,描述错误的是?
A. java.awt: 包含构成抽象窗口工具集的多个类,用来构建和管理应用程序的图形用户界面
B. java.io: 包含提供多种输出输入功能的类
C. java.lang: 包含执行与网络有关的类,如URL,SCOKET,SEVERSOCKET
D. java.util: 包含一些实用性的类
####解析:
java.awt: 包含构成抽象窗口工具集的多个类,用来构建和管理应用程序的图形用户界面
java.lang: 提供java编程语言的程序设计的基础类
java.io: 包含提供多种输出输入功能的类,
java.net: 包含执行与网络有关的类,如URL,SCOKET,SEVERSOCKET,
java.applet: 包含java小应用程序的类
java.util: 包含一些实用性的类
###8、要在session对象中保存属性,可以使用以下哪个语句( )
A. session.getAttribute(“key”,”value”)
B. session.setAttribute(“key”,”value”)
C. session.setAttribute(“key”)
D. session.getAttribute(“key”)
####解析:
获取属性用 g e t A t t r i b u t e getAttribute getAttribute,保存属性用 s e t A t t r i b u t e setAttribute setAttribute,属性是键值对,要保存属性需要将键值对传递进去才行。
###9、已知表达式int m[]={0,1,2,3,4,5,6};下面哪个表达式的值与数组下标量最大值相等?
A. m. length()
B. m. length-1
C. m. length()+1
D. m. length+1
####解析:
在计算机中,数组下标是从 0 0 0 开始数的,所以如果数组大小是 l e n g t h length length 的话,那么最后一个元素的下标是 l e n g t h − 1 length - 1 length−1。
另外,数组有 . l e n g t h .length .length 属性,而 S t r i n g String String 有 . l e n g t h ( ) .length() .length() 方法。
###10、BufferedReader的父类是以下哪个?
A. FilterReader
B. InputStreamReader
C. PipedReader
D. Reader
####解析:
如何判断一个类的父类是谁,一般可以直接看后缀,后缀代表功能。
R e a d e r Reader Reader 是对字符流进行操作的。
B u f f e r e d R e a d e r BufferedReader BufferedReader 采用缓存的形式对字符流进行操作,它和 F i l t e r R e a d e r FilterReader FilterReader、 I n p u t S t r e a m R e a d e r InputStreamReader InputStreamReader、 P i p e R e a d e r PipeReader PipeReader 是并列关系,都是继承了 R e a d e r Reader Reader 类。