public final class System extends Object
System
类包含一些有用的类的字段和方法。它不能被实例化。
由System
类提供的设施包括标准输入、标准输出和错误输出流;访问外部定义的属性和环境变量;加载文件和库的方法;和一种快速复制数组的一部分的实用方法。
Modifier and Type | Field and Description |
---|---|
static PrintStream |
err
“标准”错误输出流。
|
static InputStream |
in
“标准”输入流。
|
static PrintStream |
out
“标准”输出流。
|
Modifier and Type | Method and Description |
---|---|
static void |
arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
从指定的源数组中复制一个数组,开始在指定的位置,到目标数组的指定位置。
|
static String |
clearProperty(String key)
移除指定的键所指示的系统属性。
|
static Console |
console()
返回唯一
Console 对象与当前java虚拟机相关的,如果任何。
|
static long |
currentTimeMillis()
返回当前时间以毫秒为单位。
|
static void |
exit(int status)
终止当前正在运行的java虚拟机。
|
static void |
gc()
运行垃圾收集器。
|
static Map<String,String> |
getenv()
返回当前系统环境的一个不可修改的字符串的Map视图。
|
static String |
getenv(String name)
获取指定环境变量的值。
|
static Properties |
getProperties()
确定当前系统属性。
|
static String |
getProperty(String key)
获取指定的键指示的系统属性。
|
static String |
getProperty(String key, String def)
获取指定的键指示的系统属性。
|
static SecurityManager |
getSecurityManager()
获取系统安全接口。
|
static int |
identityHashCode(Object x)
返回给定对象相同的哈希代码将被默认的方法hashcode()回来,是否给定对象的类重写hashcode()。
|
static Channel |
inheritedChannel()
返回从创建这个java虚拟机实体继承的通道。
|
static String |
lineSeparator()
返回系统相关的行分隔符字符串。
|
static void |
load(String filename)
加载由文件名参数指定的本地库。
|
static void |
loadLibrary(String libname)
负载的
libname 参数指定的本地库。
|
static String |
mapLibraryName(String libname)
将库名映射到表示本地库的特定平台的字符串中。
|
static long |
nanoTime()
返回运行java虚拟机的高精度时间源的电流值,在纳秒。
|
static void |
runFinalization()
运行任何对象待定型的定型方法。
|
static void |
runFinalizersOnExit(boolean value)
过时的。
这种方法本质上是不安全的。这可能会导致在终结器被称为活的对象而其他线程同时操作这些对象,导致不稳定的行为或死锁。
|
static void |
setErr(PrintStream err)
将标准错误输出流。
|
static void |
setIn(InputStream in)
将“标准”输入流。
|
static void |
setOut(PrintStream out)
将标准输出流。
|
static void |
setProperties(Properties props)
设置系统性能的
Properties 论点。
|
static String |
setProperty(String key, String value)
设置指定的键指示的系统属性。
|
static void |
setSecurityManager(SecurityManager s)
设置系统的安全性。
|
public static final InputStream in
public static final PrintStream out
对于简单的单机java应用,一个典型的方式写一行输出数据:
System.out.println(data)
看到PrintStream
println
类的方法。
PrintStream.println()
,
PrintStream.println(boolean)
,
PrintStream.println(char)
,
PrintStream.println(char[])
,
PrintStream.println(double)
,
PrintStream.println(float)
,
PrintStream.println(int)
,
PrintStream.println(long)
,
PrintStream.println(java.lang.Object)
,
PrintStream.println(java.lang.String)
public static final PrintStream err
通常,此流对应于主机环境或用户指定的显示输出或另一个输出目的地。按照惯例,输出流是用来显示错误信息或其他信息,即使主输出流到用户的关注,该变量的值out
,被重定向到一个文件或其他目的地,通常是不连续地监测。
public static void setIn(InputStream in)
首先,如果存在安全管理器,它的checkPermission
方法称为一个RuntimePermission("setIO")
许可是否可以重新分配的“标准”输入流。
in
-新的标准输入流。
SecurityException
-如果存在一个安全管理及其
checkPermission
方法不允许重新分配的标准输入流。
SecurityManager.checkPermission(java.security.Permission)
,
RuntimePermission
public static void setOut(PrintStream out)
首先,如果存在安全管理器,它的checkPermission
方法称为一个RuntimePermission("setIO")
许可是否可以重新分配标准输出流。
out
-新标准输出流
SecurityException
-如果存在一个安全管理及其
checkPermission
方法不允许重新分配的标准输出流。
SecurityManager.checkPermission(java.security.Permission)
,
RuntimePermission
public static void setErr(PrintStream err)
首先,如果存在安全管理器,它的checkPermission
方法称为一个RuntimePermission("setIO")
许可是否可以重新分配标准错误输出流。
err
-新的标准错误输出流。
SecurityException
-如果存在一个安全管理及其
checkPermission
方法不允许重新分配的标准错误输出流。
SecurityManager.checkPermission(java.security.Permission)
,
RuntimePermission
public static Console console()
Console
对象,如果任何。
public static Channel inheritedChannel() throws IOException
这个方法返回通道通过调用inheritedChannel
方法的默认SelectorProvider
对象。
除了面向网络渠道inheritedChannel
描述,这种方法可能在未来的回报等多种渠道。
IOException
如果I/O错误发生
SecurityException
-如果一个安全管理是存在的,它不允许接入信道。
public static void setSecurityManager(SecurityManager s)
如果有一个已经安装了安全管理器,该方法首先调用一个RuntimePermission("setSecurityManager")
权限来确保可以取代现有的安全管理安全管理的checkPermission
方法。这可能会导致在扔一个SecurityException
。
否则,该参数被确定为当前的安全管理器。如果参数是null
和没有安全经理已经建立,再不采取行动,该方法简单地返回。
s
-安全管理。
SecurityException
如果保安部经理已被设置,其
checkPermission
方法不允许它被替换。
getSecurityManager()
,
SecurityManager.checkPermission(java.security.Permission)
,
RuntimePermission
public static SecurityManager getSecurityManager()
null
返回。
setSecurityManager(java.lang.SecurityManager)
public static long currentTimeMillis()
看到一个略有差异的计算机时间”和协调世界时之间可能出现的“讨论班Date
描述(UTC)。
Date
public static long nanoTime()
此方法只能用于测量经过的时间,不涉及任何其他的系统或墙壁时钟时间的概念。返回值表示从某一固定但任意纳秒零起源时间(也许在将来,所以值可能为负)。相同的起源是由一个java虚拟机实例的所有调用该方法;其他虚拟机实例可能会使用不同的起源。
这种方法提供了纳秒级精度,但不一定是纳秒分辨率(即频率变化值)-没有保证了除了分辨率至少是一样好,currentTimeMillis()
。
在连续的调用,跨度大于约292年的差异(2六十三纳秒)不能正确计算经过的时间由于数值溢出。
此方法返回的值成为有意义的只有两个值之间的差异,一个java虚拟机的同一实例中得到的,计算。
例如,要测量一些代码需要执行多长时间:
long startTime = System.nanoTime();
// ... the code being measured ...
long estimatedTime = System.nanoTime() - startTime;
比较两nanoTime值
long t0 = System.nanoTime();
...
long t1 = System.nanoTime();
应该使用
t1 - t0 < 0
,不
t1 < t0
,因为数值溢出的可能性。
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
src
数组引用的数组引用的
dest
复制。组件的数量复制等于
length
论点。这些组件的位置
srcPos
通过源数组中
srcPos+length-1
复制到的位置
destPos
通过
destPos+length-1
,分别对目标数组。
如果src
和dest
参数指向同一数组对象,然后复制如果组件在位置srcPos
通过srcPos+length-1
首先被复制到一个临时数组与length
组件然后临时数组的内容复制到的位置destPos
通过目的阵列destPos+length-1
进行。
如果dest
是null
,然后NullPointerException
抛出。
如果src
是null
,然后NullPointerException
投入和目标数组不改。
否则,如果任何以下是真的,一个ArrayStoreException
投入和目标不改:
src
参数指的是一个对象,不是一个数组。dest
参数指的是一个对象,不是一个数组。src
论点和dest
论点。src
参数指的是一个原始的组件类型和dest
参数指的是一个参考的组件类型的数组。src
参数指的是一个参考的组件类型和dest
参数指的是一个原始的组件类型的数组。否则,如果任何以下是真的,一个IndexOutOfBoundsException
投入和目标不改:
srcPos
参数为负。destPos
参数为负。length
参数为负。srcPos+length
大于src.length
,源数组的长度。destPos+length
大于dest.length
,目标数组的长度。否则,如果任何实际通过srcPos+length-1
无法从位置srcPos
源阵列组件被转换成通过赋值转换目标数组的组件类型,一个ArrayStoreException
抛出。在这种情况下,让nullk是最小的非负整数小于长度,src[srcPos+
nullk]
无法转换为目标数组的组件类型;在异常抛出时,源位置srcPos
阵列组件通过srcPos+
nullk-1
已经复制到目标数组的位置destPos
通过destPos+
nullk-1
没有其他目标数组的位置已被修改。(因为限制已列,本款仅适用于在有效的排列,都是引用类型。类型的组件的情况)
src
-源阵列。
srcPos
-源数组中的起始位置。
dest
-目标数组。
destPos
在目标数据的起始位置。
length
-数组元素的数目被复制。
IndexOutOfBoundsException
如果复制会导致外部数组边界数据访问。
ArrayStoreException
-如果在
src
数组的一个元素不能被存储到
dest
阵列由于类型不匹配。
NullPointerException
-如果
src
或
dest
是
null
。
public static int identityHashCode(Object x)
x
对象的hashCode是计算
public static Properties getProperties()
首先,如果存在安全管理器,它的checkPropertiesAccess
方法不带参数调用。这可能会导致安全异常。
使用的方法getProperty(String)
系统属性的当前设置为Properties
对象返回。如果没有当前的系统属性集,则首先创建并初始化一组系统属性。这组系统属性总是包括以下键的值:
Key | Description of Associated Value |
---|---|
java.version |
Java Runtime Environment version |
java.vendor |
Java Runtime Environment vendor |
java.vendor.url |
Java vendor URL |
java.home |
Java installation directory |
java.vm.specification.version |
Java Virtual Machine specification version |
java.vm.specification.vendor |
Java Virtual Machine specification vendor |
java.vm.specification.name |
Java Virtual Machine specification name |
java.vm.version |
Java Virtual Machine implementation version |
java.vm.vendor |
Java Virtual Machine implementation vendor |
java.vm.name |
Java Virtual Machine implementation name |
java.specification.version |
Java Runtime Environment specification version |
java.specification.vendor |
Java Runtime Environment specification vendor |
java.specification.name |
Java Runtime Environment specification name |
java.class.version |
Java class format version number |
java.class.path |
Java class path |
java.library.path |
List of paths to search when loading libraries |
java.io.tmpdir |
Default temp file path |
java.compiler |
Name of JIT compiler to use |
java.ext.dirs |
Path of extension directory or directories |
os.name |
Operating system name |
os.arch |
Operating system architecture |
os.version |
Operating system version |
file.separator |
File separator ("/" on UNIX) |
path.separator |
Path separator (":" on UNIX) |
line.separator |
Line separator ("\n" on UNIX) |
user.name |
User's account name |
user.home |
User's home directory |
user.dir |
User's current working directory |
在系统属性值中的多个路径是由平台的路径分隔符分隔的。
注意,即使安全经理不允许getProperties
操作,可以选择允许getProperty(String)
操作。
SecurityException
-如果存在一个安全管理及其
checkPropertiesAccess
方法不允许访问系统性能。
setProperties(java.util.Properties)
,
SecurityException
,
SecurityManager.checkPropertiesAccess()
,
Properties
public static String lineSeparator()
public static void setProperties(Properties props)
Properties
论点。
首先,如果存在安全管理器,它的checkPropertiesAccess
方法不带参数调用。这可能会导致安全异常。
的说法就用getProperty(String)
方法系统属性的当前设置。如果参数是null
,然后系统属性的当前设置被遗忘。
props
-新的系统性能。
SecurityException
-如果存在一个安全管理及其
checkPropertiesAccess
方法不允许访问系统性能。
getProperties()
,
Properties
,
SecurityException
,
SecurityManager.checkPropertiesAccess()
public static String getProperty(String key)
首先,如果存在安全管理器,它的checkPropertyAccess
方法被调用的关键参数。这可能导致SecurityException。
如果没有当前的系统性能,一套系统的性能是首先创建和初始化的方式相同的getProperties
方法。
key
-系统属性的名称。
null
如果有钥匙没有财产。
SecurityException
-如果存在一个安全管理及其
checkPropertyAccess
方法不允许访问指定的系统性能。
null
key
NullPointerException
。
IllegalArgumentException
-如果
key
是空的。
setProperty(java.lang.String, java.lang.String)
,
SecurityException
,
SecurityManager.checkPropertyAccess(java.lang.String)
,
getProperties()
public static String getProperty(String key, String def)
首先,如果存在安全管理器,它的checkPropertyAccess
方法被调用的key
作为参数。
如果没有当前的系统性能,一套系统的性能是首先创建和初始化的方式相同的getProperties
方法。
key
-系统属性的名称。
def
-默认值。
SecurityException
-如果存在一个安全管理及其
checkPropertyAccess
方法不允许访问指定的系统性能。
null
key
NullPointerException
。
IllegalArgumentException
-如果
key
是空的。
setProperty(java.lang.String, java.lang.String)
,
SecurityManager.checkPropertyAccess(java.lang.String)
,
getProperties()
public static String setProperty(String key, String value)
首先,如果存在一个安全管理,其SecurityManager.checkPermission
方法称为一个PropertyPermission(key, "write")
许可。这可能导致SecurityException被抛。如果没有抛出异常,则指定的属性将被设置为给定值。
key
-系统属性的名称。
value
-系统属性的值。
null
。
SecurityException
-如果存在一个安全管理及其
checkPermission
方法不允许指定的属性设置。
NullPointerException
-如果
key
或
value
是
null
。
IllegalArgumentException
-如果
key
是空的。
getProperty(java.lang.String)
,
getProperty(java.lang.String)
,
getProperty(java.lang.String, java.lang.String)
,
PropertyPermission
,
SecurityManager.checkPermission(java.security.Permission)
public static String clearProperty(String key)
首先,如果存在一个安全管理,其SecurityManager.checkPermission
方法称为一个PropertyPermission(key, "write")
许可。这可能导致SecurityException被抛。如果没有抛出异常,则将删除指定的属性。
key
-系统属性的名称被删除。
null
之前,如果有钥匙没有财产。
SecurityException
-如果存在一个安全管理及其
checkPropertyAccess
方法不允许访问指定的系统性能。
null
key
NullPointerException
。
IllegalArgumentException
-如果
key
是空的。
getProperty(java.lang.String)
,
setProperty(java.lang.String, java.lang.String)
,
Properties
,
SecurityException
,
SecurityManager.checkPropertiesAccess()
public static String getenv(String name)
如果存在一个安全管理,其checkPermission
方法称为一个
许可。这可能会导致RuntimePermission
("getenv."+name)SecurityException
抛出。如果把变量的值也不例外name
返回。
System properties and environment variables是概念映射名称和值之间。这两种机制都可以用来传递信息的一个java程序的自定义。环境变量有一个全球性的影响,因为他们所有的后代将它们定义的过程可见,不只是眼前的java进程。他们可以有微妙的不同的语义,如不敏感,在不同的操作系统。因为这些原因,环境变量更可能有意想不到的副作用。最好是在可能的情况下使用系统属性。环境变量时应使用一个全局的效果是理想的,或当一个外部系统的接口需要一个环境变量(如PATH
)。
在UNIX系统下name
字母通常是显著的,而在微软Windows系统,它通常是不。例如,表达System.getenv("FOO").equals(System.getenv("foo"))
可能对微软Windows是真的。
name
-环境变量名称
null
如果变量不在系统环境定义
null
name
NullPointerException
SecurityException
-如果存在一个安全管理及其
checkPermission
方法不允许访问环境变量
name
getenv()
,
ProcessBuilder.environment()
public static Map<String,String> getenv()
如果系统不支持环境变量,则返回一个空的Map。
返回的Map将永远不会包含空键或值。试图查询一个空键或值的存在将NullPointerException
。试图查询一个键或值类型不是String
的存在将ClassCastException
。
返回的Map和收集的意见可能不服从的Object.equals(java.lang.Object)
和Object.hashCode()
方法一般合同。
返回的Map通常是在所有平台上敏感的情况下。
如果存在一个安全管理,其checkPermission
方法称为一个
许可。这可能会导致RuntimePermission
("getenv.*")SecurityException
抛出。
当信息传递到java的子过程,system properties一般优先在环境变量。
SecurityException
-如果存在一个安全管理及其
checkPermission
方法不允许访问过程环境
getenv(String)
,
ProcessBuilder.environment()
public static void exit(int status)
这个方法调用的类Runtime
exit
方法。这种方法从未正常返回。
电话System.exit(n)
实际上相当于电话:
Runtime.getRuntime().exit(n)
status
出口状况。
SecurityException
-如果存在一个安全管理及其
checkExit
方法不允许用指定的状态退出。
Runtime.exit(int)
public static void gc()
调用gc
方法表明,java虚拟机消耗的努力回收未使用的对象为了让记忆他们目前占据可以快速重用。当控制从方法调用返回,java虚拟机已经尽了最大努力去回收废弃物品的空间。
电话System.gc()
实际上相当于电话:
Runtime.getRuntime().gc()
Runtime.gc()
public static void runFinalization()
调用此方法表明,java虚拟机运行花费的努力已发现的被丢弃,但其finalize
方法尚未运行对象的finalize
方法。当控制从方法调用返回,java虚拟机已经尽了最大努力去完成所有未finalizations。
电话System.runFinalization()
实际上相当于电话:
Runtime.getRuntime().runFinalization()
@Deprecated public static void runFinalizersOnExit(boolean value)
如果存在安全管理器,它的checkExit
方法是先叫0确保出口允许其论点。这可能导致SecurityException。
value
指示启用或禁用终结
SecurityException
-如果存在一个安全管理及其
checkExit
方法不允许退出。
Runtime.exit(int)
,
Runtime.gc()
,
SecurityManager.checkExit(int)
public static void load(String filename)
电话System.load(name)
实际上相当于电话:
Runtime.getRuntime().load(name)
filename
-加载的文件。
SecurityException
-如果存在一个安全管理及其
checkLink
方法不允许指定的动态库的加载
UnsatisfiedLinkError
-如果文件不是一个绝对路径名,当地的图书馆是不是与VM的静态链接库,或不能通过主机系统映射到本地的图书馆形象。
null
filename
NullPointerException
Runtime.load(java.lang.String)
,
SecurityManager.checkLink(java.lang.String)
public static void loadLibrary(String libname)
libname
参数指定的本地库。的
libname
参数必须不包含任何特定平台的前缀、文件扩展名或路径。如果一个本地库称为
libname
是静态的虚拟机相连,然后jni_onload_
libname
函数库导出的调用。看到JNI规范的更多细节。否则,该参数是由系统加载库名库位置映射到本Map书馆形象的实现依赖性。
电话System.loadLibrary(name)
实际上相当于电话
Runtime.getRuntime().loadLibrary(name)
libname
-库的名称。
SecurityException
-如果存在一个安全管理及其
checkLink
方法不允许指定的动态库的加载
UnsatisfiedLinkError
-如果库名参数包含文件路径,当地的图书馆是不是与VM的静态链接库,或不能通过主机系统映射到本地的图书馆形象。
null
libname
NullPointerException
Runtime.loadLibrary(java.lang.String)
,
SecurityManager.checkLink(java.lang.String)
public static String mapLibraryName(String libname)
libname
-库的名称。
null
libname
NullPointerException
loadLibrary(java.lang.String)
,
ClassLoader.findLibrary(java.lang.String)
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.