|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
java.lang.Object java.lang.System
public final class System
System
類別包含一些有用的類別欄位和方法。它不能被實例化。
在 System
類別提供的設施中,有標準輸入、標準輸出和錯誤輸出串流;對外部定義的屬性和環境變數的存取;載入檔案和資源庫的方法;還有快速複製陣列的一部分的實用方法。
欄位摘要 | |
---|---|
static PrintStream |
err
“標準”錯誤輸出串流。 |
static InputStream |
in
“標準”輸入串流。 |
static PrintStream |
out
“標準”輸出串流。 |
方法摘要 | |
---|---|
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 Map<String,String> |
getenv()
返回一個不能修改的當前系統環境的字元串映射視圖。 |
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 void |
load(String filename)
從作為動態資源庫的本地檔案系統中以指定的檔案名載入程式碼檔案。 |
static void |
loadLibrary(String libname)
載入由 libname 參數指定的系統資源庫。 |
static String |
mapLibraryName(String libname)
將一個資源庫名稱映射到特定於平臺的、表示本機資源庫的字元串中。 |
static long |
nanoTime()
返回最準確的可用系統計時器的當前值,以毫微秒為單位。 |
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)
設置系統安全性。 |
從類別 java.lang.Object 繼承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
欄位詳細資訊 |
---|
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)
首先,如果有安全管理器,則通過 RuntimePermission("setIO")
權限調用其 checkPermission
方法,查看是否可以重新分派“標準”輸入串流。
in
- 新的標準輸出串流。
SecurityException
- 如果安全管理器存在並且其 checkPermission
方法不允許重新分派標準輸入串流。SecurityManager.checkPermission(java.security.Permission)
,
RuntimePermission
public static void setOut(PrintStream out)
首先,如果有安全管理器,則通過 RuntimePermission("setIO")
權限調用其 checkPermission
方法,查看是否可以重新分派“標準”輸出串流。
out
- 新的標準輸出串流
SecurityException
- 如果安全管理器存在並且其 checkPermission
方法不允許重新分派標準輸出串流。SecurityManager.checkPermission(java.security.Permission)
,
RuntimePermission
public static void setErr(PrintStream err)
首先,如果有安全管理器,則通過 RuntimePermission("setIO")
權限調用其 checkPermission
方法,查看是否可以重新分派“標準”輸出串流。
err
- 新的標準錯誤輸出串流
SecurityException
- 如果安全管理器存在並且其 checkPermission
方法不允許重新分派標準錯誤輸出串流。SecurityManager.checkPermission(java.security.Permission)
,
RuntimePermission
public static Console console()
Console
物件(如果有)。
public static Channel inheritedChannel() throws IOException
此方法返回通過調用系統級預設 SelectorProvider
物件的 inheritedChannel
方法獲得的通道。
除了 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()
此方法只能用於測量已過的時間,與系統或鐘錶時間的其他任何時間概念無關。返回值表示從某一固定但任意的時間算起的毫微秒數(或許從以後算起,所以該值可能為負)。此方法提供毫微秒的精度,但不是必要的毫微秒的準確度。它對於值的更改頻率沒有作出保證。在取值範圍大於約 292 年(263 毫微秒)的連續調用的不同點在於:由於數字溢位,將無法準確計算已過的時間。
例如,測試某些程式碼執行的時間長度:
long startTime = System.nanoTime(); // ... the code being measured ... long estimatedTime = System.nanoTime() - startTime;
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
位置一樣。
If 如果 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
到 srcPos+length-1
位置上的實際元件通過分派轉換並不能轉換成目標陣列的元件型別,則拋出 ArrayStoreException
異常。在這種情況下,將 k 設置為比長度小的最小非負整數,這樣就無法將 src[srcPos+
k]
轉換為目標陣列的元件型別;當拋出異常時,從 srcPos
到 srcPos+
k-1
位置上的源陣列元件已經被複製到目標陣列中的 destPos
到 destPos+
k-1
位置,而目標陣列中的其他位置不會被修改。(因為已經詳細說明過的那些限制,只能將此段落有效地應用於兩個陣列都有參考型別的元件型別的情況。)
src
- 源陣列。srcPos
- 源陣列中的起始位置。dest
- 目標陣列。destPos
- 目標資料中的起始位置。length
- 要複製的陣列元素的數量。
IndexOutOfBoundsException
- 如果複製會導致對陣列範圍以外的資料的存取。
ArrayStoreException
- 如果因為型別不比對而使得無法將 src
陣列中的元素存儲到 dest
陣列中。
NullPointerException
- 如果 src
或 dest
為 null
。public static int identityHashCode(Object x)
x
- 要計算其雜湊碼的物件
public static Properties getProperties()
首先,如果有安全管理器,則不帶參數直接調用其 checkPropertiesAccess
方法。這可能導致一個安全性異常。
將 getProperty(String)
方法使用的當前系統屬性集合作為 Properties
物件返回。如果沒有當前系統屬性集合,則先創建並初始化一個系統屬性集合。這個系統屬性集合總是包含以下鍵的值:
鍵 | 相關值的描述 |
---|---|
java.version |
Java 運行時環境版本 |
java.vendor |
Java 運行時環境供應商 | java.vendor.url |
Java 供應商的 URL |
java.home |
Java 安裝目錄 |
java.vm.specification.version |
Java 虛擬機器規範版本 |
java.vm.specification.vendor |
Java 虛擬機器規範供應商 |
java.vm.specification.name |
Java 虛擬機器規範名稱 |
java.vm.version |
Java 虛擬機器實作版本 |
java.vm.vendor |
Java 虛擬機器實作供應商 |
java.vm.name |
Java 虛擬機器實作名稱 |
java.specification.version |
Java 運行時環境規範版本 |
java.specification.vendor |
Java 運行時環境規範供應商 |
java.specification.name |
Java 運行時環境規範名稱 |
java.class.version |
Java 類別格式版本號 |
java.class.path |
Java 類別路徑 |
java.library.path |
載入資源庫時搜尋的路徑列表 |
java.io.tmpdir |
預設的臨時檔案路徑 |
java.compiler |
要使用的 JIT 編譯器的名稱 |
java.ext.dirs |
一個或多個擴展目錄的路徑 |
os.name |
作業系統的名稱 |
os.arch |
作業系統的架構 |
os.version |
作業系統的版本 |
file.separator |
檔案分隔符(在 UNIX 系統中是“/”) |
path.separator |
路徑分隔符(在 UNIX 系統中是“:”) |
line.separator |
行分隔符(在 UNIX 系統中是“/n”) |
user.name |
使用者的帳戶名稱 |
user.home |
使用者的主目錄 |
user.dir |
使用者的當前工作目錄 |
系統屬性值中的多個路徑是用平臺的路徑分隔符分隔的。
注意,即使安全管理器不允許執行 getProperties
操作,它可能也會選擇允許執行 getProperty(String)
操作。
SecurityException
- 如果安全管理器存在並且其 checkPropertiesAccess
方法不允許存取系統屬性。setProperties(java.util.Properties)
,
SecurityException
,
SecurityManager.checkPropertiesAccess()
,
Properties
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
方法不允許存取指定的系統屬性。
NullPointerException
- 如果 key
為 null
。
IllegalArgumentException
- 如果 key
為空。setProperty(java.lang.String, java.lang.String)
,
SecurityException
,
SecurityManager.checkPropertyAccess(java.lang.String)
,
getProperties()
public static String getProperty(String key, String def)
首先,如果有安全管理器,則用該 key
作為參數調用 checkPropertyAccess
方法。
如果沒有當前系統屬性的集合,將用與 getProperties
方法相同的方式首先創建並初始化系統屬性的集合。
key
- 系統屬性的名稱。def
- 預設值。
SecurityException
- 如果安全管理器存在並且其 checkPropertyAccess
方法不允許存取指定的系統屬性。
NullPointerException
- 如果 key
為 null
。
IllegalArgumentException
- 如果 key
為空。setProperty(java.lang.String, java.lang.String)
,
SecurityManager.checkPropertyAccess(java.lang.String)
,
getProperties()
public static String setProperty(String key, String value)
首先,如果安全管理器存在,則通過 PropertyPermission(key, "write")
權限調用其 SecurityManager.checkPermission
方法。這可能導致拋出 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)
首先,如果安全管理器存在,則通過 PropertyPermission(key, "write")
權限調用其 SecurityManager.checkPermission
方法。這可能導致拋出 SecurityException。如果沒有拋出異常,則移除指定的屬性。
key
- 要移除的系統屬性的名稱。
null
。
SecurityException
- 如果安全管理器存在並且其 checkPropertyAccess
方法不允許存取指定的系統屬性。
NullPointerException
- 如果 key
為 null
。
IllegalArgumentException
- 如果 key
為空。getProperty(java.lang.String)
,
setProperty(java.lang.String, java.lang.String)
,
Properties
,
SecurityException
,
SecurityManager.checkPropertiesAccess()
public static String getenv(String name)
如果安全管理器存在,則通過
的權限調用其 RuntimePermission
("getenv."+name)checkPermission
方法。這可能導致拋出 SecurityException
。如果沒有拋出異常,則返回變數 name
的值。
從概念上講,系統屬性 和環境變數 都是名稱與值之間的映射。兩種機制都能用來將使用者定義的資訊傳遞給 Java 進程。環境變數產生更多的全體效應,因為它們不僅對緊接著出現的 Java 子進程可見,而且對於定義它們的進程的所有子進程都是可見的。在不同的作業系統上,它們的語義有細微的差別,比如,不區分大小寫。因為這些原因,環境變數更可能有意料不到的副作用。最好在可能的地方使用系統屬性。環境變數應該在需要全體效應的時候使用,或者在外部系統介面要求使用環境變數時使用(比如 PATH
)。
在 UNIX 系統中,name
的字母大小寫通常很重要,而在 Microsoft Windows 系統中,這通常不重要。例如,表達式 System.getenv("FOO").equals(System.getenv("foo"))
在 Microsoft Windows 中可能為真。
name
- 環境變數的名稱
null
NullPointerException
- 如果 name
為 null
SecurityException
- 如果安全管理器存在並且其 checkPermission
方法不允許存取環境變數 name
getenv()
,
ProcessBuilder.environment()
public static Map<String,String> getenv()
如果系統不支持環境變數,則返回一個空映射。
返回的映射永遠不會包含 null 鍵或 Null 值。如果試圖查詢 null 鍵或 Null 值的存在,則會拋出 NullPointerException
。如果試圖查詢不是 String
型別的鍵或值的存在,則會拋出 ClassCastException
。
返回的映射及其集合視圖可能沒有遵守 Object.equals(java.lang.Object)
和 Object.hashCode()
方法的通用協定。
在所有的平臺上,返回的映射通常都是區分大小寫的。
如果安全管理器存在,則通過
權限調用 RuntimePermission
("getenv.*")checkPermission
方法。這可能導致拋出 SecurityException
。
將資訊傳遞給 Java 子進程時,系統屬性一般優先於環境變數。
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 虛擬機器做了一些努力來回收未用物件,以便能夠快速地重用這些物件當前佔用的記憶體。當控制權從方法調用中返回時,虛擬機器已經盡最大努力從所有丟棄的物件中回收了空間。
調用 System.gc()
實際上等效於調用:
Runtime.getRuntime().gc()
Runtime.gc()
public static void runFinalization()
調用該方法說明 Java 虛擬機器做了一些努力運行已被丟棄物件的 finalize
方法,但是這些物件的 finalize
方法至今尚未運行。當控制權從方法調用中返回時,Java 虛擬機器已經盡最大努力去完成所有未執行的終止方法。
調用 System.runFinalization()
實際上等效於調用:
Runtime.getRuntime().runFinalization()
Runtime.runFinalization()
@Deprecated public static void runFinalizersOnExit(boolean value)
如果有安全管理器,則首先使用 0 作為參數來調用其 checkExit
方法,以確保允許退出。這可能導致拋出 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
- 如果檔案不存在。
NullPointerException
- 如果 filename
為 null
Runtime.load(java.lang.String)
,
SecurityManager.checkLink(java.lang.String)
public static void loadLibrary(String libname)
libname
參數指定的系統資源庫。將資源庫名映射到實際系統資源庫的方法取決於系統。
調用 System.loadLibrary(name)
實際上等效於調用:
Runtime.getRuntime().loadLibrary(name)
libname
- 資源庫名。
SecurityException
- 如果安全管理器存在並且其 checkLink
方法不允許載入指定的動態資源庫。
UnsatisfiedLinkError
- 如果資源庫不存在。
NullPointerException
- 如果 libname
為 null
Runtime.loadLibrary(java.lang.String)
,
SecurityException
,
SecurityManager.checkLink(java.lang.String)
public static String mapLibraryName(String libname)
libname
- 資源庫名。
NullPointerException
- 如果 libname
為 null
。loadLibrary(java.lang.String)
,
ClassLoader.findLibrary(java.lang.String)
|
JavaTM 2 Platform Standard Ed. 6 |
|||||||||
上一個類別 下一個類別 | 框架 無框架 | |||||||||
摘要: 巢狀 | 欄位 | 建構子 | 方法 | 詳細資訊: 欄位 | 建構子 | 方法 |
版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only。