JAVA/JSP经典面试题汇总

2014-07-30 20:02:00|?次阅读|上传:wustguangh【已有?条评论】发表评论

关键词:Java, JSP|来源:唯设编程网

和上面的很相似,都是关于 final 的问题,这有错吗 ?

答案 :  正确。在 addOne method 中,参数 o 被修饰成 final 。如果在 addOne method 里我们修改了 o 的 reference

( 比如 : o = new Other();) ,那么如同上例这题也是错的。但这里修改的是 o 的 member vairable

( 成员变量 ) ,而 o 的 reference 并没有改变。

6.

class Something {

    int i;

    public void doSomething() {

        System.out.println("i = " + i);

    }

}

有什么错呢 ?  看不出来啊。

答案 :  正确。输出的是 "i = 0" 。 int i 属於 instant variable ( 实例变量,或叫成员变量 ) 。 instant variable 有 default value 。 int 的 default value 是 0 。

7.

class Something {

    final int i;

    public void doSomething() {

        System.out.println("i = " + i);

    }

}

和上面一题只有一个地方不同,就是多了一个 final 。这难道就错了吗 ?

答案 :  错。 final int i 是个 final 的 instant variable ( 实例变量,或叫成员变量 ) 。 final 的 instant variable 没有 default value ,必须在 constructor ( 构造器 ) 结束之前被赋予一个明确的值。可以修改为 "final int i = 0;" 。

8.

public class Something {

     public static void main(String[] args) {

        Something s = new Something();

        System.out.println("s.doSomething() returns " + doSomething());

    }

    public String doSomething() {

        return "Do something ...";

    }

}

  看上去很完美。

答案 :  错。看上去在 main 里 call doSomething 没有什么问题,毕竟两个 methods 都在同一个 class 里。但仔细看, main 是 static 的。 static method 不能直接 call non-static methods 。可改成 "System.out.println("s.doSomething() returns " + s.doSomething());" 。同理, static method 不能访问 non-static instant variable 。

9.

此处, Something 类的文件名叫 OtherThing.java

class Something {

    private static void main(String[] something_to_do) {      

        System.out.println("Do something ...");

    }

}

  这个好像很明显。

发表评论0条 】
网友评论(共?条评论)..
JAVA/JSP经典面试题汇总