Most visited

Recently visited

Added in API level 1

System

public final class System
extends Object

java.lang.Object
   ↳ java.lang.System


System类包含几个有用的类字段和方法。 它不能被实例化。

System类提供的System包括标准输入,标准输出和错误输出流; 访问外部定义的属性和环境变量; 加载文件和库的手段; 以及用于快速复制数组的一部分的实用方法。

Summary

Fields

public static final PrintStream err

“标准”错误输出流。

public static final InputStream in

“标准”输入流。

public static final PrintStream out

“标准”输出流。

Public methods

static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)

将指定源数组中的数组从指定位置开始复制到目标数组的指定位置。

static String clearProperty(String key)

删除由指定键指示的系统属性。

static Console console()

返回与当前Java虚拟机关联的唯一 Console对象(如果有)。

static long currentTimeMillis()

以毫秒为单位返回当前时间。

static void exit(int status)

终止当前运行的Java虚拟机。

static void gc()

运行垃圾回收器。

static Properties getProperties()

确定当前的系统属性。

static String getProperty(String key, String def)

获取由指定键指示的系统属性。

static String getProperty(String key)

获取由指定键指示的系统属性。

static SecurityManager getSecurityManager()

总是在Android中返回 null

static String getenv(String name)

获取指定环境变量的值。

static Map<StringString> getenv()

返回当前系统环境的不可修改的字符串映射视图。

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)

此方法在API级别1中已弃用。此方法本质上不安全。 这可能会导致终结器在活动对象上被调用,而其他线程同时操作这些对象,从而导致不稳定的行为或死锁。

static void setErr(PrintStream err)

重新分配“标准”错误输出流。

static void setIn(InputStream in)

重新分配“标准”输入流。

static void setOut(PrintStream out)

重新分配“标准”输出流。

static void setProperties(Properties props)

尝试设置所有系统属性。

static String setProperty(String key, String value)

设置由指定键指示的系统属性。

static void setSecurityManager(SecurityManager sm)

抛出 SecurityException (案例 sm == null除外)。

Inherited methods

From class java.lang.Object

Fields

err

Added in API level 1
PrintStream err

“标准”错误输出流。 该流已经打开并准备好接受输出数据。

通常,此流对应于由主机环境或用户指定的显示输出或其他输出目标。 按照惯例,即使主要输出流(变量out的值)已被重定向到文件或其他目标文件或其他目的地,该输出流也用于显示错误消息或应该立即引起用户注意的其他信息通常不会连续监测。

in

Added in API level 1
InputStream in

“标准”输入流。 该流已经打开并准备好提供输入数据。 通常,此流对应于由主机环境或用户指定的键盘输入或其他输入源。

out

Added in API level 1
PrintStream out

“标准”输出流。 该流已经打开并准备好接受输出数据。 通常,此流对应于由主机环境或用户指定的显示输出或其他输出目标。

对于简单的独立Java应用程序,编写一行输出数据的典型方法是:

     System.out.println(data)
 

println类方法 PrintStream

也可以看看:

Public methods

arraycopy

Added in API level 1
void arraycopy (Object src, 
                int srcPos, 
                Object dest, 
                int destPos, 
                int length)

将指定源数组中的数组从指定位置开始复制到目标数组的指定位置。 阵列组件的一个子序列被从通过引用的源阵列复制src通过引用的目标阵列dest 复制的组件数量等于length参数。 源阵列中位置srcPossrcPos+length-1的组件分别复制到目标阵列的位置destPosdestPos+length-1

如果参数 srcdest引用相同的数组对象,则执行复制就好像位置 srcPossrcPos+length-1中的组件 srcPos+length-1被复制到具有 length组件的临时数组,然后临时数组的内容被复制到位置 destPos通过目的地阵列的 destPos+length-1

如果 destnull ,则引发 NullPointerException

如果 srcnull ,则 NullPointerException被抛出,并且目标阵列不被修改。

