编程之道

无论是批评的,赞扬的,指着的都请EMAIL给我,你的建议将是我前进的动力! 联系我

SCJP测试题

1。编译和运行下面这段代码的结果是什么?


  Integer i= new Integer("10");
  if (i.toString() == i.toString())
    System.out.println("Equal");
  else
    System.out.println("Not Equal");

选项:

  • A. 编译错误
  • B. 输出“Equal”
  • C. 输出“Not Equal”
  • D. 以上都不是

正确答案:

  • C

说明:

toString() 方法返回等同于这个 String 对象的 String 。它每次调用时创建一个新的对象。 == 操作符比较两个对象引用的位模式而不是实际的 String 内容。因此比较返回 false,执行 else 语句,输出“Not Equal”。


2。在下面代码中,“insert code here”位置可以合法地插入哪个选项? 
  class Parent
  {
    public void print(int i)
    {
    }
  }
  public class Child extends Parent
  {
    public static void main(String argv[])
    {
    }
    // insert code here
  }

选项:

  • A. public void print(int i, byte b) throws Exception {}
  • B. public void print(int i, long i) throws Exception {}
  • C. public void print(long i) {}
  • D. public void print(int i) throws Exception {}
  • E. public int print(int i)

正确答案:

  • A,B 和 C

说明:

选项 D 不能编译,因为它试图抛出一个在 Parent 类中没有声明的 checked 异常。选项 E 将不能编译,因为只有返回类型不相同,而参数列表和方法名是相同的。这对于覆盖和重载都是不允许的。选项 A、B 和 C 有不同的参数表,所以它们表示 重载 而不是 覆盖 。因为它们可以抛出任何异常,所以它们是合法的。


3。编译和运行以下程序会有什么结果? 
  class Test
  {
    public static void main(String args[])
    {
      String s1 = "abc";
      String s2 = "abc";
      s1 += "xyz";
      s2.concat("pqr");
      s1.toUpperCase();
      System.out.println(s1 + s2);
    }
  }

选项:

  • A. "abcxyzabc"
  • B. "abcxyzabcpqr"
  • C. "ABCXYZabcpqr"
  • D. "ABCXYZabc"
  • E. 代码不能编译

正确答案:

  • A

说明:

这段代码可以无错误地编译运行,输出“abcxyxabc”。在这段代码中, s1s2 最初指向同一个 String 对象“abc”。当“xyz”连接到 s1 上时,就创建了一个新的 String 对象“abcxyz” ,并且 s1 指向它。注意 s2 仍然指向原来的 String 对象“abc”,它没有改变。 concat()toUpperCase() 方法没有任何效果,因为作为这些操作的结果创建的新 String 对象不拥有任何引用。所以最后 s1 包含“abcxyz”而 s2 包含“abc”,从而 A 为正确结果。


posted on 2005-12-30 16:49 疯流成性 阅读(337) 评论(0)  编辑  收藏 所属分类: j2se


只有注册用户登录后才能发表评论。


网站导航: