鴻蒙OS System

2022-05-26 16:15 更新

System

java.lang.Object

|---java.lang.System

public final class System
extends Object

System 類包含幾個(gè)有用的類字段和方法。 它不能被實(shí)例化。

System 類提供的設(shè)施包括標(biāo)準(zhǔn)輸入、標(biāo)準(zhǔn)輸出和錯(cuò)誤輸出流; 訪問外部定義的屬性和環(huán)境變量; 一種加載文件和庫的方法; 以及一種用于快速復(fù)制數(shù)組的一部分的實(shí)用方法。

字段摘要

修飾符和類型 字段 描述
static PrintStream err “標(biāo)準(zhǔn)”錯(cuò)誤輸出流。
static InputStream in “標(biāo)準(zhǔn)”輸入流。
static PrintStream out “標(biāo)準(zhǔn)”輸出流。

方法總結(jié)

修飾符和類型 方法 描述
static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length) 將指定源數(shù)組中的數(shù)組從指定位置開始復(fù)制到目標(biāo)數(shù)組的指定位置。
static String clearProperty(String key) 刪除由指定鍵指示的系統(tǒng)屬性。
static Console console() 返回與當(dāng)前 Java 虛擬機(jī)關(guān)聯(lián)的唯一 Console 對(duì)象(如果有)。
static long currentTimeMillis() 以毫秒為單位返回當(dāng)前時(shí)間。
static void exit(int status) 終止當(dāng)前運(yùn)行的 Java 虛擬機(jī)。
static void gc() 運(yùn)行垃圾收集器。
static MapString,String getenv() 返回當(dāng)前系統(tǒng)環(huán)境的不可修改的字符串映射視圖。
static String getenv(String name) 獲取指定環(huán)境變量的值。
static Properties getProperties() 確定當(dāng)前系統(tǒng)屬性。
static String getProperty(String key) 獲取指定鍵指示的系統(tǒng)屬性。
static String getProperty(String key, String def) 獲取指定鍵指示的系統(tǒng)屬性。
static SecurityManager getSecurityManager() 獲取系統(tǒng)安全接口。
static int identityHashCode(Object x) 為給定對(duì)象返回與默認(rèn)方法 hashCode() 返回的相同的哈希碼,無論給定對(duì)象的類是否覆蓋 hashCode()。
static Channel inheritedChannel() 返回從創(chuàng)建此 Java 虛擬機(jī)的實(shí)體繼承的通道。
static String lineSeparator() 返回系統(tǒng)相關(guān)的行分隔符字符串。
static void load(String filename) 加載由文件名參數(shù)指定的本機(jī)庫。
static void loadLibrary(String libname) 加載由 libname 參數(shù)指定的本機(jī)庫。
static String mapLibraryName(String libname) 將庫名稱映射到表示本機(jī)庫的特定于平臺(tái)的字符串。
static long nanoTime() 返回正在運(yùn)行的 Java 虛擬機(jī)的高分辨率時(shí)間源的當(dāng)前值,以納秒為單位。
static void runFinalization() 運(yùn)行任何等待終結(jié)的對(duì)象的終結(jié)方法。
static void runFinalizersOnExit(boolean value) 已棄用。 這種方法本質(zhì)上是不安全的。 這可能會(huì)導(dǎo)致在其他線程同時(shí)操作這些對(duì)象時(shí)對(duì)活動(dòng)對(duì)象調(diào)用終結(jié)器,從而導(dǎo)致行為不穩(wěn)定或死鎖。
static void setErr(PrintStream err) 重新分配“標(biāo)準(zhǔn)”錯(cuò)誤輸出流。
static void setIn(InputStream in) 重新分配“標(biāo)準(zhǔn)”輸入流。
static void setOut(PrintStream out) 重新分配“標(biāo)準(zhǔn)”輸出流。
static void setProperties(Properties props) 將系統(tǒng)屬性設(shè)置為 Properties 參數(shù)。
static String setProperty(String key, String value) 設(shè)置由指定鍵指示的系統(tǒng)屬性。
static void setSecurityManager(SecurityManager s) 設(shè)置系統(tǒng)安全。
從類 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

