System 类包含了很多静态方法和变量,其提供的设施有:标准的输入(in)、标准的输出(out)和错误输出(err),对外部定义的属性和环境变量的访问,加载文件和库的方法;还有快速复制数组的一部分的使用方法。
由 System类定义的方法如下表。当所做的操作是安全方式所不允许的时候,许多方法抛出一个安全异常(Security Exception)。
方法 | 描述 |
---|---|
static void arrayCopy(Object source,int sourceStart,Object target, int targetStart,int size | 复制数组。被复制的数组有source传递,而 soruce中开始复制数组是的下标由 sourceStart传递。接收复制的数组由 target传递,而target中开始复制数组是的下标由 targetStart传递。Size 是被复制的元素个数 |
static long currentTimeMillis() | 返回至 1970年1月1日午夜至今的时间,时间单位为毫秒 |
static long nanoTime() | 返回最准确的可用系统计时器的当前值,以纳秒为单位。此方法只能用于测量已过的时间,与系统或钟表时间的其他任何时间概念无关。返回值表示从某一个固定但任意的时间算起的纳秒数。在程序中两次调用该方法可以测量代码执行的时间长度 |
static void exit(int exitCode) | 暂停执行,返回 exitCode值给父进程(通常为操作系统)。按照约定,0表示正常退出,所有其他的值表示某种形式的错误 |
static void gc() | 运行垃圾回收器。调用此方法意味着 Java虚拟机做了一些努力来回收未用对象,以便能够快速的重用这些对象当前占用的内存。当控制从方法调用中返回时,虚拟机已经尽最大努力回收了所有丢弃的对象 |
static Properties getPropertites() | 返回与Java运行系统有关的属性类(Propertites class) |
static String getProperty(String key) | 返回与 key 有关的系统属性。如果期望的属性没有被发现,则返回一个空对象(null object) |
static String getProperty(String key,String default | 返回与 key 有关的系统属性。如果期望的属性没有被发现,则返回 default |
static SecurityManager getSecurityManager() | 返回当前的安全管理程序,如果没有安全管理程序,则返回一个空对象(null objext) |
static void load(String library FileLibrary) | 装载由 libraryFileName 指定的动态库,必须指定其完全路径 |
static void loadLibrary(String libraryName) | 载入由 libraryName 指定的动态库 |
static void runFinalization() | 运行处于挂起终止状态的所有对象的终止方法 |
static void setErr(PrintStream eStream) | 设置标准的错误流(err)为eStream |
static void setIn(InputStream iStream) | 设置标准的输入(in)流为iStream |
static void setOut(PrintStream oStream) | 设置标准的输出(out)流为oStream |
static void setProperties(Properties sysProperties) | 设置由sysProperties指定的当前系统属性 |
static String setProperty(String key, String value) | 将 value 值赋给名为 key 的系统属性 |
static void setSecurityManager(SecurityManager s) | 设置由 s 指定的安全管理程序 |
计算程序运行的时间
long start,end;
long sum = 0;
long times = 100000000;
System.out.println("执行" + times + "次循环需要的时间");
start = System.nanoTime();
for (int i = 0; i < times; i++)
{
sum = sum + i*i;
}
end = System.nanoTime();
System.out.println("需要的时间是:" + (end - start) + "纳秒");
//执行100000000次循环需要的时间
//需要的时间是:1213556019纳秒
复制数组
public class SystemTest {
static byte a[] = {65,66,67,68,69,70,71};
static byte b[] = {88,88,88,88,88,88,88,88,88,88};
public static void main(String[] args) {
System.out.println("a = " + new String(a));
System.out.println("b = " + new String(b));
System.arraycopy(a, 0, b, 0, a.length);
System.out.println("b = " + new String(b));
System.arraycopy(a, 0, a, 1, a.length - 1);
System.arraycopy(b, 1, b, 0, b.length - 1);
System.out.println("a = " + new String(a));
System.out.println("b = " + new String(b));
}
}
//a = ABCDEFG
//b = XXXXXXXXXX
//b = ABCDEFGXXX
//a = AABCDEF
//b = BCDEFGXXXX
打印当前虚拟机所有环境属性的变量和值
public class Propertitestest {
public static void main(String[] args) {
Properties sp = System.getProperties();
Enumeration e = sp.propertyNames();
while(e.hasMoreElements())
{
String key = (String) e.nextElement();
System.out.println( key + " = "+sp.getProperty(key));
}
}
}
/**
java.runtime.name = Java(TM) SE Runtime Environment
sun.boot.library.path = C:\Program Files\Java\jdk1.8.0_171\jre\bin
java.vm.version = 25.171-b11
java.vm.vendor = Oracle Corporation
java.vendor.url = http://java.oracle.com/
path.separator = ;
java.vm.name = Java HotSpot(TM) Client VM
file.encoding.pkg = sun.io
user.script =
user.country = US
sun.java.launcher = SUN_STANDARD
sun.os.patch.level = Service Pack 1
java.vm.specification.name = Java Virtual Machine Specification
user.dir = C:\Users\lancer\Documents\NetBeansProjects\Stringtest
java.runtime.version = 1.8.0_171-b11
java.awt.graphicsenv = sun.awt.Win32GraphicsEnvironment
java.endorsed.dirs = C:\Program Files\Java\jdk1.8.0_171\jre\lib\endorsed
os.arch = x86
java.io.tmpdir = C:\Users\lancer\AppData\Local\Temp\
line.separator =
java.vm.specification.vendor = Oracle Corporation
user.variant =
os.name = Windows 7
sun.jnu.encoding = GBK
java.library.path = C:\Program Files\Java\jdk1.8.0_171\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;:C:\Program Files\Java\jdk1.8.0_171\bin;C:\Program Files\Common Files\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;.
java.specification.name = Java Platform API Specification
java.class.version = 52.0
sun.management.compiler = HotSpot Client Compiler
os.version = 6.1
user.home = C:\Users\lancer
user.timezone =
java.awt.printerjob = sun.awt.windows.WPrinterJob
file.encoding = UTF-8
java.specification.version = 1.8
user.name = lancer
java.class.path = C:\Users\lancer\Documents\NetBeansProjects\Stringtest\build\classes
java.vm.specification.version = 1.8
sun.arch.data.model = 32
java.home = C:\Program Files\Java\jdk1.8.0_171\jre
sun.java.command = stringtest.Stringtest
java.specification.vendor = Oracle Corporation
user.language = en
awt.toolkit = sun.awt.windows.WToolkit
java.vm.info = mixed mode
java.version = 1.8.0_171
java.ext.dirs = C:\Program Files\Java\jdk1.8.0_171\jre\lib\ext;C:\Windows\Sun\Java\lib\ext
sun.boot.class.path = C:\Program Files\Java\jdk1.8.0_171\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\rt.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\sunrsasign.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_171\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_171\jre\classes
java.vendor = Oracle Corporation
file.separator = \
java.vendor.url.bug = http://bugreport.sun.com/bugreport/
sun.cpu.endian = little
sun.io.unicode.encoding = UnicodeLittle
sun.desktop = windows
sun.cpu.isalist = pentium_pro+mmx pentium_pro pentium+mmx pentium i486 i386 i86
**/
jvm中的一些系统属性
系统属性 | 描述 | 系统属性 | 描述 |
---|---|---|---|
java.version | JRE 的版本 | java.class.path | Java 类路径 |
java.vendor | JRE 的厂商 | java.library.path | 装载类库的搜索路径 |
java.vendor.url | JRE 厂商的 URL | java.io.tmpdir | 默认的临时文件路径 |
java.home | Java 的安装目录 | java.compiler | JIT的名称 |
java.vm.specification.version | JVM 规范的版本 | java.ext.dirs | 扩展目录路径 |
java.vm.specification.vendor | JVM 规范的厂商 | os.name | 操作系统名称 |
java.vm.specification.name | JVM 规范的名称 | os.arch | 操作系统架构 |
java.vm.version | JVM 实现的版本 | os.version | 操作系统版本 |
java.vm.vendor | JVM 实现的厂商 | file.separator | 文件分隔符 |
java.specification.version | JRE 的详述版本 | path.separator | 行分隔符 |
java.specification.vendor | JRE 的详述厂商 | user.name | 用户账号名称 |
java.specification.name | JRE 的详述名称 | user.home | 用户主目录 |
java.class.version | Java 类格式版本号 | user.dir | 用户当前工作目录 |