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

时间:2011-05-12 01:23:22

标签: 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. }
     

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

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

//所以答案是C

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


嗯。 。 。那么为什么args [1]是第二个参数呢?我认为“p”将等于字符串{y x x y z}?

3 个答案:

答案 0 :(得分:7)

  

嗯。 。 。那么为什么args [1]是第二个参数呢?我认为“p”将等于字符串{y x x y z}?

这个问题很棘手。在c)中,我们使用参数x启动类x y z。 -D选项将导致x属性设置为y

所以当课程x开始时:

  • args将是`String [] {“x”,“y”,“z”}和
  • p将为"y"

然后我们将pargs[1]进行比较......两个字符串为equal

(当然,在现实世界中,没有人将他们的班级x命名为能够存活足够长时间才能收到他们的第一张支票:-))

答案 1 :(得分:3)

实际上,当您将其称为java -Dx=y x x y z然后-Dx=y - 将系统属性x设置为值y时,它不会被视为参数,首先{{1你调用的类的名称,最后“x,y,z”是传递给程序的实际参数。

此外,当您使用-D命令行参数设置系统值时,遵循命令行参数用空格分隔的常见约定。这就是系统属性x的值为x而不是y的原因。

答案 2 :(得分:0)

诀窍是

class x {

这样你几乎可以忘记'java'之后的第一个参数(除了选项)是类名(在这种情况下是'x'),其余的是输入参数列表。

我认为这根本不是一个好问题。谁会命名一个班级'x'呢? 设计这个问题的人应该被绞死。