Sun认证程序员Java 2平台标准版6问题

Mik*_*ike 3 java

嘿伙计们,我正在攻读我的第一个Java证书!Hurah!对不起,不要故意听起来如此俗气,但我无法帮助它:) Anywho,试图理解下面的问题和答案.我不明白...我并没有真正使用命令行(主要是NetBeans和我熟悉Eclipse).任何指针都非常感谢.


目标:7.2:给定一个类和一个命令行的示例,确定预期的运行时行为.10)

鉴于:

1. class x {
2.   public static void main(String [] args) {
3.     String p = System.getProperty("x");
4.     if(p.equals(args[1]))
5.       System.out.println("found");
6.   }
7. }
Run Code Online (Sandbox Code Playgroud)

哪个命令行调用会产生输出?

a) java -Dx=y x y z
b) java -Px=y x y z
c) java -Dx=y x x y z (*)
d) java -Px=y x x y z
e) java x x y z -Dx=y
f) java x x y z -Px=y
Run Code Online (Sandbox Code Playgroud)

//所以答案是C.

参考:
java命令的API
选项C是正确的.-D设置属性,args [1]是第二个参数(其值为y)


嗯...那么为什么args [1]是第二个参数呢?我认为"p"将等于String {yxxyz}?

Ste*_*n C 7

嗯...那么为什么args [1]是第二个参数呢?我认为"p"将等于String {yxxyz}?

这个问题很棘手.在c)中,我们x用参数开始这个类x y z.并且-D选项将导致x属性设置为y.

所以当课程x开始时:

  • args 将是`String [] {"x","y","z"}和
  • p会的"y".

然后,我们比较pargs[1]...和两个字符串equal.

(当然,在现实世界中,没有一个为他们的课程命名的人x能够存活足够长的时间来接受他们的第一次工资支票:-))