Java中System.getProperty和properties.getProperty的区别是什么

Java中System.getProperty和properties.getProperty的区别是什么,java,Java,我有一个属性文件,名为prop.properties。在我的主代码中,我有System.getProperty()和properties.getProperty() 我的问题是:它们都是从prop.properties获取属性还是从不同的位置获取属性,properties.getProperty()get property fromproperties和System.getProperty()get property from other place.获取JVM定义的属性(JVM本身或您在命令行

我有一个属性文件,名为
prop.properties
。在我的主代码中,我有
System.getProperty()
properties.getProperty()

我的问题是:它们都是从
prop.properties
获取属性还是从不同的位置获取属性,
properties.getProperty()
get property from
properties
System.getProperty()
get property from other place.

获取JVM定义的属性(JVM本身或您在命令行中传递的任何
-D
选项)。可以找到已定义属性的列表(感谢@NikitaBeloglazov)

properties.getProperty()
是有人初始化了类型为的对象的结果。但是它们不一样

Properties
对象通常是加载Java属性文件的结果(请参阅了解如何实现)

System.getProperty(propName)
System.getProperties().getProperty(propName)
的快捷方式

然而,
java.util.Properties
只是
java.utils.Hashtable
的一个子类,因此它的实例可以在代码中的任何地方创建,并填充任何数据

Properties props = System.getProperties();
props.getProperty("os.name");

System.getProperty("os.name");
然而

Properties props = new Properties();
props.load(new FileInputStream("myprops.properties"))
props.getProperty("os.name");

不一样。

系统类指的是您正在运行的JVM(它将从您的操作系统获取信息)。当您在
系统
上使用
getProperty
时,您将获得实际的属性


Property
类基本上是一个美化的哈希表。您可以自己完全定义它,所以当您执行
getProperty()时
您可以得到设置的结果。
属性
类的用处在于它有一个内置的XML解析器,您可以从文件中读取属性。

取决于
属性
的来源。如果
属性=系统.getProperties();
,那么是的,它们将是一样的。如果
属性propertes=new Properties();
,那么不,它们不会是一样的。谢谢你,Ben,现在我明白了。你可以添加到java教程中有关系统属性的链接吗?谢谢你的帮助。现在我可以弄清楚了。谢谢你的回答,这非常有帮助