字段詳細(xì)信息

err

public static final PrintStream err

“標(biāo)準(zhǔn)”錯(cuò)誤輸出流。 此流已經(jīng)打開并準(zhǔn)備好接受輸出數(shù)據(jù)。

通常,此流對(duì)應(yīng)于主機(jī)環(huán)境或用戶指定的顯示輸出或另一個(gè)輸出目的地。 按照慣例,此輸出流用于顯示錯(cuò)誤消息或其他應(yīng)立即引起用戶注意的信息,即使主要輸出流(變量 out 的值)已重定向到文件或其他目標(biāo) 通常不會(huì)持續(xù)監(jiān)控。

in

public static final InputStream in

“標(biāo)準(zhǔn)”輸入流。 該流已經(jīng)打開并準(zhǔn)備好提供輸入數(shù)據(jù)。 通常,此流對(duì)應(yīng)于鍵盤輸入或主機(jī)環(huán)境或用戶指定的另一個(gè)輸入源。

out

public static final PrintStream out

“標(biāo)準(zhǔn)”輸出流。 此流已經(jīng)打開并準(zhǔn)備好接受輸出數(shù)據(jù)。 通常,此流對(duì)應(yīng)于主機(jī)環(huán)境或用戶指定的顯示輸出或另一個(gè)輸出目的地。

對(duì)于簡(jiǎn)單的獨(dú)立 Java 應(yīng)用程序,編寫一行輸出數(shù)據(jù)的典型方法是:

     System.out.println(data) 

方法詳情

setIn

public static void setIn(InputStream in)

重新分配“標(biāo)準(zhǔn)”輸入流。

首先,如果有安全管理器,則使用 RuntimePermission("setIO") 權(quán)限調(diào)用其 checkPermission 方法,以查看是否可以重新分配“標(biāo)準(zhǔn)”輸入流。

參數(shù):

參數(shù)名稱 參數(shù)描述
in 新的標(biāo)準(zhǔn)輸入流。

Throws:

Throw名稱 Throw描述
SecurityException 如果存在安全管理器并且其 checkPermission 方法不允許重新分配標(biāo)準(zhǔn)輸入流。

setOut

public static void setOut(PrintStream out)

重新分配“標(biāo)準(zhǔn)”輸出流。

首先,如果有安全管理器,則使用 RuntimePermission("setIO") 權(quán)限調(diào)用其 checkPermission 方法,以查看是否可以重新分配“標(biāo)準(zhǔn)”輸出流。

參數(shù):

參數(shù)名稱 參數(shù)描述
out 新的標(biāo)準(zhǔn)輸出流

Throws:

Throw名稱 Throw描述
SecurityException 如果存在安全管理器并且其 checkPermission 方法不允許重新分配標(biāo)準(zhǔn)輸出流。

setErr

public static void setErr(PrintStream err)

重新分配“標(biāo)準(zhǔn)”錯(cuò)誤輸出流。

首先,如果有一個(gè)安全管理器,它的 checkPermission 方法會(huì)以 RuntimePermission("setIO") 權(quán)限調(diào)用,以查看是否可以重新分配“標(biāo)準(zhǔn)”錯(cuò)誤輸出流。

參數(shù):

參數(shù)名稱 參數(shù)描述
err 新的標(biāo)準(zhǔn)錯(cuò)誤輸出流。

Throws:

Throw名稱 Throw描述
SecurityException 如果存在安全管理器并且其 checkPermission 方法不允許重新分配標(biāo)準(zhǔn)錯(cuò)誤輸出流。

console

public static Console console()

返回與當(dāng)前 Java 虛擬機(jī)關(guān)聯(lián)的唯一 Console 對(duì)象(如果有)。

返回:

系統(tǒng)控制臺(tái)(如果有),否則為 null。

inheritedChannel

public static Channel inheritedChannel() throws IOException

返回從創(chuàng)建此 Java 虛擬機(jī)的實(shí)體繼承的通道。

該方法返回調(diào)用系統(tǒng)范圍默認(rèn) SelectorProvider 對(duì)象的inheritedChannel 方法獲得的通道。

除了inheritedChannel中描述的面向網(wǎng)絡(luò)的通道外,該方法將來可能會(huì)返回其他類型的通道。

返回:

繼承的通道(如果有),否則為 null。

Throws:

Throw名稱 Throw描述
IOException 如果發(fā)生 I/O 錯(cuò)誤
SecurityException 如果存在安全管理器并且它不允許訪問通道。

setSecurityManager

public static void setSecurityManager(SecurityManager s)

設(shè)置系統(tǒng)安全。

如果已經(jīng)安裝了安全管理器,該方法首先調(diào)用安全管理器的 checkPermission 方法,并帶有 RuntimePermission("setSecurityManager") 權(quán)限,以確保可以替換現(xiàn)有的安全管理器。 這可能會(huì)導(dǎo)致拋出 SecurityException。

否則,該參數(shù)被建立為當(dāng)前的安全管理器。 如果參數(shù)為 null 并且沒有建立安全管理器,則不采取任何操作,方法只是返回。

參數(shù):

參數(shù)名稱 參數(shù)描述
s 安全管理員。

Throws:

Throw名稱 Throw描述
SecurityException 如果已經(jīng)設(shè)置了安全管理器并且它的 checkPermission 方法不允許替換它。

getSecurityManager

public static SecurityManager getSecurityManager()

獲取系統(tǒng)安全接口。

返回:

如果已經(jīng)為當(dāng)前應(yīng)用程序建立了安全管理器,則返回該安全管理器; 否則,返回 null。

currentTimeMillis

public static long currentTimeMillis()

以毫秒為單位返回當(dāng)前時(shí)間。 請(qǐng)注意,雖然返回值的時(shí)間單位是毫秒,但值的粒度取決于底層操作系統(tǒng),并且可能更大。 例如,許多操作系統(tǒng)以幾十毫秒為單位測(cè)量時(shí)間。

有關(guān)“計(jì)算機(jī)時(shí)間”和協(xié)調(diào)世界時(shí) (UTC) 之間可能出現(xiàn)的細(xì)微差異的討論,請(qǐng)參閱類 Date 的描述。

返回:

當(dāng)前時(shí)間與 UTC 1970 年 1 月 1 日午夜之間的差異,以毫秒為單位。

nanoTime

public static long nanoTime()

返回正在運(yùn)行的 Java 虛擬機(jī)的高分辨率時(shí)間源的當(dāng)前值,以納秒為單位。

此方法只能用于測(cè)量經(jīng)過的時(shí)間,與系統(tǒng)或掛鐘時(shí)間的任何其他概念無關(guān)。返回的值表示自某個(gè)固定但任意的原始時(shí)間以來的納秒(可能在將來,因此值可能為負(fù)數(shù))。在 Java 虛擬機(jī)實(shí)例中,此方法的所有調(diào)用都使用相同的來源;其他虛擬機(jī)實(shí)例可能使用不同的來源。

此方法提供納秒精度,但不一定提供納秒分辨率(即值更改的頻率) - 不保證分辨率至少與 currentTimeMillis() 的分辨率一樣好。

由于數(shù)值溢出,超過大約 292 年(263 納秒)的連續(xù)調(diào)用的差異將無法正確計(jì)算經(jīng)過的時(shí)間。

僅當(dāng)在 Java 虛擬機(jī)的同一實(shí)例中獲得的兩個(gè)此類值之間的差異被計(jì)算時(shí),此方法返回的值才有意義。

例如,要測(cè)量一些代碼需要多長(zhǎng)時(shí)間執(zhí)行:

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

比較兩個(gè) nanoTime 值

 long t0 = System.nanoTime();
 ...
 long t1 = System.nanoTime();

應(yīng)該使用 t1 - t0 < 0,而不是 t1 < t0,因?yàn)閿?shù)值溢出的可能性。

返回:

正在運(yùn)行的 Java 虛擬機(jī)的高分辨率時(shí)間源的當(dāng)前值,以納秒為單位

arraycopy

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

