虽然申请博客已经有一段时间了,却是第一次写博客,有点激动,不知道该写些什么,刚好大三老学姐正值找实习工作之际,每天都会刷一点题,现在在看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:这里只是总结摘抄一部分题,建议有精力的同学可以去看看书哈,那里更全面。)