Java程序员面试笔试宝典刷题总结~02

    虽然申请博客已经有一段时间了,却是第一次写博客,有点激动,不知道该写些什么,刚好大三老学姐正值找实习工作之际,每天都会刷一点题,现在在看Java程序员面试笔试宝典一书,刚好把里面的题每天总结5道,写在博客里,一来自我督促,保持每天都会刷题,二来自我加深印象,三来可以省去大家的整理时间,如果能对朋友们有那么一点点的帮助,我也会开心很久的吐舌头小白渣渣,欢迎大家指正,也欢迎转发给需要的小伙伴们,只需指明出处就好!

    啦啦啦,每天进步一点点奋斗

正文正文正文啦啦啦啦:

Java基础知识:

6,public class Test{            

       static{

       System.out.println("Hello  Word1");

}

       publicstatic void main(String[] args) {

              System.out.println("Hello  Word2");

       }

}

程序运行结果:

参考答案:    

        Hello  Word1

        Hello  Word2

    解析:在Java语言中,由于静态块在类加载时就会被调用,因此可以在main()方法执行前,先执行静态块。

7,public class Test{         

       publicstatic void main(String[] args) {

              System.out.println("HelloWord2");

       }

       static{

       System.out.println("Hello Word1");

}

}

程序运行结果:

参考答案:   

         Hello  Word1

         Hello Word2

    解析:即静态块不管顺序如何,都会在main()方法执行之前就执行。

8,class Base{              

       static{

       System.out.println("Base static block");

}

{

       System.out.println("Base block");

}

public Base(){

       System.out.println("Baseconstructor");

}

}

public class Derived extends Base{

       static{

       System.out.println("Derivedstatic block ");

}

{

              System.out.println("Derived block");

}

public Derived(){

              System.out.println("Derived constructor");

}

       public static voidmain(String[] args) {

              new Derived();

       }

}

参考答案:    Basestatic block

Derived static block

Base block

Base constructor

Derived block

Derived constructor

       解析:Java程序的初始化一般遵循3个原则(优先级依次减弱):1)静态对象(变量)优先于非静态对象(变量)初始化。其中,静态对象(变量)只初始化一次,而非静态对象(变量)可能会初始化多次。2)父类优先于子类进行初始化。3)按照成员变量的定义顺序进行初始化。即使变量定义散布于方法定义之中,它们依然在任何方法(包括构造函数)被调用之前先初始化。

        Java程序初始化工作的执行顺序为:父类静态变量>父类静态代码块>子类静态变量>子类静态代码块>父类非静态变量>父类非静态代码块>父类构造函数>子父类非静态变量>子类非静态代码块>子类构造函数。

9,class B extendsObject{        

       static{

       System.out.println("Load B1");

}

public B(){

       System.out.println("CreateB");

}

static{

       System.out.println("LoadB2");

}

}

class A extends B{

       static{

       System.out.println("LoadA");

}

public A(){

       System.out.println("CreateA");

}

}

public class TestClass{

       static{

       System.out.println("HelloWord1");

}

       public static voidmain(String[] args) {

              new A();

       }

}

A, Load B1 Load B2 Create B Load A Create A

B, Load B1 Load B2 Load ACreate B Create A

C, Load B2Load B1 Create BCreate A Load A

D,CreateBCreate ALoad B1 Load B2 Load A

参考答案: B。解析见上。

10,下列说法中,正确的是()    

A, 实例方法可直接调用超类的实例方法

B, 实例方法可直接调用超类的类方法

C, 实例方法可直接调用其他类的实例方法

D,实例方法可直接调用本类的类方法

参考答案:D。当超类的实例方法或类方法为private时,是不能被子类调用的。同理,当其他类的实例方法被为private时,也不能直接调用。








注:参考Java程序员面试笔试宝典(PS:这里只是总结摘抄一部分题,建议有精力的同学可以去看看书哈,那里更全面。)



猜你喜欢

转载自blog.csdn.net/adminwanglua/article/details/80292816