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方法,拿到的是对象的值,而不是形参的,具体的情况要学会分析,那么就容易做了。