您的位置:首页 > 编程语言 > Java开发

Java笔试题总结1

2015-08-24 09:07 483 查看
JAVA笔试题

1、静态语句块、构造语句块和构造函数的执行顺序

静态语句块:在类加载的时候执行(从父类到子类)

静态语句块执行完,执行main方法

new对象,从上到下先执行构造代码块在执行构造器

package com.***.subject;

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

public class HelloB extends HelloA{

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


2、初始化顺序

当程序执行时,需要生成某个类的对象,java会检查是否加载了这个类,如果没有,则先执行类的加载在生成对象,如果已经加载则直接生成对象。

在类加载过程中

static变量和static代码快会按代码顺序加载。

然后,其他变量和构造代码块会按顺序加载

最后执行构造函数。

public class TestExtends{
public static void main(String[] args){
new Circle();
}
}

class Draw{
public Draw(String type){
System.out.println(type + "1");
}
}

class Shape{
private Draw draw = new Draw("shape");
{
System.out.println("shape constructor block");
}

static
{
System.out.println("shape static block");
}
public Shape()
{
System.out.println("2");
}
}

class Circle extends Shape
{
private Draw draw = new Draw("circle");
public Circle()
{
System.out.println("3");
}
}

//输出为:
//shape static block
//shape1
//shape constructor block
//2
//circle1
//3
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: