第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
分享到:
相关推荐
Java SE程序 System类Java SE程序 System类Java SE程序 System类Java SE程序 System类Java SE程序 System类Java SE程序 System类Java SE程序 System类Java SE程序 System类Java SE程序 System类Java SE程序 System类...
主要介绍了Java System类用法,结合具体实例形式分析了java使用System类获取系统环境变量信息相关操作技巧,需要的朋友可以参考下
System类是jdk提供的一个工具类,有final修饰,不可继承,由名字可以看出来,其中的操作多数和系统相关。这篇文章主要介绍了Java System类详解_动力节点Java学院整理,需要的朋友可以参考下
主要介绍了Java System类两个常用方法代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
主要介绍了java system类使用方法,该类中的方法都是静态的。不能被实例化,没有对外提供构造函数,该类可以获取系统信息
import java .util.*; public class SystemTest { public static void main(String[] args) { //测试arraycopy方法,注意,目的空间必须提前分配 int[] src = {1,2,3,4,5,6,7...
819-4631 Sun Java Enterprise System 术语表 820-0103 适用于 UNIX 的 Sun Java Enterprise System 5 安装指南 820-0451 适用于 UNIX 的 Sun Java Enterprise System 5 发行说明 820-0589 适用于 UNIX 的 Sun ...
java system code part 01
java System源码 system类代表系统,系统级的很多属性和控制方法都放置在该类的内部。该类位于java.lang包。 由于该类的构造方法是private的,所以无法创建该类的对象,也就是无法实例化该类。其内部的成员变量和...
Sun Java System Application Server快速入门指南
The Java Module System source The Java Module System source
Sun Java System Web Server 7.0 管理员指南
Java 11 includes a built-in modularity framework, and The Java Module System is your guide to discovering it. In this new book, you'll learn how the module system improves reliability and ...
The Java Module System
Sun Java System Active Server Pages 4.0 网上找了一天才找到的,真难找!
031104_【第11章:Java常用类库】_System类笔记
Java中System类.pdf 学习资料 复习资料 教学资源
Sun Java System Directory Server.5.2(LDAP)安装工具包
主要讲解了System类、Object类、Arrays类、Cloneable接口、IO系统输入输出类及装饰类、IO系统文本读写工具类、IO系统二进制读写工具类、对象序列化工具类、File类及文件搜索工具类、java异常机制及自定义异常类、...