java面试题1(4)

2019-01-19 16:14

I'm B class HelloB

解析:说实话我觉得这题很好,考查静态语句块、构造语句块(就是只有大括号的那块)以及构造函数的执行顺序。

对象的初始化顺序:(1)类加载之后,按从上到下(从父类到子类)执行被static修饰的语句;(2)当static语句执行完之后,再执行main方法;(3)如果有语句new了自身的对象,将从上到下执行构造代码块、构造器(两者可以说绑定在一起)。 下面稍微修改下上面的代码,以便更清晰的说明情况:

View Code 此时输出结果为:

static Astatic B-------main start------- I'm A classHelloA I'm B classHelloB I'm A classHelloA

I'm B classHelloB-------main end-------

21. getCustomerInfo()方法如下,try中可以捕获三种类型的异常,如果在该方法运行中产生了一个IOException,将会输出什么结果()

public void getCustomerInfo() {

try {

// do something that may cause an Exception } catch (java.io.FileNotFoundException ex) {

System.out.print(\

} catch (java.io.IOException ex) {

System.out.print(\

} catch (java.lang.Exception ex) {

System.out.print(\

} }

A IOException!

BIOException!Exception!

CFileNotFoundException!IOException!

DFileNotFoundException!IOException!Exception! 答案:A

解析:考察多个catch语句块的执行顺序。当用多个catch语句时,catch语句块在次序上有先后之分。从最前面的catch语句块依次先后进行异常类型匹配,这样如果父异常在子异常类之前,那么首先匹配的将是父异常类,子异常类将不会获得匹配的机会,也即子异常类型所在的catch语句块将是不可到达的语句。所以,一般将父类异常类即Exception老大放在catch语句块的最后一个。

22. 下面代码的运行结果为:()

import java.io.*;import java.util.*; public class foo{

public static void main (String[] args){

String s;

System.out.println(\ } }

A 代码得到编译,并输出“s=” B 代码得到编译,并输出“s=null”

C 由于String s没有初始化,代码不能编译通过 D 代码得到编译,但捕获到 NullPointException异常 答案:C

解析:开始以为会输出null什么的,运行后才发现Java中所有定义的基本类型或对象都必须初始化才能输出值。

23. System.out.println(\的输出结果应该是()。 A 52 B7 C2 D5 答案:A

解析:没啥好说的,Java会自动将2转换为字符串。

24. 指出下列程序运行的结果 ()

public class Example {

String str = new String(\

char[] ch = { 'a', 'b', 'c' };

public static void main(String args[]) {

Example ex = new Example();

ex.change(ex.str, ex.ch);

System.out.print(ex.str + \

System.out.print(ex.ch); }

public void change(String str, char ch[]) {

str = \

ch[0] = 'g'; } }

A、 good and abc B、 good and gbc

C、 test ok and abc D、 test ok and gbc 答案:B

解析:大家可能以为Java中String和数组都是对象所以肯定是对象引用,然后就会选D,其实这是个很大的误区:因为在java里没有引用传递,只有值传递

这个值指的是实参的地址的拷贝,得到这个拷贝地址后,你可以通过它修改这个地址的内容(引用不变),因为此时这个内容的地址和原地址是同一地址,

但是你不能改变这个地址本身使其重新引用其它的对象,也就是值传递,可能说的不是很清楚,下面给出一个完整的能说明情况的例子吧:

View Code 程序有些啰嗦,但能反映问题,该程序运行结果为:

对象交换前:p1 = Alexia female 对象交换前:p2 = Edward male

对象交换后:p1 = Alexia female 对象交换后:p2 = Edward male

对象数组交换前:arraya[0] = Alexia female, arraya[1] = Edward male 对象数组交换前:arrayb[0] = jmwang female, arrayb[1] = hwu male

对象数组交换后:arraya[0] = Alexia female, arraya[1] = Edward male 对象数组交换后:arrayb[0] = jmwang female, arrayb[1] = hwu male

基本类型数组交换前:a[0] = 0, a[1] = 1 基本类型数组交换前:b[0] = 1, b[1] = 2

基本类型数组交换后:a[0] = 0, a[1] = 1 基本类型数组交换后:b[0] = 1, b[1] = 2


java面试题1(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:公路工程内业资料整理填写及归档范例

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: