java 笔试题

来源:互联网 发布:怎样求矩阵的伴随矩阵 编辑:程序博客网 时间:2024/06/04 18:04
----------------下面代码输出的结果是?
public static void main(String args[]) {
Thread t = new Thread() {
public void run() {
print();
}
};
t.run();
System.out.print(“MT”);
}
static void print() {
System.out.print(“DP”);

}

DPMT
MTDP
MTDP和DPMT都有可能
都不输出
start()用来启动一个线程,当调用start方法后,系统才会开启一个新的线程,进而调用run()方法来执行任务,而单独的调用run()就跟调用普通方法是一样的,已经失去线程的特性了。因此在启动一个线程的时候一定要使用start()而不是run()

如果是多线程的情况(即用t.start()而不是t.run()),MTDP和DPMT都有可能,现在用的是t.run(),还是只有一个main线程,是单线程,所以顺序执行,输出的是 DPMT

线程初始化一定要t.start()开始运行,t.run()没用

----------关于以下程序,正确的说法是?

- String s1=“abc” + “def”;
- String s2=new String(s1);
- if(s1 == s2)
- System.out.println(“===succeed===");
- if(s1.equals(s2))
- System.out.println(“===equals() succeed===");

正确答案: C   你的答案: C (正确)

行4与行6都执行
行4执行,行6不执行
行4不执行,行6执行
行4不执行,行6不执行

s1,s2存储的位置不同。 s1存储在常量池中,s2存储在堆中。</br> 当调用"=="比较时,比较的是内存地址; 当调用"equals()"方法时,比较的是值。

equal判断值是否相同,==判断地址是否相同。
s1的值(abcdef)是存放在常量池里,而s2的值放在堆里