写在前面:
这里的System,系统指的是 JRE (runtime)system,不是指 OS。
参数设置成为系统的全局变量,可以在项目的任何一个地方,通过System.getProperty("变量");来获得。
System.setProperty 相当于一个静态变量 ,存在内存里面!
System.setProperty()
/*
* 设置指定键对值的系统属性
* setProperty (String prop, String value);
*
* 参数:
* prop - 系统属性的名称。
* value - 系统属性的值。
*
* 返回:
* 系统属性以前的值,如果没有以前的值,则返回 null。
*
* 抛出:
* SecurityException - 如果安全管理器存在并且其 checkPermission 方法不允许设置指定属性。
* NullPointerException - 如果 key 或 value 为 null。
* IllegalArgumentException - 如果 key 为空。
*
*/
public class SystemTest {
static {
setValue();
}
public static void setValue() {
System.setProperty("sysid", "tyzf");
System.setProperty("appid", "ibps");
}
public static void main(String[] args) {
System.out.println(System.getProperty("sysid"));
System.out.println(System.getProperty("appid"));
System.out.println(System.getProperty("resid","defult"));
System.out.println(System.setProperty("appid", "hvps"));//返回系统属性以前的值,如果没有以前的值,则返回 null
System.out.println(System.getProperty("appid"));
//System.getProperties().list(System.out);
}
}
输出:
1 tyzf 2 ibps 3 defult 4 ibps 5 hvps
System.getProperty()
这个函数可以获取到Java JVM以及操作系统的一些参数,可以供程序判断等
可以传递的参数有:
1 System.getProperty("java.vm.version");//java虚拟机版本 2 System.getProperty("java.vendor.url"); //java官方网站 3 System.getProperty("java.vm.nam"); //java虚拟机名称 4 System.getProperty("user.country"); //国家或地区 5 System.getProperty("user.dir"); //工程的路径 6 System.getProperty("java.runtime.version");//java运行环境版本 7 System.getProperty("os.arch"); //操作系统位数(32或64) 8 System.getProperty("os.name"); //操作系统名称 9 System.getProperty("sun.jnu.encoding"); //编码格式 10 System.getProperty("os.version"); //操纵系统版本 11 System.getProperty("java.version"); //java版本版本</span>
除此之外,还可以传递许多参数,这里就不一一列举了.
可以直接使用下面代码获取到所有的键和值。
System.getProperties().list(System.out);
1 -- listing properties -- 2 java.runtime.name=Java(TM) SE Runtime Environment 3 sun.boot.library.path=C:\Program Files\Java\jdk1.8.0_152\jr... 4 java.vm.version=25.152-b16 5 java.vm.vendor=Oracle Corporation 6 java.vendor.url=http://java.oracle.com/ 7 path.separator=; 8 appid=hvps 9 java.vm.name=Java HotSpot(TM) 64-Bit Server VM 10 file.encoding.pkg=sun.io 11 user.script= 12 user.country=CN 13 sun.java.launcher=SUN_STANDARD 14 sun.os.patch.level=Service Pack 1 15 java.vm.specification.name=Java Virtual Machine Specification 16 user.dir=E:\workspace\Test 17 java.runtime.version=1.8.0_152-b16 18 java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment 19 java.endorsed.dirs=C:\Program Files\Java\jdk1.8.0_152\jr... 20 os.arch=amd64 21 java.io.tmpdir=C:\Users\ADMINI~1\AppData\Local\Temp\ 22 line.separator= 23 24 java.vm.specification.vendor=Oracle Corporation 25 user.variant= 26 os.name=Windows 7 27 sun.jnu.encoding=GBK 28 java.library.path=C:\Program Files\Java\jdk1.8.0_152\bi... 29 java.specification.name=Java Platform API Specification 30 java.class.version=52.0 31 sun.management.compiler=HotSpot 64-Bit Tiered Compilers 32 os.version=6.1 33 user.home=C:\Users\Administrator 34 sysid=tyzf 35 user.timezone= 36 java.awt.printerjob=sun.awt.windows.WPrinterJob 37 java.specification.version=1.8 38 file.encoding=UTF-8 39 user.name=Administrator 40 java.class.path=E:\workspace\Test\target\cl... 41 java.vm.specification.version=1.8 42 sun.arch.data.model=64 43 java.home=C:\Program Files\Java\jdk1.8.0_152\jre 44 sun.java.command=SystemTest 45 java.specification.vendor=Oracle Corporation 46 user.language=zh 47 awt.toolkit=sun.awt.windows.WToolkit 48 java.vm.info=mixed mode 49 java.version=1.8.0_152 50 java.ext.dirs=C:\Program Files\Java\jdk1.8.0_152\jr... 51 sun.boot.class.path=C:\Program Files\Java\jdk1.8.0_152\jr... 52 java.vendor=Oracle Corporation 53 file.separator=\ 54 java.vendor.url.bug=http://bugreport.sun.com/bugreport/ 55 sun.cpu.endian=little 56 sun.io.unicode.encoding=UnicodeLittle 57 sun.desktop=windows 58 sun.cpu.isalist=amd64
Java在jvm启动时设置系统属性
Java 允许我们以 -D<name>=<value>
这种键值对的形式设置系统属性,例如:-Duser=Alice
就设置了简单的系统属性,它的键为 user
,值为 Alice
。随后,我们就可以在程序中检索出 user
的值。
System.getProperty("user"); //Alice
继续举例
java -Djava.net.preferIPv4Stack=true -DsimplifyLogPath=false -DprintHex=true -DmergeLog=true -Dfile.encoding=GBK -Djava.io.tmpdir=./tmp
java -D 是 JVM 的标准选项,我们可以通过它设置系统属性。
标签:java,sun,System,user,setProperty,Java,getProperty From: https://www.cnblogs.com/ricehome/p/17684555.html