1.java类定义如下,请写出main函数的执行后输出结果。
public class T extends Thread{
public T() {
this.setName("Thread t");
this.printName();
}
@Override
public void run() {
this.printName();
};
private void printName() {
String name = Thread.currentThread().getName();
System.out.println(name);
}
public static void main(String[] args) {
Thread.currentThread().setName("Thread main");
T t = new T();
t.start();
}
}
结果:
Thread main
Thread t
2.下面java程序的运行结果是
链接:https://www.nowcoder.com/questionTerminal/4e1431458d904cf09ff399ec8d632666?orderByHotValue=1&mutiTagIds=767&page=1&onlyReference=false
来源:牛客网
class A {
static {
System.out.print("A");
}
public A() {
System.out.print("a");
}
void say() {
System.out.print("1");
}
}
class B extends A {
static {
System.out.print("B");
}
public B() {
System.out.print("b");
}
void say() {
System.out.print("2");
}
}
public class Hello {
public static void main(String[] args) {
A ab = new B();
ab.say();
ab = new B();
ab.say();
}
}
输出结果:
ABab2ABab2
分析:
1.实例化B B所在类未加载 首先加载B所在类B B有父类A 所以类加载顺序 A,B 打印AB
2.实例化B 调用父类构造方法 再调用自身构造方法 打印ab
3.B中重写了父类say 直接调用本身类的say 打印2
4.第二次实例化B 类加载只会执行一次 1中已完成 直接重复2 3步骤 打印ab2
ABab2ab2
精选30道Java笔试题解答
https://www.cnblogs.com/lanxuezaipiao/p/3371224.html