java面试常见的笔试题

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值