1、创建对象,可以使用new关键字,利用构造函数初始化。这是你所熟悉的方式。
2、但是,也可以使用其他方式获取对象。就像例子中所示,System类的静态函数getProperties()就返回了一个Properties对象。
方法签名:static Properties getProperties()
将System.getProperties()返回的对象Properties,赋值给sp。sp也就实例化了。
你System.getProperties()不就是获得一个Properties实例了吗,可以点进去看具体的实现
就是获得当前系统的配置参数
System是java.lang中的一个类 ;
getProperties()是System中的一个静态方法,该方法返回值是一个Properties的实例;
有个封装的思想,实例化过程是封装在getProperties()方法中的;
你可以看下工厂模式
jdk的api解释:
public static Properties getProperties()
确定当前的系统属性。
首先,如果有安全管理器,则不带参数直接调用其 checkPropertiesAccess 方法。这可能导致一个安全性异常。
将 getProperty(String) 方法使用的当前系统属性集合作为 Properties 对象返回。如果没有当前系统属性集合,则先创建并初始化一个系统属性集合。这个系统属性集合总是包含以下键的值:
键
相关值的描述
java.version Java 运行时环境版本
java.vendor Java 运行时环境供应商
java.vendor.url Java 供应商的 URL
java.home Java 安装目录
java.vm.specification.version Java 虚拟机规范版本
java.vm.specification.vendor Java 虚拟机规范供应商
java.vm.specification.name Java 虚拟机规范名称
java.vm.version Java 虚拟机实现版本
java.vm.vendor Java 虚拟机实现供应商
java.vm.name Java 虚拟机实现名称
java.specification.version Java 运行时环境规范版本
java.specification.vendor Java 运行时环境规范供应商
java.specification.name Java 运行时环境规范名称
java.class.version Java 类格式版本号
java.class.path Java 类路径
java.library.path 加载库时搜索的路径列表
java.io.tmpdir 默认的临时文件路径
java.compiler 要使用的 JIT 编译器的名称
java.ext.dirs 一个或多个扩展目录的路径
os.name 操作系统的名称
os.arch 操作系统的架构
os.version 操作系统的版本
file.separator 文件分隔符(在 UNIX 系统中是“/”)
path.separator 路径分隔符(在 UNIX 系统中是“:”)
line.separator 行分隔符(在 UNIX 系统中是“/n”)
user.name 用户的账户名称
user.home 用户的主目录
user.dir 用户的当前工作目录
系统属性值中的多个路径是用平台的路径分隔符分隔的。
注意,即使安全管理器不允许执行 getProperties 操作,它可能也会选择允许执行 getProperty(String) 操作。
返回:
系统属性
抛出:
SecurityException - 如果安全管理器存在并且其 checkPropertiesAccess 方法不允许访问系统属性。