redred5 2009-09-05 19:32
浏览 206
已采纳

两道java面试题,十万火急

1
 public class Tester {
2
  public static void main(String[] parms) {
3
  int i = 10;
4
  i == 10 ? equals10() : notEqual10();
5
  } // main()
6
  
7
  private static int equals10() {
8
  System.out.println("result is 10");
9
  return 10;
10
  } // equals10()
11
  
12
  private static int notEqual10() {
13
  System.out.println("result is NOT 10");
14
  return -1;
15
  } // notEqual10()
16
 } // Tester

A. result is 10.
B. result is NOT 10.
C. result is 10
result is NOT 10.
D. compile with an error.

这道题为什么选D?能帮着解释一下么?

1
 class A {
2
  static A createA() {
3
  return new A();
4
  } // createA()
5
String message() {
6
return “Message from A”;
7
}
8
 } // A
9
  
10
  
11
 public class Tester {
12
  public static void main(String[] parms) {
13
  A aVar = null;
14
  System.out.println(aVar.createA().message());
15
  } // main()
16
 } // Tester

A. compile successfully, but run with a NullPointerException.
B. compile with error.
C. Compile successfully and the output is:
Message from A
D. compile successfully, but run with error at line 13.

为什么选C呢?aVar已经是null了为什么还能输出内容?

  • 写回答

5条回答 默认 最新

  • rednaxelafx 2009-09-05 22:14
    关注

    抱歉,打错了一个tag……重新来

    第二问:
    同样根据JLS第三版,[url=http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#15.12]15.12小节[/url],在问题中的这个表达式中:
    [code="java"]aVar.createA()[/code]
    aVar变量的类型(注意,是编译时就能判明的变量类型而不是运行时才能判明的实例实际类型)是A,所以A类型上所有名字为createA、参数列表为空的方法都被认为是潜在合适的成员,无论它是静态方法还是实例方法;接下来进行最合适的方法分析,发现潜在合适的成员只有一个,就是静态方法的createA(),所以选用了它。调用静态方法不需要对象实例,所以aVar是否为null并不影响代码行为——在这个例子里它的行为总是等同于A.createA()。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥50 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?