深入研究javalangSystem类.docx

上传人:b****5 文档编号:4573166 上传时间:2022-12-06 格式:DOCX 页数:23 大小:26.98KB
下载 相关 举报
深入研究javalangSystem类.docx_第1页
第1页 / 共23页
深入研究javalangSystem类.docx_第2页
第2页 / 共23页
深入研究javalangSystem类.docx_第3页
第3页 / 共23页
深入研究javalangSystem类.docx_第4页
第4页 / 共23页
深入研究javalangSystem类.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

深入研究javalangSystem类.docx

《深入研究javalangSystem类.docx》由会员分享,可在线阅读,更多相关《深入研究javalangSystem类.docx(23页珍藏版)》请在冰豆网上搜索。

深入研究javalangSystem类.docx

深入研究javalangSystem类

深入研究java.lang.System类

2007-01-1618:

03:

03

 标签:

java   [推送到技术圈]

作者:

熔岩

日期:

2007-01-16

MSN:

leizhimin@

声明:

原创作品,XX,谢绝转载!

前言:

Java的类库日益庞大,所包含的类和接口也不计其数。

但其中有一些非常重要的类和接口,是Java类库中的核心部分。

常见的有String、Object、Class、Collection、ClassLoader、System、Runtime...,掌握类是灵活Java这门语言的基础。

而这些类一般都很好理解和运用,需要做深入的研究和实践才能掌握。

下面是我结合实践对这些类理解和使用的一些总结。

欢迎你在阅读后将你宝贵的意见和读后感留下,呵呵...别忘了你也能从中赚到积分,以便能发更长的文章出来!

一、概述:

     System类是一个抽象类,所有的字段和方法都是静态的。

其中包含一些有用的类字段和方法,它不能被实例化。

     在System类提供的设施中,有三个静态的变量in、out、err,分别对应标准输入、标准输出和错误输出流;有对外部定义的属性和环境变量的访问的方法;加载文件和库的方法;还有快速复制数组的一部分的实用方法。

     因此,System.in、System.out、System.err实际上表示三个对象,这也就是为什么可以用System.out.println("HelloWorld!

")的原因。

二、API预览

   arraycopy(Objectsrc,intsrcPos,Objectdest,intdestPos,intlength)

     从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。

   clearProperty(Stringkey)

     移除指定键指示的系统属性。

   currentTimeMillis()

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

   exit(intstatus)

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

   gc()

     运行垃圾回收器。

   getenv()

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

   getenv(Stringname)

     获得指定的环境变量值。

   getProperties()

     确定当前的系统属性。

   getProperty(Stringkey)

     获得指定键指示的系统属性。

   getProperty(Stringkey,Stringdef)

     获得用指定键描述的系统属性。

   getSecurityManager()

     获得系统安全接口。

   identityHashCode(Objectx)

     返回给定对象的哈希码,该代码与默认的方法hashCode()返回的代码一样,无论给定对象的类是否重写hashCode()。

   inheritedChannel()

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

   load(Stringfilename)

     从作为动态库的本地文件系统中以指定的文件名加载代码文件。

   loadLibrary(Stringlibname)

     加载由libname参数指定的系统库。

   mapLibraryName(Stringlibname)

     将一个库名称映射到特定于平台的、表示本机库的字符串中。

   nanoTime()

     返回最准确的可用系统计时器的当前值,以毫微秒为单位。

   runFinalization()

     运行处于挂起终止状态的所有对象的终止方法。

   runFinalizersOnExit(booleanvalue)

     已过时。

该方法具有固有的不安全性。

它可能对正在使用的对象调用终结方法,而其他线程同时正在操作这些对象,从而导致不正确的行为或死锁。

   setErr(PrintStreamerr)

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

   setIn(InputStreamin)

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

   setOut(PrintStreamout)

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

   setProperties(Propertiesprops)

     将系统属性设置为Properties参数。

   staticStringsetProperty(Stringkey,Stringvalue)

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

   setSecurityManager(SecurityManagers)

     设置系统安全性。

     

三、一些常见应用

   这些都是很简单的API调用,再次不再做示例了。

   1、使用currentTimeMillis()纪录程序执行的时间。

   2、arraycopy()复制数组。

   3、使用getProperties()确定当前的系统属性。

   4、getenv()获取系统环境变量。

   5、exit()终止当前正在运行的Java虚拟机。

   6、gc()运行垃圾回收器。

四、来自SUN公司的java.long.System类的API文档,网上有chm中文版的,很好找。

为了查阅方便,我从SUN公司的JavaDoc站点上复制出来了System类的API文档。

java.lang

类System

java.lang.Object

java.lang.System

publicfinalclassSystem

extendsObject

System类包含一些有用的类字段和方法。

它不能被实例化。

在System类提供的设施中,有标准输入、标准输出和错误输出流;对外部定义的属性和环境变量的访问;加载文件和库的方法;还有快速复制数组的一部分的实用方法。

从以下版本开始:

JDK1.0

字段摘要

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 long

currentTimeMillis()

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

static void

exit(int status)

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

static void

gc()

          运行垃圾回收器。

static Map

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

 

字段详细信息

in

publicstaticfinalInputStreamin

“标准”输入流。

此流已打开并准备提供输入数据。

通常,此流对应于键盘输入或者由主机环境或用户指定的另一个输入源。

out

publicstaticfinalPrintStreamout

“标准”输出流。

此流已打开并准备接受输出数据。

通常,此流对应于显示器输出或者由主机环境或用户指定的另一个输出目标。

对于简单独立的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)