將指定源數(shù)組中的數(shù)組從指定位置開始復(fù)制到目標(biāo)數(shù)組的指定位置。數(shù)組組件的子序列從 src 引用的源數(shù)組復(fù)制到 dest 引用的目標(biāo)數(shù)組。復(fù)制的組件數(shù)量等于長(zhǎng)度參數(shù)。源數(shù)組中位置 srcPos 到 srcPos+length-1 的分量分別復(fù)制到目標(biāo)數(shù)組的位置 destPos 到 destPos+length-1。

如果 src 和 dest 參數(shù)引用同一個(gè)數(shù)組對(duì)象,則執(zhí)行復(fù)制,就好像首先將位置 srcPos 到 srcPos+length-1 的分量復(fù)制到具有長(zhǎng)度分量的臨時(shí)數(shù)組,然后臨時(shí)數(shù)組的內(nèi)容是通過目標(biāo)數(shù)組的 destPos+length-1 復(fù)制到位置 destPos。

如果 dest 為 null,則拋出 NullPointerException。

如果 src 為 null,則拋出 NullPointerException 并且不修改目標(biāo)數(shù)組。

否則,如果以下任何一項(xiàng)為真,則拋出 ArrayStoreException 并且不修改目標(biāo):

  • src 參數(shù)引用一個(gè)不是數(shù)組的對(duì)象。
  • dest 參數(shù)引用一個(gè)不是數(shù)組的對(duì)象。
  • src 參數(shù)和 dest 參數(shù)引用其組件類型為不同原始類型的數(shù)組。
  • src 參數(shù)引用具有原始組件類型的數(shù)組,而 dest 參數(shù)引用具有引用組件類型的數(shù)組。
  • src 參數(shù)引用具有引用組件類型的數(shù)組,而 dest 參數(shù)引用具有原始組件類型的數(shù)組。

否則,如果以下任何一項(xiàng)為真,則拋出 IndexOutOfBoundsException 并且不修改目標(biāo):

  • srcPos 參數(shù)是否定的。
  • destPos 參數(shù)是否定的。
  • length 參數(shù)是否定的。
  • srcPos+length 大于 src.length,即源數(shù)組的長(zhǎng)度。
  • destPos+length 大于 dest.length,即目標(biāo)數(shù)組的長(zhǎng)度。

否則,如果從位置 srcPos 到 srcPos+length-1 的源數(shù)組的任何實(shí)際組件不能通過賦值轉(zhuǎn)換轉(zhuǎn)換為目標(biāo)數(shù)組的組件類型,則拋出 ArrayStoreException。 在這種情況下,設(shè) k 為小于 length 的最小非負(fù)整數(shù),使得 src[srcPos+k] 不能轉(zhuǎn)換為目標(biāo)數(shù)組的組件類型; 當(dāng)拋出異常時(shí),從位置 srcPos 到 srcPos+k-1 的源數(shù)組組件將已經(jīng)被復(fù)制到目標(biāo)數(shù)組位置 destPos 到 destPos+k-1,并且不會(huì)修改目標(biāo)數(shù)組的其他位置。 (由于已經(jīng)逐條列出了限制,本段僅適用于兩個(gè)數(shù)組都具有引用類型的組件類型的情況。)

參數(shù):

參數(shù)名稱 參數(shù)描述
src 源數(shù)組。
srcPos 源數(shù)組中的起始位置。
dest 目標(biāo)數(shù)組。
destPos 目標(biāo)數(shù)據(jù)中的起始位置。
length 要復(fù)制的數(shù)組元素的數(shù)量。

Throws:

Throw名稱 Throw描述
IndexOutOfBoundsException 如果復(fù)制會(huì)導(dǎo)致訪問數(shù)組邊界之外的數(shù)據(jù)。
ArrayStoreException 如果 src 數(shù)組中的元素由于類型不匹配而無法存儲(chǔ)到 dest 數(shù)組中。
NullPointerException 如果 src 或 dest 為空。

identityHashCode

public static int identityHashCode(Object x)