否则,如果以下任一情况属实, ArrayStoreException引发 ArrayStoreException ,并且目标未被修改:

  • The src argument refers to an object that is not an array.
  • The dest argument refers to an object that is not an array.
  • The src argument and dest argument refer to arrays whose component types are different primitive types.
  • The src argument refers to an array with a primitive component type and the dest argument refers to an array with a reference component type.
  • The src argument refers to an array with a reference component type and the dest argument refers to an array with a primitive component type.

否则,如果以下任一情况属实,则引发 IndexOutOfBoundsException且目标未被修改:

  • The srcPos argument is negative.
  • The destPos argument is negative.
  • The length argument is negative.
  • srcPos+length is greater than src.length, the length of the source array.
  • destPos+length is greater than dest.length, the length of the destination array.

否则,如果来自位置srcPossrcPos+length-1的源数组的任何实际组件srcPos分配转换转换为目标数组的组件类型,则会引发ArrayStoreException 在这种情况下,假设k是小于长度的最小非负整数,从而无法将src[srcPos+ k ]转换为目标数组的组件类型; 当引发异常时,从位置srcPossrcPos+ k -1源阵列组件已经被复制到目标阵列位置destPosdestPos+ k -1并且目标阵列的其他位置将不会被修改。 (由于已经列出了限制,本段仅适用于两个数组都具有引用类型的组件类型的情况。)

Parameters
src Object: the source array.
srcPos int: starting position in the source array.
dest Object: the destination array.
destPos int: starting position in the destination data.
length int: the number of array elements to be copied.
Throws
IndexOutOfBoundsException if copying would cause access of data outside array bounds.
ArrayStoreException if an element in the src array could not be stored into the dest array because of a type mismatch.
NullPointerException if either src or dest is null.

clearProperty

Added in API level 1
String clearProperty (String key)

删除由指定键指示的系统属性。

Parameters
key String: the name of the system property to be removed.
Returns
String the previous string value of the system property, or null if there was no property with that key.
Throws
NullPointerException if key is null.
IllegalArgumentException if key is empty.

也可以看看:

console

Added in API level 9
Console console ()

返回与当前Java虚拟机关联的唯一 Console对象(如果有)。

Returns
Console The system console, if any, otherwise null.

currentTimeMillis

Added in API level 1
long currentTimeMillis ()

以毫秒为单位返回当前时间。 请注意,尽管返回值的时间单位是毫秒,但其值的粒度取决于底层操作系统,可能会更大。 例如,许多操作系统以几十毫秒为单位来测量时间。

有关“计算机时间”与协调通用时间(UTC)之间可能出现的细微差异的讨论,请参阅类别 Date的说明。

Returns
long the difference, measured in milliseconds, between the current time and midnight, January 1, 1970 UTC.

也可以看看:

exit

Added in API level 1
void exit (int status)

终止当前运行的Java虚拟机。 这个论点充当了一个状态代码; 按照惯例,非零状态码表示异常终止。

此方法在类Runtime调用exit方法。 此方法从不正常返回。

通话 System.exit(n)实际上等同于通话:

 Runtime.getRuntime().exit(n)
 

Parameters
status int: exit status.
Throws
SecurityException if a security manager exists and its checkExit method doesn't allow exit with the specified status.

也可以看看:

gc

Added in API level 1
void gc ()

运行垃圾回收器。

调用gc方法表明Java虚拟机花费大量的工作来回收未使用的对象,以便使它们当前占用的内存可供快速重用。 当控制从方法调用返回时,Java虚拟机已尽最大努力从所有被丢弃的对象中回收空间。

通话 System.gc()实际上等同于通话:

 Runtime.getRuntime().gc()
 

也可以看看:

getProperties

Added in API level 1
Properties getProperties ()

确定当前的系统属性。

以下属性总是由Dalvik VM提供:

