JAVA经典笔试题

1.下列程序的运行结果是?java

class HelloA {

    public HelloA() {
        System.out.println("HelloA");
    }
    
    { System.out.println("I'm A class"); }
    
    static { System.out.println("static A"); }

}

public class HelloB extends HelloA {
    public HelloB() {
        System.out.println("HelloB");
    }
    
    { System.out.println("I'm B class"); }
    
    static { System.out.println("static B"); }
    
    public static void main(String[] args) { 
     new HelloB(); 
   }

}

答案是: 数组

static A
static B
I'm A class
HelloA
I'm B class
HelloB

解析:考查静态语句块、构造语句块(就是只有大括号的那块)以及构造函数的执行顺序。函数

对象的初始化顺序:(1)类加载以后,按从上到下(从父类到子类)执行被static修饰的语句;(2)当static语句执行完以后,再执行main方法;(3)若是有语句new了自身的对象,将从上到下执行构造代码块、构造器(二者能够说绑定在一块儿)。spa

2.下列程序的运行结果是?code

public class Example {

    String str = new String("good");

    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 + " and ");

        System.out.print(ex.ch);

    }

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

        str = "test ok";

        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里没有引用传递,只有值传递,这个值指的是实参的地址的拷贝,获得这个拷贝地址后,你能够经过它修改这个地址的内容(引用不变),由于此时这个内容的地址和原地址是同一地址,继承

可是你不能改变这个地址自己使其从新引用其它的对象,也就是值传递。class

3.java集合继承关系test

4.java IO继承关系构造函数

相关文章
相关标签/搜索