為給定對(duì)象返回與默認(rèn)方法 hashCode() 返回的相同的哈希碼,無論給定對(duì)象的類是否覆蓋 hashCode()。 空引用的哈希碼為零。

參數(shù):

參數(shù)名稱 參數(shù)描述
x 要為其計(jì)算 hashCode 的對(duì)象

返回:

hashCode

getProperties

public static Properties getProperties()

確定當(dāng)前系統(tǒng)屬性。

首先,如果有一個(gè)安全管理器,它的 checkPropertiesAccess 方法會(huì)被調(diào)用而不帶任何參數(shù)。 這可能會(huì)導(dǎo)致安全異常。

getProperty(java.lang.String) 方法使用的當(dāng)前系統(tǒng)屬性集作為 Properties 對(duì)象返回。 如果沒有當(dāng)前的系統(tǒng)屬性集,則首先創(chuàng)建并初始化一組系統(tǒng)屬性。 這組系統(tǒng)屬性始終包含以下鍵的值:

系統(tǒng)屬性值中的多個(gè)路徑由平臺(tái)的路徑分隔符分隔。

請(qǐng)注意,即使安全管理器不允許 getProperties 操作,它也可以選擇允許 getProperty(java.lang.String) 操作。

返回:

系統(tǒng)屬性

Throws:

Throw名稱 Throw描述
SecurityException 如果存在安全管理器并且其 checkPropertiesAccess 方法不允許訪問系統(tǒng)屬性。

lineSeparator

public static String lineSeparator()

返回系統(tǒng)相關(guān)的行分隔符字符串。 它總是返回相同的值——系統(tǒng)屬性 line.separator 的初始值。

在 UNIX 系統(tǒng)上,它返回 "\n"; 在 Microsoft Windows 系統(tǒng)上,它返回“\r\n”。

返回:

系統(tǒng)相關(guān)的行分隔符字符串

setProperties

public static void setProperties(Properties props)

將系統(tǒng)屬性設(shè)置為 Properties 參數(shù)。

首先,如果有一個(gè)安全管理器,它的 checkPropertiesAccess 方法會(huì)被調(diào)用而不帶任何參數(shù)。 這可能會(huì)導(dǎo)致安全異常。

該參數(shù)成為 getProperty(java.lang.String) 方法使用的當(dāng)前系統(tǒng)屬性集。 如果參數(shù)為空,則當(dāng)前的系統(tǒng)屬性集被遺忘。

參數(shù):

參數(shù)名稱 參數(shù)描述
props 新的系統(tǒng)屬性。

Throws:

Throw名稱 Throw描述
SecurityException 如果存在安全管理器并且其 checkPropertiesAccess 方法不允許訪問系統(tǒng)屬性。

getProperty

public static String getProperty(String key)

獲取指定鍵指示的系統(tǒng)屬性。

首先,如果有一個(gè)安全管理器,它的 checkPropertyAccess 方法會(huì)以鍵作為參數(shù)調(diào)用。 這可能會(huì)導(dǎo)致 SecurityException。

如果沒有當(dāng)前的系統(tǒng)屬性集,則首先以與 getProperties 方法相同的方式創(chuàng)建和初始化一組系統(tǒng)屬性。

參數(shù):

參數(shù)名稱 參數(shù)描述
key 系統(tǒng)屬性的名稱。

返回:

系統(tǒng)屬性的字符串值,如果沒有具有該鍵的屬性,則返回 null。

Throws:

Throw名稱 Throw描述
SecurityException 如果安全管理器存在并且其 checkPropertyAccess 方法不允許訪問指定的系統(tǒng)屬性。
NullPointerException 如果鍵為null。
IllegalArgumentException 如果鍵為empty。

getProperty

public static String getProperty(String key, String def)

獲取指定鍵指示的系統(tǒng)屬性。

首先,如果有一個(gè)安全管理器,它的 checkPropertyAccess 方法會(huì)以鍵作為參數(shù)調(diào)用。

如果沒有當(dāng)前的系統(tǒng)屬性集,則首先以與 getProperties 方法相同的方式創(chuàng)建和初始化一組系統(tǒng)屬性。