Name Meaning Example
file.separator separator /
java.class.path System class path .
java.class.version (Not useful on Android) 50.0
java.compiler (Not useful on Android) Empty
java.ext.dirs (Not useful on Android) Empty
java.home Location of the VM on the file system /system
java.io.tmpdir See createTempFile(String, String) /sdcard
java.library.path Search path for JNI libraries /vendor/lib:/system/lib
java.vendor Human-readable VM vendor The Android Project
java.vendor.url URL for VM vendor's web site http://www.android.com/
java.version (Not useful on Android) 0
java.specification.version VM libraries version 0.9
java.specification.vendor VM libraries vendor The Android Project
java.specification.name VM libraries name Dalvik Core Library
java.vm.version VM implementation version 1.2.0
java.vm.vendor VM implementation vendor The Android Project
java.vm.name VM implementation name Dalvik
java.vm.specification.version VM specification version 0.9
java.vm.specification.vendor VM specification vendor The Android Project
java.vm.specification.name VM specification name Dalvik Virtual Machine Specification
line.separator The system line separator \n
os.arch OS architecture armv7l
os.name OS (kernel) name Linux
os.version OS (kernel) version 2.6.32.9-g103d848
path.separator See pathSeparator :
user.dir Base of non-absolute paths /
user.home (Not useful on Android) Empty
user.name (Not useful on Android) Empty

系统属性值中的多个路径由平台的路径分隔符分隔。

Returns
Properties the system properties

也可以看看:

getProperty

Added in API level 1
String getProperty (String key, 
                String def)

获取由指定键指示的系统属性。

首先,如果有安全管理器, checkPropertyAccess key作为参数调用其 checkPropertyAccess方法。

如果没有当前的一组系统属性,则首先以与 getProperties方法相同的方式创建和初始化一组系统属性。

Parameters
key String: the name of the system property.
def String: a default value.
Returns
String the string value of the system property, or the default value if there is no property with that key.
Throws
NullPointerException if key is null.
IllegalArgumentException if key is empty.

也可以看看:

getProperty

Added in API level 1
String getProperty (String key)

获取由指定键指示的系统属性。 如果没有当前的一组系统属性,则首先以与getProperties方法相同的方式创建和初始化一组系统属性。

Parameters
key String: the name of the system property.
Returns
String the string value of the system property, or null if there is no property with that key.
Throws
NullPointerException if key is null.
IllegalArgumentException if key is empty.

也可以看看:

getSecurityManager

Added in API level 1
SecurityManager getSecurityManager ()

始终在Android中返回 null

Returns
SecurityManager null in Android

getenv

Added in API level 1
String getenv (String name)

获取指定环境变量的值。 环境变量是一个与系统相关的外部命名值。

如果存在安全管理器, checkPermission使用RuntimePermission("getenv."+name)权限调用其checkPermission方法。 这可能会导致SecurityException被抛出。 如果没有抛出异常,则返回变量name的值。

System properties and environment variables都是名称和值之间的概念映射。 这两种机制都可以用来将用户定义的信息传递给Java进程。 环境变量具有更全局的效果,因为它们对定义它们的进程的所有后代都可见,而不仅仅是直接的Java子进程。 它们可以在不同的操作系统上具有细微差别的语义,如不区分大小写。 由于这些原因,环境变量更可能产生意想不到的副作用。 尽可能使用系统属性是最好的。 当需要全局效应时,或者当外部系统接口需要环境变量(如PATH )时,应使用环境变量。

在UNIX系统上,字母name通常很重要,而在Microsoft Windows系统中通常不是。 例如,表达式System.getenv("FOO").equals(System.getenv("foo"))在Microsoft Windows上可能是正确的。

Parameters
name String: the name of the environment variable
Returns
String the string value of the variable, or null if the variable is not defined in the system environment
Throws
NullPointerException if name is null
SecurityException if a security manager exists and its checkPermission method doesn't allow access to the environment variable name

也可以看看:

getenv

Added in API level 1
Map<StringString> getenv ()

返回当前系统环境的不可修改的字符串映射视图。 该环境是从名称到从父进程传递到子进程的值的依赖于系统的映射。

如果系统不支持环境变量,则返回空映射。

返回的映射永远不会包含空键或值。 尝试查询空键或值的存在将抛出NullPointerException 试图查询非String类型的键或值的存在将会抛出ClassCastException

