java - 系统属性,需要的理由

标签 java

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/

相关文章:

java - ScopedProxy 如何决定使用什么 Session?

java - Maven,继承pom模块

java - 在 AsyncTask 中获取 Json 时,项目未添加到列表 <Object> 中

java - 如何在实现 Parcelable 的类中使用 transient 变量?

java - ArrayList<String> 中的 JComboBox - 不工作 - Java Swing

java.io.UnsupportedEncodingException : unicode-1-1-utf-7?

java - 如何检查 JSONArray 元素是否为空

java - 从中间结果初始化变量

java - 如何在 Eclipse 项目中使用外部类文件

java - 如何启动 RecentApplicationsDialog?