參數(shù):

參數(shù)名稱 參數(shù)描述
key 系統(tǒng)屬性的名稱。
def 默認(rèn)值。

返回:

系統(tǒng)屬性的字符串值,如果沒有具有該鍵的屬性,則為默認(rèn)值。

Throws:

Throw名稱 Throw描述
SecurityException 如果安全管理器存在并且其 checkPropertyAccess 方法不允許訪問指定的系統(tǒng)屬性。
NullPointerException 如果鍵為null。
IllegalArgumentException 如果鍵為empty。

setProperty

public static String setProperty(String key, String value)

設(shè)置由指定鍵指示的系統(tǒng)屬性。

首先,如果存在安全管理器,則使用 PropertyPermission(key, "write") 權(quán)限調(diào)用其 SecurityManager.checkPermission 方法。 這可能會(huì)導(dǎo)致拋出 SecurityException。 如果未引發(fā)異常,則將指定的屬性設(shè)置為給定值。

參數(shù):

參數(shù)名稱 參數(shù)描述
key 系統(tǒng)屬性的名稱。
value 系統(tǒng)屬性的值。

返回:

系統(tǒng)屬性的前一個(gè)值,如果沒有,則返回 null。

Throws:

Throw名稱 Throw描述
SecurityException 如果存在安全管理器并且其 checkPermission 方法不允許設(shè)置指定的屬性。
NullPointerException 如果鍵或值為null。
IllegalArgumentException 如果鍵為empty。

clearProperty

public static String clearProperty(String key)

刪除由指定鍵指示的系統(tǒng)屬性。

首先,如果存在安全管理器,則使用 PropertyPermission(key, "write") 權(quán)限調(diào)用其 SecurityManager.checkPermission 方法。 這可能會(huì)導(dǎo)致拋出 SecurityException。 如果沒有拋出異常,則刪除指定的屬性。

參數(shù):

參數(shù)名稱 參數(shù)描述
key 要?jiǎng)h除的系統(tǒng)屬性的名稱。

返回:

系統(tǒng)屬性的前一個(gè)字符串值,如果沒有具有該鍵的屬性,則返回 null。

Throws:

Throw名稱 Throw描述
SecurityException 如果安全管理器存在并且其 checkPropertyAccess 方法不允許訪問指定的系統(tǒng)屬性。
NullPointerException 如果鍵為null。
IllegalArgumentException 如果鍵為empty。

getenv

public static String getenv(String name)

獲取指定環(huán)境變量的值。環(huán)境變量是系統(tǒng)相關(guān)的外部命名值。

如果存在安全管理器,則使用 RuntimePermission("getenv."+name) 權(quán)限調(diào)用其 SecurityManager#checkPermission 方法。這可能會(huì)導(dǎo)致拋出 SecurityException。如果沒有拋出異常,則返回變量名的值。

系統(tǒng)屬性 環(huán)境變量在概念上都是名稱和值之間的映射。這兩種機(jī)制都可用于將用戶定義的信息傳遞給 Java 進(jìn)程。環(huán)境變量具有更全局的影響,因?yàn)樗鼈儗?duì)定義它們的進(jìn)程的所有后代可見,而不僅僅是直接的 Java 子進(jìn)程。在不同的操作系統(tǒng)上,它們可能具有細(xì)微的不同語義,例如不區(qū)分大小寫。由于這些原因,環(huán)境變量更有可能產(chǎn)生意想不到的副作用。最好盡可能使用系統(tǒng)屬性。當(dāng)需要全局效果或外部系統(tǒng)接口需要環(huán)境變量(例如 PATH)時(shí),應(yīng)使用環(huán)境變量。

在 UNIX 系統(tǒng)上,名稱的字母大小寫通常很重要,而在 Microsoft Windows 系統(tǒng)上通常不重要。例如,表達(dá)式 System.getenv("FOO").equals(System.getenv("foo")) 在 Microsoft Windows 上可能為真。

參數(shù):

參數(shù)名稱 參數(shù)描述
name 環(huán)境變量的名稱

返回:

