嘿伙计们,我正在攻读我的第一份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}?
答案 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"
。然后我们将p
与args[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'呢? 设计这个问题的人应该被绞死。