3. import java.util.*;
4. public class Values {
5. public static void main(String[] args) {
6. Properties p = System.getProperties();
7. p.setProperty("myProp", "myValue");
8. System.out.print(p.getProperty("cmdProp") + " ");
9. System.out.print(p.getProperty("myProp") + " ");
10. System.out.print(p.getProperty("noProp") + " ");
11. p.setProperty("cmdProp", "newValue");
12. System.out.println(p.getProperty("cmdProp"));
13. }
14. }
并给出命令行调用:
java -DcmdProp=cmdValue Values
结果是什么?
A. null myValue null null
B. cmdValue null null cmdValue
C. cmdValue null null newValue
D. cmdValue myValue null cmdValue
E. cmdValue myValue null newValue
F.运行时抛出异常
这个问题来自 SCJP,答案是“E”。但根据我的说法,答案应该是 D,因为当我们从命令行提示符调用时,我们正在设置“cmdProp”=“cmdValue”的值。那么,在第 12 行,为什么它给出与键 cmdProp 相对应的 newValue。
最佳答案
代码的第 11 行更改了从命令行提示符定义的变量值。这种“覆盖”导致变量发生变化。
关于java - 系统属性,需要的理由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22201624/