`
yongyezhandui
  • 浏览: 21542 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

Java System类

 
阅读更多
第4节 System类
System类中含有一些非常有用的域(例如我们经常使用的ont)和方法,不能被实例化。

7.4.1 System类的三个域
1. in
“标准的”输入流,该流已经打开并准备提供输入数据。通常,in对应于键盘输入以及主机环境或用户指定的输入源。其具体的定义为:
public final static InputStream in= nullInputStream()

2. out
“标准的”输出流,该流已经打开并准备接收输出数据。通常,out对应于显示屏以及主机环境或用户指定的输出源。其具体的定义为:
public final static printsStram out =nullPrintStream();
在Java应用程序中,经常使用到下面的语句来向屏幕输出数据:
System.outprintln(data)
Println是PrintStream类的方法。当然,还可以使用PrintStream类的其他方法输出数据。

3. err
“标准的”错误输出流,该流已经打开并准备接收输出数据。通常。err对应于显示屏以及主机环境或用户指定的输出源。其具体的定义为:
public final static printStream err =nullprintStream();
7.4.2 System类的方法(1)
·public static void setln(InputStream in)
重新指定“标准的”输入流,参数in为新的输入流,如果安全管理器存在且其上的checkPermission方法不允许重新分配标准输入流,则抛掷一个SecurityException异常。
·public static void setOut(PrintStream out)
更新指定“标准的”输出流,参数out为新的输出流,如果安全管理器存在且其上的checkPermission方法不允许重新分配标准输出流,则抛掷一个SecurrityException异常。
·public static void setErr(PrintStream er)
重新指定“标准的”错误输出流,参数out为新的错误输出流,如果安全管理器存在且其上的checkPermission方法不允许重新分配标准错误输出流,则抛掷一个SecurityException 异常。
·public static void setSecurityManage(final SecurityManager s)
设置参数s指定的系统安全管理器。如果己经安装了安全管理器,该方法首先调用安全管理器的checkPermission方法:
security.checkPermission(new RuntimePermission("setSocurityManager"));
确保它可以取代存在的安全管理器,如果不允许取代存在的安全管理器,则抛掷一个 SecurityException异常。否则,使用参数s建立一个安全管理器。
·public static SecurityManager getSecurityManager()
得到系统的安全接口。如果当前应用程序的安全管理器己经建立,那么,返回当前的安全管理器,否则返问null。
·public static native long currentTimeMillis()
得到以毫秒为单位的当前时间。
7.4.2 System类的方法(2)
·public static native void arraycopy(Object src,int src_position,Object dst,int dst_position, int length);
复制数组。从指定的源数组src的指定位置Src position,复制到指定的目的数组dst的指定位置dst_position,复制的长度为length。
如果目的数组dst为null,则抛掷一个NullPointerException异常。
如果源数组src为null,则抛掷一个NullPointerException异常,并且不修改目的数组dst。
如果下面任何一种条件满足,则抛掷一个ArrayStoreException异常,并且不修改目的数组dst:
参数src不是一个数组。
参数dst不是一个数组。
参数src和dst是数组,但是元素的类型是不同的数据类型。
如果下面任何一种条件满足,则抛掷一个IndexOutOfBoundsException异常, 并且不修改目的数组dst:
□ 参数srcOffset为负数。
□ 参数dstOfset为负数。
□参数length为负数。
□ srcOffset+langht大于源数组的长度src.length。
□dstOffSET+length大于目的数组的长度dst.length。
arraycopy方法既可以用来复制数组,也可以用来移动数组中的元素,例如:
//将数组的所有元素右移一位
System.arraycopy(array,0,array,1,array.length-1);
//将数组的所有元素左移一位
System.arraycopy(array,1,aray,0,array.length-1);

7.4.2 System类的方法(3)
·public static native int idetityHashCode(Object x)
返回对象x的散列码。
·public static Properties getProperties()
得到当前系统的属性。系统的属性集的具体内容参见例7.1。
·public static void setProperties(Properties props)
设置系统的属性。如果存在一个安全管理器,则调用其上的checkPropertiesAccess方法;如果安全管理器存在且不允许其访问系统属性,会抛掷一个SecurityException异常。
·public static String getProperty(String key)
得到指定健key的系统属性。如果存在一个安全管理器,会调用其上的checkPropertiesAccess方法:如果键key的属性值不存在则返回null。
如果安全管理器存在且不允许其访问系统属性,会抛掷一个SecurityException异常;如果key为null,则抛掷NullPointerException异常;如果key为空,则抛掷IllegalArgumentException异常。
·public static String getProperty(String key,String def)
得到指定健key的系统属性。如果存在一个安全管理器,会调出其上的checkPropertiesAccess方法;如果键key的属性值不存在,则返回参数def指定的值。
如果安全管理器存在且不允许其访问系统属性,会抛掷一个SecurityException异常;如果key为null,则抛掷NullPointerException异常;如果key为空,则抛掷IllegalArgumentException异常。
·public static String setProperty(String key,String value)
利用指定的健key和值value设置系统的属性。如果所设置的系统属性存在,则返回该系统属性值,否则返回null。
7.4.2 System类的方法(4)
·public static void exit(int status)
中断当前运行的Java虚拟机,参数status为状态码,通常非0的状态码描述非正常的中断。如果安全管理器存在且不允许其使用指定的状态退出,会抛掷一个SecurityException异常。该方法会调用Runtime类的exit方法,即:
Runtime.getRutime().exit(n)
下面的代码段演示了exit方法的使用:
//普通的中断
Systen.exit(0);
//非正常的中断
int errorCode=-1;
System.exIT(errorCode);
·public static void gc()
运行垃圾收集器。调用gc方法会使Java虚拟机回收不再使用的对象,释放它们占用的内存。该方法会调用Runtime类的gC方法,即:
Runtime.getRuntime().gc()
·public static void runFinalization()
运行所有未结束的对象的finalizationh方法,该方法会调用System类的runFinalization方法,即:
Runtime.getRuntime().runFinalization();
·public static void load(String filename)
从参数filename指定的文件装载代码文件,该方法会调用System类的load方法,即:
Runtime.getRuntime().load(name)
·public static void loadLibrary(String libname)
装载参数libname指定的系统库,该方法会调用System类的loadLibname方法,即:
Systerm.loadLibrary(name)
如果安全管理器存在且其上的checkLink方法不允许装载指定的动态库,则抛掷一个SecurityException异常;如果库不存在,则抛掷一个UnsatisfiedLinkError异常。
·public static native String mapLibraryName(String libname)
将库名libname映射为特定平台的natvie库,返回值为特定平台的native库名。
7.4.3 实例:得到当前系统的属性
下面的例子演示了如何得到当前系统的属性。
【例】
/*
* @(#)DemogetProperties.java
* 得到当前系统的属性
*/
public class DemogetProperties
{
public static void main(String[] args)
{
String str;
//Java运行时环境的版本
str=System.getProperty("java.version");
System.out.println("java.version"+": "+str);
//Java运行时环境的提供商
str= System.getProperty("java.vendor");
System.out.println("java.vendor"+": "+str);
//Java提供商的URL
str=SystemgetPtoperty("java.vendor.url");
System.out.println("java.vendor.url"+": "+str);
//Java的安装目录
str= System.getProperty("java.home");
System.out.println("java.home"+":"+str);
//Java虚拟机规范的版本
str=System.getProperty("java.vm.specification.version");
System.out.println("java.vm.specification.version"+": "+str);
//Java虚拟机规范的提供商
Str=System.getProperty("java.vm.specification.vendor");
System.out.println("java.vm.specification.vendor"+": "+str);
//Java虚拟机规范的名称
str= System.getProperty("java.vm.specification.name");
System.out.println("java.vm.specification.name"+": "+str);
//Java虚拟机实现的版本
str=System.getProperty("java.vm.version");
System.out.println("java.vm.version"+": "+str);
//Java虚拟机实现的提供商
str= System.getProperty("java.vm.vendor");
System.out.println("java.vendor"+": "+str);
//Java虚拟机实现的名称
str=System.getProperty("java.vm.name");
System.out.println("java.vm.name"+": "+str);
//Java运行时环境规范的版本
str=System.getProperty("java.specification.version");
System.out.println("java.specification.version"+": "+str);
//Java运行时环境规范的提供商
str= System.getProperty("java.specification.vendor");
System.out.println("java.specification.vendor"+": "+str);
//Java运行时环境规范的名称
str= System.getProperty("java.specification.name");
System.out.println("java.specification.name"+": "+str);
//Java类格式的版本号
str=System.getProperty("java.class.version");
System.out.println("java.class.version"+": "+str);
//Java类的路径
str= System.getProperty("java.class.path");
System.out.println("java.class.path"+": "+str);
//目录或扩展目录的路径
str=System.getProperty("javaext.dirs");
System.outprintln("java.ext.dirs"+": "+str);
//操作系统的名称
str=System.getProperty("os.name");
System.out.println("os.name"+": "+str);
//操作系统的体系结构
str=System.getProperty("os.arch");
System.out.println("os.arch"+": "+str);
//操作系统的版本
str=System.out.println("os.version");
System.out.println("os.version"+": "+str);
//文件分隔符
str=System.getProperty("file.separator");
System.out.println("file.separator"+": "+str);
//路径分隔符
str= System.getProperty("path.separator");
System.out.println("path.separator"+": "+str);
//行分隔符
str=System.getProperty("line.separator");
System.out.println("line.separator"+": "+str);
//用户名
str=System.getProperty("user.name");
System.out.println("user.name"+": "+str);
//用户的HOME目录
str=System.getProperty("user.home");
System.out.println("user.home"+": "+str);
//用户的当前工作目录
str=System.getProperty("user.dir");
System.out.println("user.dir"+": "+str);
}
}
程序的运行结果为:
java.version: 1.3.0
java.vendor:Sun Microsystems Inc.
java.vendor.url: http://java.sun.com/
java.home: C:\PROGRAM FILES\JAVASOFT\JRE\1.3
java.vm.specification.version: 1.0
java.vm.specification.vendor: Sun Microsystems Inc.
java.vm.specification.name: java Virtual Machine Specification
java.vm.version: 1.3.0-C
java.vm.vendor: Sun Microsystems Inc.
java.vm.name: java HotSpot(TM) Client VM
java.specification.version: 1.3
java.specification.vendor:Sun Microsystems Inc.
java.specification.name: Java Platform API Specification
java.class.version: 47.0
java.class.path: ,;e:\jdk1.3\lib\tool.jar
java.ext.dirs: C:\PROGRAM FILES\JAVASOFT\JRE\1.3\lib\ext
os.name:Windows 98
os.arch: x86
os.version:4.10
file.separator: \
path.separator: ;
line.separator:
user.name: MrYshf
user.home: C:\WIN98
user.dir: D:\Javaproject\book\st\src\07
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics