OCJP!新出两道题解析~~~

来源:互联网 发布:网络用词2017 编辑:程序博客网 时间:2024/05/20 09:47

public class Test {

    static public void main(String[] args) {        //java Test a b c        //在这里因为输入的:a b c就是生成的数组,以空格为界来分隔各个元素        for (int x = 1; x < args.length; x++) {     //遍历出数组的元素            System.out.print(args[x] + " ");            //输出数组的每个元素,因为i=1,所以是从第二个元素开始输出,所以a是不是输出的            //输出的元素为b和c:b c        }    }}//and the command line invocation (在命令列中如下方式執行)//java Test a b c////what is the result?(其結果為何?)//A. a b//B. b c//C. a b c//D. Compilation fails//E. An exception is thrown at runtime

上面的题目主要是考察对于主函数的形参数组的了解程度,这里输入的a b c 分别是主函数的第一第二和第三个元素,而在for循环中i初始值为1,所以就没有了第一个元素了。

class Foo {    private int x;    //-------------类构造器----------------------    public Foo(int x) {        this.x = x;    }    //---------------x的getter/setter方法--------    public void setX(int x) {        this.x = x;    }    public int getX() {        return x;    }   //-------------------------------------------}public class Gamma {    //创建静态方法,返回传入对象的值    static Foo fooBar(Foo foo) {        foo = new Foo(100); //把foo对象的值设置为100        return foo;     //这里返回的foo的值为100    }    public static void main(String[] args) {        Foo foo = new Foo(300); //把foo对象的值设置为300        System.out.print(foo.getX() + "_");//输出对象,结果为300        Foo fooFoo = fooBar(foo);   //把foo的值作为参数传给fooBar方法,把方法传回的值赋值给创建的fooFoo对象        System.out.print(foo.getX() + "_");     //输出的foo的值仍然为:300        System.out.print(fooFoo.getX() + "_");  //这里的fooFoo的值就为100,因为在fooBar方法中赋值为:100        foo = fooBar(fooFoo);     //这里是重新给foo赋值,fooBar返回的值为:100,并把它赋值给foo        System.out.print(foo.getX() + "_");     //所以这里输出的值就为:100        System.out.print(fooFoo.getX());        //这里输出的值也为:100        //所以答案应该是:300-300-100-100-100    }}//What is the output of the program shown in the exhibit?//(以下何者為程式輸出顯示?)//A. 300-100-100-100-100//B. 300-300-100-100-100//C. 300-300-300-100-100//D. 300-300.300-300-100

上面的题目主要考察的是对于对象和参数的区分,foo和fooFoo的getter方法,拿到的是对象的值,而不是形参的,具体的情况要学会分析,那么就容易做了。

0 0
原创粉丝点击