返回的地图及其收集视图可能不服从 equals(Object)hashCode()方法的一般合同。

返回的映射在所有平台上通常都区分大小写。

如果安全管理器存在,则其checkPermission方法被调用并具有RuntimePermission("getenv.*")权限。 这可能会导致SecurityException被抛出。

将信息传递给Java子 进程时 ,通常优先于环境变量 system properties

Returns
Map<StringString> the environment as a map of variable names to values
Throws
SecurityException if a security manager exists and its checkPermission method doesn't allow access to the process environment

也可以看看:

identityHashCode

Added in API level 1
int identityHashCode (Object x)

无论给定对象的类是否覆盖hashCode(),都将返回给定对象的哈希码,与默认方法hashCode()返回的哈希码相同。 空引用的哈希码为零。

Parameters
x Object: object for which the hashCode is to be calculated
Returns
int the hashCode

inheritedChannel

Added in API level 1
Channel inheritedChannel ()

返回从创建此Java虚拟机的实体继承的通道。

此方法返回通过调用系统范围的默认 SelectorProvider对象的 inheritedChannel方法获得的通道。

除了 inheritedChannel描述的面向网络的通道 inheritedChannel ,此方法将来还可能会返回其他类型的通道。

Returns
Channel The inherited channel, if any, otherwise null.
Throws
IOException If an I/O error occurs
SecurityException If a security manager is present and it does not permit access to the channel.

lineSeparator

Added in API level 19
String lineSeparator ()

返回系统相关的行分隔符字符串。 它始终返回相同的值 - system property line.separator的初始值。

在UNIX系统上,它返回"\n" ; 在Microsoft Windows系统上,它返回"\r\n"

Returns
String

load

Added in API level 1
void load (String filename)

从本地文件系统加载具有指定文件名的代码文件作为动态库。 filename参数必须是完整的路径名称。

通话 System.load(name)实际上等同于通话:

 Runtime.getRuntime().load(name)
 

Parameters
filename String: the file to load.
Throws
SecurityException if a security manager exists and its checkLink method doesn't allow loading of the specified dynamic library
UnsatisfiedLinkError if the file does not exist.
NullPointerException if filename is null

也可以看看:

loadLibrary

Added in API level 1
void loadLibrary (String libname)

加载参数libname指定的系统库。 库名称映射到实际系统库的方式取决于系统。

通话 System.loadLibrary(name)实际上等同于通话

 Runtime.getRuntime().loadLibrary(name)
 

Parameters
libname String: the name of the library.
Throws
SecurityException if a security manager exists and its checkLink method doesn't allow loading of the specified dynamic library
UnsatisfiedLinkError if the library does not exist.
NullPointerException if libname is null

也可以看看:

mapLibraryName

Added in API level 1
String mapLibraryName (String libname)

将库名映射到代表本地库的平台特定字符串中。

Parameters
libname String: the name of the library.
Returns
String a platform-dependent native library name.
Throws
NullPointerException if libname is null

也可以看看:

nanoTime

Added in API level 1
long nanoTime ()

返回正在运行的Java虚拟机的高分辨率时间源的当前值,以纳秒为单位。

此方法只能用于测量已用时间,并且与系统或挂钟时间的任何其他概念无关。 返回的值表示自一些固定但任意原点时间以来的纳秒(可能在未来,因此值可能为负)。 在Java虚拟机的实例中,此方法的所有调用都使用相同的来源; 其他虚拟机实例可能会使用不同的来源。

此方法提供了纳秒精度,但不一定是纳秒分辨率(即值的更改频率) - 除了分辨率至少与 currentTimeMillis()一样好之外,不做任何保证。

连续调用中跨度大于约292年(2 63纳秒)的差异将无法正确计算由于数值溢出而导致的已用时间。

只有在计算在同一个Java虚拟机实例中获得的两个此类值之间的差异时,此方法返回的值才有意义。