變量的字符串值,如果變量未在系統(tǒng)環(huán)境中定義,則為 null

Throws:

Throw名稱 Throw描述
NullPointerException 如果名稱為null
SecurityException 如果存在安全管理器并且其 SecurityManager#checkPermission 方法不允許訪問環(huán)境變量名稱

getenv

public static MapString,String getenv()

返回當(dāng)前系統(tǒng)環(huán)境的不可修改的字符串映射視圖。環(huán)境是從名稱到值的系統(tǒng)相關(guān)映射,從父進(jìn)程傳遞到子進(jìn)程。

如果系統(tǒng)不支持環(huán)境變量,則返回一個(gè)空映射。

返回的映射永遠(yuǎn)不會(huì)包含空鍵或值。嘗試查詢是否存在空鍵或值將引發(fā) NullPointerException。嘗試查詢是否存在非 String 類型的鍵或值將引發(fā) ClassCastException。

返回的地圖及其集合視圖可能不遵守 Object#equals 和 Object#hashCode 方法的一般約定。

返回的地圖通常在所有平臺(tái)上都區(qū)分大小寫。

如果存在安全管理器,則使用 RuntimePermission("getenv.*") 權(quán)限調(diào)用其 SecurityManager#checkPermission 方法。這可能會(huì)導(dǎo)致拋出 SecurityException。

將信息傳遞給 Java 子進(jìn)程時(shí),系統(tǒng)屬性通常優(yōu)于環(huán)境變量。

返回:

環(huán)境作為變量名到值的映射

Throws:

Throw名稱 Throw描述
SecurityException 如果存在安全管理器并且其 SecurityManager#checkPermission 方法不允許訪問進(jìn)程環(huán)境

exit

public static void exit(int status)

終止當(dāng)前運(yùn)行的 Java 虛擬機(jī)。 該參數(shù)用作狀態(tài)碼; 按照慣例,非零狀態(tài)碼表示異常終止。

該方法調(diào)用 Runtime 類中的 exit 方法。 此方法永遠(yuǎn)不會(huì)正常返回。

調(diào)用 System.exit(n) 實(shí)際上等效于調(diào)用:

 Runtime.getRuntime().exit(n) 

參數(shù):

參數(shù)名稱 參數(shù)描述
status 退出狀態(tài)。

Throws:

Throw名稱 Throw描述
SecurityException 如果安全管理器存在并且其 checkExit 方法不允許以指定狀態(tài)退出。

gc

public static void gc()

運(yùn)行垃圾收集器。

調(diào)用 gc 方法表明 Java 虛擬機(jī)花費(fèi)精力回收未使用的對(duì)象,以便使它們當(dāng)前占用的內(nèi)存可用于快速重用。 當(dāng)控制從方法調(diào)用返回時(shí),Java 虛擬機(jī)已盡最大努力從所有丟棄的對(duì)象中回收空間。

調(diào)用 System.gc() 實(shí)際上等效于調(diào)用:

 Runtime.getRuntime().gc() 

runFinalization

public static void runFinalization()

運(yùn)行任何等待終結(jié)的對(duì)象的終結(jié)方法。

調(diào)用此方法表明 Java 虛擬機(jī)花費(fèi)精力運(yùn)行已發(fā)現(xiàn)已丟棄但尚未運(yùn)行其 finalize 方法的對(duì)象的 finalize 方法。 當(dāng)控制從方法調(diào)用返回時(shí),Java 虛擬機(jī)已盡最大努力完成所有未完成的終結(jié)。

調(diào)用 System.runFinalization() 實(shí)際上等效于調(diào)用:

 Runtime.getRuntime().runFinalization() 

runFinalizersOnExit

@Deprecated public static void runFinalizersOnExit(boolean value)

已棄用。 這種方法本質(zhì)上是不安全的。 這可能會(huì)導(dǎo)致在其他線程同時(shí)操作這些對(duì)象時(shí)對(duì)活動(dòng)對(duì)象調(diào)用終結(jié)器,從而導(dǎo)致行為不穩(wěn)定或死鎖。

