【261天】我爱刷题系列(20)

叨叨两句

  1. 心情跌宕起伏,好现象,感性的力量能够提升自个人弹性,作个太刚性的人并非我所期待的。
  2. 让你满意的事情,未必是现实结果最好的,主观和客观要分清。

题37

下面程序的运行结果是
String str1 = "hello";
String str2 = "he" + new String("llo");
System.err.println(str1 == str2);
String str1 = "hello";这里的str1指的是方法区的字符串常量池中的“hello”,编译时期就知道的; String str2 = "he" + new String("llo");这里的str2必须在运行时才知道str2是什么,因此它是指向的是堆里定义的字符串“hello”,因此这两个引用是不同的。

若是用str1.equal(str2),那么返回的是True;由于两个字符串的内容同样。

题38

下列说法正确的有( )
A. class中的constructor不可省略
B. constructor必须与class同名,但方法不能与class同名
C. constructor在一个对象被new时执行
D. 一个class只能定义一个constructor
选C
重点说B,方法名能够与类名一致,方法与构造方法的惟一区别是有无返回值。

题39

下面程序的运行结果:()

    public static void main(String args[]) {

        Thread t = new Thread() {

            public void run() {
                pong();
            }
        };

        t.run();
        System.out.print("ping");

    }

    static void pong() {

        System.out.print("pong");

}

A pingpong        B pongping       C pingpong和pongping都有可能       D 都不输出
如果t.run(),则只是普通的方法调用,选B
如果t.start(),则是开启一个线程,因为存在抢夺执行权的问题,选C