System的getProperties()方法返回Properties类型对象,其中Properties类属于Hashtable的子类,属于Map集合的一个子类对象,所以可以通过key和value取值。Properties的key和value实际上都是String类型的。这一点是其和Hashtable不同的地方。我们可以查看Properties.java得到这个信息——
public synchronized Object setProperty(String key, String value) {
return put(key, value);
}
在取值的时候,有两种方法——
第一种是使用System的getProperties(String key)方法:
此时要定义key为String,而不能向上转型为Object型,因为System的getProperties(String key)方法要求传入的key必须是String类型的。
通过迭代器拿到key(定义为String类型!!!)之后我们就可以使用getProperties()方法得到String型的value。
第二种是Hashtable的get()方法:
get(Object key)方法并不强制要求key要为String,只要是Object类型即可。
下面是代码实现,在实现的时候我们第一种使用了迭代器,第二种没有使用迭代器,直接使用for循环遍历取值,纯属个人爱好,跟上面介绍的两种方法无关——
import java.util.Iterator;
import java.util.Properties;
public class SystemDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
Properties prop = System.getProperties(); //Properties属于Hashtable的子类,可以通过key和value取值
System.out.println("取出System的Properties内容的方法一:");
Iterator it = prop.keySet().iterator();
while(it.hasNext()){
String key = (String)it.next();
String value = prop.getProperty(key); //static String getProperty(String key)
//getProperty只能通过String的key去获取value,因为System返回的Properties集合的key和value确实都是字符串
System.out.println(key + "-----" + value.toString());
}
System.out.println("取出System的Properties内容的方法二:");
for(Object obj : prop.keySet()){
String value = (String)prop.get(obj); //也可以直接用HashSet的get()方法取值,这个方法只要求key是Object型
System.out.println(obj + "-----" + value.toString());
}
}
}
得到的是系统加载时的属性信息,每个人都不一样,我的结果如下——
取出System的Properties内容的方法一:
java.runtime.name-----Java(TM) SE Runtime Environment
sun.boot.library.path-----/usr/lib/jvm/java-8-jdk/jre/lib/amd64
java.vm.version-----25.45-b02
java.vm.vendor-----Oracle Corporation
java.vendor.url-----http://java.oracle.com/
path.separator-----:
java.vm.name-----Java HotSpot(TM) 64-Bit Server VM
file.encoding.pkg-----sun.io
user.country-----US
sun.java.launcher-----SUN_STANDARD
sun.os.patch.level-----unknown
java.vm.specification.name-----Java Virtual Machine Specification
user.dir-----/home/lpp/Codes/JavaWorkSpace/Test
java.runtime.version-----1.8.0_45-b14
java.awt.graphicsenv-----sun.awt.X11GraphicsEnvironment
java.endorsed.dirs-----/usr/lib/jvm/java-8-jdk/jre/lib/endorsed
os.arch-----amd64
java.io.tmpdir-----/tmp
line.separator-----
java.vm.specification.vendor-----Oracle Corporation
os.name-----Linux
sun.jnu.encoding-----UTF-8
java.library.path-----/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
java.specification.name-----Java Platform API Specification
java.class.version-----52.0
sun.management.compiler-----HotSpot 64-Bit Tiered Compilers
os.version-----4.0.1-1-ARCH
user.home-----/home/lpp
user.timezone-----
java.awt.printerjob-----sun.print.PSPrinterJob
file.encoding-----UTF-8
java.specification.version-----1.8
java.class.path-----/home/lpp/Codes/JavaWorkSpace/Test/bin
user.name-----lpp
java.vm.specification.version-----1.8
sun.java.command-----SystemDemo
java.home-----/usr/lib/jvm/java-8-jdk/jre
sun.arch.data.model-----64
user.language-----en
java.specification.vendor-----Oracle Corporation
awt.toolkit-----sun.awt.X11.XToolkit
java.vm.info-----mixed mode
java.version-----1.8.0_45
java.ext.dirs-----/usr/lib/jvm/java-8-jdk/jre/lib/ext:/usr/java/packages/lib/ext
sun.boot.class.path-----/usr/lib/jvm/java-8-jdk/jre/lib/resources.jar:/usr/lib/jvm/java-8-jdk/jre/lib/rt.jar:/usr/lib/jvm/java-8-jdk/jre/lib/sunrsasign.jar:/usr/lib/jvm/java-8-jdk/jre/lib/jsse.jar:/usr/lib/jvm/java-8-jdk/jre/lib/jce.jar:/usr/lib/jvm/java-8-jdk/jre/lib/charsets.jar:/usr/lib/jvm/java-8-jdk/jre/lib/jfr.jar:/usr/lib/jvm/java-8-jdk/jre/classes
java.vendor-----Oracle Corporation
file.separator-----/
java.vendor.url.bug-----http://bugreport.sun.com/bugreport/
sun.io.unicode.encoding-----UnicodeLittle
sun.cpu.endian-----little
sun.cpu.isalist-----
取出System的Properties内容的方法二:
java.runtime.name-----Java(TM) SE Runtime Environment
sun.boot.library.path-----/usr/lib/jvm/java-8-jdk/jre/lib/amd64
java.vm.version-----25.45-b02
java.vm.vendor-----Oracle Corporation
java.vendor.url-----http://java.oracle.com/
path.separator-----:
java.vm.name-----Java HotSpot(TM) 64-Bit Server VM
file.encoding.pkg-----sun.io
user.country-----US
sun.java.launcher-----SUN_STANDARD
sun.os.patch.level-----unknown
java.vm.specification.name-----Java Virtual Machine Specification
user.dir-----/home/lpp/Codes/JavaWorkSpace/Test
java.runtime.version-----1.8.0_45-b14
java.awt.graphicsenv-----sun.awt.X11GraphicsEnvironment
java.endorsed.dirs-----/usr/lib/jvm/java-8-jdk/jre/lib/endorsed
os.arch-----amd64
java.io.tmpdir-----/tmp
line.separator-----
java.vm.specification.vendor-----Oracle Corporation
os.name-----Linux
sun.jnu.encoding-----UTF-8
java.library.path-----/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
java.specification.name-----Java Platform API Specification
java.class.version-----52.0
sun.management.compiler-----HotSpot 64-Bit Tiered Compilers
os.version-----4.0.1-1-ARCH
user.home-----/home/lpp
user.timezone-----
java.awt.printerjob-----sun.print.PSPrinterJob
file.encoding-----UTF-8
java.specification.version-----1.8
java.class.path-----/home/lpp/Codes/JavaWorkSpace/Test/bin
user.name-----lpp
java.vm.specification.version-----1.8
sun.java.command-----SystemDemo
java.home-----/usr/lib/jvm/java-8-jdk/jre
sun.arch.data.model-----64
user.language-----en
java.specification.vendor-----Oracle Corporation
awt.toolkit-----sun.awt.X11.XToolkit
java.vm.info-----mixed mode
java.version-----1.8.0_45
java.ext.dirs-----/usr/lib/jvm/java-8-jdk/jre/lib/ext:/usr/java/packages/lib/ext
sun.boot.class.path-----/usr/lib/jvm/java-8-jdk/jre/lib/resources.jar:/usr/lib/jvm/java-8-jdk/jre/lib/rt.jar:/usr/lib/jvm/java-8-jdk/jre/lib/sunrsasign.jar:/usr/lib/jvm/java-8-jdk/jre/lib/jsse.jar:/usr/lib/jvm/java-8-jdk/jre/lib/jce.jar:/usr/lib/jvm/java-8-jdk/jre/lib/charsets.jar:/usr/lib/jvm/java-8-jdk/jre/lib/jfr.jar:/usr/lib/jvm/java-8-jdk/jre/classes
java.vendor-----Oracle Corporation
file.separator-----/
java.vendor.url.bug-----http://bugreport.sun.com/bugreport/
sun.io.unicode.encoding-----UnicodeLittle
sun.cpu.endian-----little
sun.cpu.isalist-----