例如,要测量某些代码需要执行多长时间:

 long startTime = System.nanoTime();
 // ... the code being measured ...
 long estimatedTime = System.nanoTime() - startTime;

比较两个nanoTime值

 long t0 = System.nanoTime();
 ...
 long t1 = System.nanoTime();
one should use t1 - t0 < 0, not t1 < t0, because of the possibility of numerical overflow.

Returns
long the current value of the running Java Virtual Machine's high-resolution time source, in nanoseconds

runFinalization

Added in API level 1
void runFinalization ()

运行任何挂起的对象的终止方法。

调用该方法表明,对运行在Java虚拟机的努力finalize已发现物体的方法被废弃,但其finalize方法还没有被运行。 当控制从方法调用返回时,Java虚拟机已尽最大努力完成所有未完成的定稿。

通话 System.runFinalization()实际上等同于通话:

 Runtime.getRuntime().runFinalization()
 

也可以看看:

runFinalizersOnExit

Added in API level 1
void runFinalizersOnExit (boolean value)

此方法在API级别1中已弃用。
这种方法本质上是不安全的。 这可能会导致终结器在活动对象上被调用,而其他线程同时操作这些对象,从而导致不稳定的行为或死锁。

退出时启用或禁用终止; 这样做指定了所有具有尚未自动调用终结器的对象的终结器将在Java运行时退出之前运行。 默认情况下,退出时的终止被禁用。

如果有安全管理器,则首先使用0作为其参数来调用其checkExit方法,以确保允许退出。 这可能会导致SecurityException。

Parameters
value boolean: indicating enabling or disabling of finalization
Throws
SecurityException if a security manager exists and its checkExit method doesn't allow the exit.

也可以看看:

setErr

Added in API level 1
void setErr (PrintStream err)

重新分配“标准”错误输出流。

首先,如果存在安全管理器,则调用其 checkPermission方法以获得 RuntimePermission("setIO")权限,以查看是否可以重新分配“标准”错误输出流。

Parameters
err PrintStream: the new standard error output stream.
Throws
SecurityException if a security manager exists and its checkPermission method doesn't allow reassigning of the standard error output stream.

也可以看看:

setIn

Added in API level 1
void setIn (InputStream in)

重新分配“标准”输入流。

首先,如果存在安全管理器,则调用 checkPermission方法的权限为 RuntimePermission("setIO")以查看是否可以重新分配“标准”输入流。

Parameters
in InputStream: the new standard input stream.
Throws
SecurityException if a security manager exists and its checkPermission method doesn't allow reassigning of the standard input stream.

也可以看看:

setOut

Added in API level 1
void setOut (PrintStream out)

重新分配“标准”输出流。

首先,如果存在安全管理器,则调用其 checkPermission方法的权限为 RuntimePermission("setIO")以查看是否可以重新分配“标准”输出流。

Parameters
out PrintStream: the new standard output stream
Throws
SecurityException if a security manager exists and its checkPermission method doesn't allow reassigning of the standard output stream.

也可以看看:

setProperties

Added in API level 1
void setProperties (Properties props)

尝试设置所有系统属性。 复制p所有属性,并放弃只读且不能修改的系统属性。 有关这些属性的列表,请参阅getProperty(String)

Parameters
props Properties

setProperty

Added in API level 1
String setProperty (String key, 
                String value)

设置由指定键指示的系统属性。

Parameters
key String: the name of the system property.
value String: the value of the system property.
Returns
String the previous value of the system property, or null if it did not have one.
Throws
NullPointerException if key or value is null.
IllegalArgumentException if key is empty.

也可以看看:

setSecurityManager

Added in API level 1
void setSecurityManager (SecurityManager sm)

抛出 SecurityException (案例 sm == null除外)。

安全管理员提供执行不受信任代码的安全环境,并且在Android上不受支持。 不受信任的代码无法在Android上的单个虚拟机内安全隔离,因此此方法在传递非空SecurityManager时总是抛出SecurityException

Parameters
sm SecurityManager: a security manager
Throws
SecurityException always, unless sm == null

Hooray!