在退出時(shí)啟用或禁用終結(jié); 這樣做指定在 Java 運(yùn)行時(shí)退出之前運(yùn)行具有尚未自動(dòng)調(diào)用的終結(jié)器的所有對(duì)象的終結(jié)器。 默認(rèn)情況下,退出時(shí)的最終確定是禁用的。

如果存在安全管理器,則首先調(diào)用其 checkExit 方法,并以 0 作為其參數(shù),以確保允許退出。 這可能會(huì)導(dǎo)致 SecurityException。

參數(shù):

參數(shù)名稱 參數(shù)描述
value 指示啟用或禁用終結(jié)

Throws:

Throw名稱 Throw描述
SecurityException 如果存在安全管理器并且其 checkExit 方法不允許退出。

load

public static void load(String filename)

加載由文件名參數(shù)指定的本機(jī)庫。 文件名參數(shù)必須是絕對(duì)路徑名。 如果 filename 參數(shù)在去除任何特定于平臺(tái)的庫前綴、路徑和文件擴(kuò)展名時(shí),指示名稱為 L 的庫,并且名為 L 的本機(jī)庫與 VM 靜態(tài)鏈接,則 JNI_OnLoad_L 函數(shù) 調(diào)用由庫導(dǎo)出的,而不是嘗試加載動(dòng)態(tài)庫。 與參數(shù)匹配的文件名不必存在于文件系統(tǒng)中。 有關(guān)更多詳細(xì)信息,請(qǐng)參閱 JNI 規(guī)范。 否則,文件名參數(shù)以與實(shí)現(xiàn)相關(guān)的方式映射到本機(jī)庫映像。

調(diào)用 System.load(name) 實(shí)際上等效于調(diào)用:

 Runtime.getRuntime().load(name) 

參數(shù):

參數(shù)名稱 參數(shù)描述
filename 要加載的文件。

Throws:

Throw名稱 Throw描述
SecurityException 如果存在安全管理器并且其 checkLink 方法不允許加載指定的動(dòng)態(tài)庫
UnsatisfiedLinkError 如果文件名不是絕對(duì)路徑名,則本機(jī)庫未與 VM 靜態(tài)鏈接,或者主機(jī)系統(tǒng)無法將庫映射到本機(jī)庫映像。
NullPointerException 如果文件名為空

loadLibrary

public static void loadLibrary(String libname)

加載由 libname 參數(shù)指定的本機(jī)庫。 libname 參數(shù)不得包含任何特定于平臺(tái)的前綴、文件擴(kuò)展名或路徑。 如果名為 libname 的本機(jī)庫與 VM 靜態(tài)鏈接,則調(diào)用該庫導(dǎo)出的 JNI_OnLoad_libname 函數(shù)。 有關(guān)更多詳細(xì)信息,請(qǐng)參閱 JNI 規(guī)范。 否則,libname 參數(shù)將從系統(tǒng)庫位置加載并以與實(shí)現(xiàn)相關(guān)的方式映射到本機(jī)庫映像。

調(diào)用 System.loadLibrary(name) 實(shí)際上等效于調(diào)用

 Runtime.getRuntime().loadLibrary(name) 

參數(shù):

參數(shù)名稱 參數(shù)描述
libname 庫的名稱。

Throws:

Throw名稱 Throw描述
SecurityException 如果存在安全管理器并且其 checkLink 方法不允許加載指定的動(dòng)態(tài)庫
UnsatisfiedLinkError 如果 libname 參數(shù)包含文件路徑,則本機(jī)庫未與 VM 靜態(tài)鏈接,或者該庫無法由主機(jī)系統(tǒng)映射到本機(jī)庫映像。
NullPointerException 如果 libname 為null

mapLibraryName

public static String mapLibraryName(String libname)

將庫名稱映射到表示本機(jī)庫的特定于平臺(tái)的字符串。

參數(shù):

參數(shù)名稱 參數(shù)描述
libname 庫的名稱。

返回:

平臺(tái)相關(guān)的本地庫名稱。

Throws:

Throw名稱 Throw描述
NullPointerException 如果libname為null
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)