err

publicstaticfinalPrintStreamerr

“标准”错误输出流。

此流已打开并准备接受输出数据。

通常,此流对应于显示器输出或者由主机环境或用户指定的另一个输出目标。

按照惯例,此输出流用于显示错误消息,或者显示那些即使用户输出流(变量out的值)已经重定向到通常不被连续监视的某一文件或其他目标,也应该立刻引起用户注意的其他信息。

方法详细信息

setIn

publicstaticvoidsetIn(InputStream in)

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

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

参数:

in-新的标准输出流。

抛出:

SecurityException-如果安全管理器存在并且其checkPermission方法不允许重新分配标准输入流。

从以下版本开始:

JDK1.1

另请参见:

SecurityManager.checkPermission(java.security.Permission),RuntimePermission

setOut

publicstaticvoidsetOut(PrintStream out)

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

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

参数:

out-新的标准输出流

抛出:

SecurityException-如果安全管理器存在并且其checkPermission方法不允许重新分配标准输出流。

从以下版本开始:

JDK1.1

另请参见:

SecurityManager.checkPermission(java.security.Permission),RuntimePermission

setErr

publicstaticvoidsetErr(PrintStream err)

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

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

参数:

err-新的标准错误输出流

抛出:

SecurityException-如果安全管理器存在并且其checkPermission方法不允许重新分配标准错误输出流。

从以下版本开始:

JDK1.1

另请参见:

SecurityManager.checkPermission(java.security.Permission),RuntimePermission

inheritedChannel

publicstaticChannelinheritedChannel()

throwsIOException

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

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

除了inheritedChannel中描述的面向网络的信道之外,此方法以后还可能返回其他种类的信道。

返回:

继承的信道(如果有),否则返回null。

抛出:

IOException-如果发生I/O错误

SecurityException-如果安全管理器存在并且它不允许访问信道。

从以下版本开始:

1.5

setSecurityManager

publicstaticvoidsetSecurityManager(SecurityManager s)

设置系统安全性。

如果已经安装了安全管理器,则此方法首先通过RuntimePermission("setSecurityManager")权限调用安全管理器的checkPermission方法,以确保可以替换现有的安全管理器。

这可能导致抛出一个SecurityException异常。

否则,将该参数作为当前安全管理器建立。

如果参数为null并且没有建立安全管理器,则不执行任何操作,并且该方法将自行返回。

参数:

s-安全管理器。

抛出:

SecurityException-如果安全管理器已经设置并且其checkPermission方法不允许替换该设置。

另请参见:

getSecurityManager(),SecurityManager.checkPermission(java.security.Permission),RuntimePermission

getSecurityManager

publicstaticSecurityManagergetSecurityManager()

获得系统安全接口。

返回:

如果已经为当前应用程序建立了安全管理器,则返回此安全管理器;否则,返回null。

另请参见:

setSecurityManager(java.lang.SecurityManager)

currentTimeMillis

publicstaticlongcurrentTimeMillis()

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

注意,当返回值的时间单位是毫秒时,值的粒度取决于基础操作系统,并且粒度可能更大。

例如,许多操作系统以几十毫秒为单位测量时间。

请参阅Date类的描述,了解可能发生在“计算机时间”和协调世界时(UTC)之间的细微差异的讨论。

返回:

当前时间与协调世界时1970年1月1日午夜之间的时间差(以毫秒为单位测量)。

另请参见:

Date

nanoTime

publicstaticlongnanoTime()

返回最准确的可用系统计时器的当前值,以毫微秒为单位。

此方法只能用于测量已过的时间,与系统或钟表时间的其他任何时间概念无关。

返回值表示从某一固定但任意的时间算起的毫微秒数(或许从以后算起,所以该值可能为负)。

此方法提供毫微秒的精度,但不是必要的毫微秒的准确度。

它对于值的更改频率没有作出保证。

在取值范围大于约292年(263毫微秒)的连续调用的不同点在于:

由于数字溢出,将无法准确计算已过的时间。

例如,测试某些代码执行的时间长度:

longstartTime=System.nanoTime();

//...thecodebeingmeasured...

longestimatedTime=System.nanoTime()-startTime;

返回:

系统计时器的当前值,以毫微秒为单位。

从以下版本开始:

1.5

arraycopy

publicstaticvoidarraycopy(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-要复制的数

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 高中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1