鴻蒙OS System

2022-05-26 16:15 更新

System

java.lang.Object

|---java.lang.System

public final class System
extends Object

System 類包含幾個有用的類字段和方法。 它不能被實例化。

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

字段摘要

修飾符和類型 字段 描述
static PrintStream err “標(biāo)準(zhǔn)”錯誤輸出流。
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 虛擬機關(guān)聯(lián)的唯一 Console 對象(如果有)。
static long currentTimeMillis() 以毫秒為單位返回當(dāng)前時間。
static void exit(int status) 終止當(dāng)前運行的 Java 虛擬機。
static void gc() 運行垃圾收集器。
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) 為給定對象返回與默認方法 hashCode() 返回的相同的哈希碼,無論給定對象的類是否覆蓋 hashCode()。
static Channel inheritedChannel() 返回從創(chuàng)建此 Java 虛擬機的實體繼承的通道。
static String lineSeparator() 返回系統(tǒng)相關(guān)的行分隔符字符串。
static void load(String filename) 加載由文件名參數(shù)指定的本機庫。
static void loadLibrary(String libname) 加載由 libname 參數(shù)指定的本機庫。
static String mapLibraryName(String libname) 將庫名稱映射到表示本機庫的特定于平臺的字符串。
static long nanoTime() 返回正在運行的 Java 虛擬機的高分辨率時間源的當(dāng)前值,以納秒為單位。
static void runFinalization() 運行任何等待終結(jié)的對象的終結(jié)方法。
static void runFinalizersOnExit(boolean value) 已棄用。 這種方法本質(zhì)上是不安全的。 這可能會導(dǎo)致在其他線程同時操作這些對象時對活動對象調(diào)用終結(jié)器,從而導(dǎo)致行為不穩(wěn)定或死鎖。
static void setErr(PrintStream err) 重新分配“標(biāo)準(zhǔn)”錯誤輸出流。
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

字段詳細信息

err

public static final PrintStream err

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

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

in

public static final InputStream in

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

out

public static final PrintStream out

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

對于簡單的獨立 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)”錯誤輸出流。

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

參數(shù):

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

Throws:

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

console

public static Console console()

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

返回:

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

inheritedChannel

public static Channel inheritedChannel() throws IOException

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

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

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

返回:

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

Throws:

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

setSecurityManager

public static void setSecurityManager(SecurityManager s)

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

如果已經(jīng)安裝了安全管理器,該方法首先調(diào)用安全管理器的 checkPermission 方法,并帶有 RuntimePermission("setSecurityManager") 權(quán)限,以確??梢蕴鎿Q現(xiàn)有的安全管理器。 這可能會導(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)前時間。 請注意,雖然返回值的時間單位是毫秒,但值的粒度取決于底層操作系統(tǒng),并且可能更大。 例如,許多操作系統(tǒng)以幾十毫秒為單位測量時間。

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

返回:

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

nanoTime

public static long nanoTime()

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

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

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

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

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

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

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

比較兩個 nanoTime 值

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

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

返回:

正在運行的 Java 虛擬機的高分辨率時間源的當(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ù)量等于長度參數(shù)。源數(shù)組中位置 srcPos 到 srcPos+length-1 的分量分別復(fù)制到目標(biāo)數(shù)組的位置 destPos 到 destPos+length-1。

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

如果 dest 為 null,則拋出 NullPointerException。

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

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

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

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

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

否則,如果從位置 srcPos 到 srcPos+length-1 的源數(shù)組的任何實際組件不能通過賦值轉(zhuǎn)換轉(zhuǎn)換為目標(biāo)數(shù)組的組件類型,則拋出 ArrayStoreException。 在這種情況下,設(shè) k 為小于 length 的最小非負整數(shù),使得 src[srcPos+k] 不能轉(zhuǎn)換為目標(biāo)數(shù)組的組件類型; 當(dāng)拋出異常時,從位置 srcPos 到 srcPos+k-1 的源數(shù)組組件將已經(jīng)被復(fù)制到目標(biāo)數(shù)組位置 destPos 到 destPos+k-1,并且不會修改目標(biāo)數(shù)組的其他位置。 (由于已經(jīng)逐條列出了限制,本段僅適用于兩個數(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ù)制會導(dǎo)致訪問數(shù)組邊界之外的數(shù)據(jù)。
ArrayStoreException 如果 src 數(shù)組中的元素由于類型不匹配而無法存儲到 dest 數(shù)組中。
NullPointerException 如果 src 或 dest 為空。

identityHashCode

public static int identityHashCode(Object x)

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

參數(shù):

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

返回:

hashCode

getProperties

public static Properties getProperties()

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

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

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

系統(tǒ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ù)。

首先,如果有一個安全管理器,它的 checkPropertiesAccess 方法會被調(diào)用而不帶任何參數(shù)。 這可能會導(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)屬性。

首先,如果有一個安全管理器,它的 checkPropertyAccess 方法會以鍵作為參數(shù)調(diào)用。 這可能會導(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)屬性。

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

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

參數(shù):

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

返回:

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

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 方法。 這可能會導(dǎo)致拋出 SecurityException。 如果未引發(fā)異常,則將指定的屬性設(shè)置為給定值。

參數(shù):

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

返回:

系統(tǒng)屬性的前一個值,如果沒有,則返回 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 方法。 這可能會導(dǎo)致拋出 SecurityException。 如果沒有拋出異常,則刪除指定的屬性。

參數(shù):

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

返回:

系統(tǒng)屬性的前一個字符串值,如果沒有具有該鍵的屬性,則返回 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 方法。這可能會導(dǎo)致拋出 SecurityException。如果沒有拋出異常,則返回變量名的值。

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

在 UNIX 系統(tǒng)上,名稱的字母大小寫通常很重要,而在 Microsoft Windows 系統(tǒng)上通常不重要。例如,表達式 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)映射,從父進程傳遞到子進程。

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

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

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

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

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

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

返回:

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

Throws:

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

exit

public static void exit(int status)

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

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

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

 Runtime.getRuntime().exit(n) 

參數(shù):

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

Throws:

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

gc

public static void gc()

運行垃圾收集器。

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

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

 Runtime.getRuntime().gc() 

runFinalization

public static void runFinalization()

運行任何等待終結(jié)的對象的終結(jié)方法。

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

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

 Runtime.getRuntime().runFinalization() 

runFinalizersOnExit

@Deprecated public static void runFinalizersOnExit(boolean value)

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

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

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

參數(shù):

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

Throws:

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

load

public static void load(String filename)

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

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

 Runtime.getRuntime().load(name) 

參數(shù):

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

Throws:

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

loadLibrary

public static void loadLibrary(String libname)

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

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

 Runtime.getRuntime().loadLibrary(name) 

參數(shù):

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

Throws:

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

mapLibraryName

public static String mapLibraryName(String libname)

將庫名稱映射到表示本機庫的特定于平臺的字符串。

參數(shù):

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

返回:

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

Throws:

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號