Java System学习
来源:互联网 发布:sql getdate 格式化 编辑:程序博客网 时间:2024/06/07 00:52
一.概述
System
类包含一些有用的类字段和方法。它不能被实例化。
在 System
类提供的设施中,有标准输入、标准输出和错误输出流;对外部定义的属性和环境变量的访问;加载文件和库的方法;还有快速复制数组的一部分的实用方法。
由于该类的构造方法是private的,所以无法创建该类的对象,也就是无法实例化该类。其内部的成员变量和成员方法都是static的,所以也可以很方便的进行调用。
二.初始化
/** * Initialize the system class. Called after thread initialization. */ private static void initializeSystemClass() {props = new Properties();initProperties(props);sun.misc.Version.init(); // Workaround until DownloadManager initialization is revisited. // Make JavaLangAccess available early enough for internal // Shutdown hooks to be registered setJavaLangAccess(); // Gets and removes system properties that configure the Integer // cache used to support the object identity semantics of autoboxing. // At this time, the size of the cache may be controlled by the // vm option -XX:AutoBoxCacheMax=<size>. Integer.getAndRemoveCacheProperties();// 现在加载zip库,以保持java.util.zip.ZipFile尝试使用自己以后加载该库。// Load the zip library now in order to keep java.util.zip.ZipFile from trying to use itself to load this library later.loadLibrary("zip");// 初始化in、out、errFileInputStream fdIn = new FileInputStream(FileDescriptor.in);FileOutputStream fdOut = new FileOutputStream(FileDescriptor.out);FileOutputStream fdErr = new FileOutputStream(FileDescriptor.err);setIn0(new BufferedInputStream(fdIn));setOut0(new PrintStream(new BufferedOutputStream(fdOut, 128), true));setErr0(new PrintStream(new BufferedOutputStream(fdErr, 128), true));// Setup Java signal handlers for HUP, TERM, and INT (where available). Terminator.setup(); // Initialize any miscellenous operating system settings that need to be // set for the class libraries. Currently this is no-op everywhere except // for Windows where the process-wide error mode is set before the java.io // classes are used. sun.misc.VM.initializeOSEnvironment();// Set the maximum amount of direct memory. This value is controlled// by the vm option -XX:MaxDirectMemorySize=<size>. This method acts// as an initializer only if it is called before sun.misc.VM.booted().sun.misc.VM.maxDirectMemory();// Set a boolean to determine whether ClassLoader.loadClass accepts// array syntax. This value is controlled by the system property// "sun.lang.ClassLoader.allowArraySyntax". This method acts as// an initializer only if it is called before sun.misc.VM.booted().sun.misc.VM.allowArraySyntax();// Subsystems that are invoked during initialization can invoke// sun.misc.VM.isBooted() in order to avoid doing things that should// wait until the application class loader has been set up.sun.misc.VM.booted(); // The main thread is not added to its thread group in the same // way as other threads; we must do it ourselves here. Thread current = Thread.currentThread(); current.getThreadGroup().add(current); }
三.静态成员变量
1.静态成员变量
2.测试代码
package system;public class TestSystem {public static void main(String[] args) {System.out.println("System.in.toString() = " + System.in.toString());System.out.println("System.out.toString() = " + System.out.toString());System.out.println("System.err.toString() = " + System.err.toString());}}
3.测试结果
四.静态方法
1.获取属性 - System.getProperty(key)
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
用户的当前工作目录
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
用户的当前工作目录
1.1测试代码
package system;import java.util.Map.Entry;import java.util.Properties;import java.util.Set;public class TestProperty {public static void main(String[] args) {System.out.println("Java运行时环境版本:" + System.getProperty("java.version"));System.out.println("Java运行时环境供应商:" + System.getProperty("java.vendor"));System.out.println("Java供应商的URL: " + System.getProperty("java.vendor.url"));System.out.println("Java安装目录: " + System.getProperty("java.home"));System.out.println();System.out.println("*******************************************************");System.out.println("Java虚拟机规范版本:" + System.getProperty("java.vm.specification.version"));System.out.println("Java虚拟机规范供应商:" + System.getProperty("java.vm.specification.vendor"));System.out.println("Java虚拟机规范名称:" + System.getProperty("java.vm.specification.name"));System.out.println("Java虚拟机实现版本:" + System.getProperty("java.vm.version"));System.out.println("Java虚拟机实现供应商:" + System.getProperty("java.vm.vendor"));System.out.println("Java虚拟机实现名称:" + System.getProperty("java.vm.name"));System.out.println();System.out.println("*******************************************************");System.out.println("Java运行时环境规范版本:" + System.getProperty("java.specification.version"));System.out.println("Java运行时环境规范供应商:" + System.getProperty("java.specification.vendor"));System.out.println("Java运行时环境规范名称:" + System.getProperty("java.specification.name"));System.out.println("Java类格式版本号:" + System.getProperty("java.class.version"));System.out.println("Java类路径:" + System.getProperty("java.class.path"));System.out.println();System.out.println("********************************************************");System.out.println("加载库时搜索的路径列表:" + System.getProperty("java.library.path"));System.out.println("默认的临时文件路径:" + System.getProperty("java.io.tmpdir"));System.out.println("要使用的JIT编译器的名称:" + System.getProperty("java.compiler"));System.out.println("一个或多个扩展文件的路径:" + System.getProperty("java.ext.dirs"));System.out.println();System.out.println("********************************************************");System.out.println("操作系统的名称:" + System.getProperty("os.name"));System.out.println("操作系统的架构:" + System.getProperty("os.arch"));System.out.println("操作系统的版本:" + System.getProperty("os.version"));System.out.println("文件分隔符(在UNIX系统中是'/'):" + System.getProperty("file.separator"));System.out.println("路径分隔符(在UNIX系统是':'):" + System.getProperty("path.separator"));System.out.println("行分隔符(在UNIX系统中是'/n'):" + System.getProperty("line.separator"));System.out.println("用户的账户名称:" + System.getProperty("user.name"));System.out.println("用户的主目录:" + System.getProperty("user.home"));System.out.println("用户的当前工作目录:" + System.getProperty("user.dir"));System.out.println();Properties properties = System.getProperties();Set<Entry<Object, Object>> entrySet = properties.entrySet();for (Entry<Object, Object> entry : entrySet) {System.out.println(entry.getKey() + " = " + entry.getValue());}}}
1.2.测试结果
Java运行时环境版本:1.6.0_16Java运行时环境供应商:Sun Microsystems Inc.Java供应商的URL: http://java.sun.com/Java安装目录: D:\esendev\jdk1.6\jre*******************************************************Java虚拟机规范版本:1.0Java虚拟机规范供应商:Sun Microsystems Inc.Java虚拟机规范名称:Java Virtual Machine SpecificationJava虚拟机实现版本:14.2-b01Java虚拟机实现供应商:Sun Microsystems Inc.Java虚拟机实现名称:Java HotSpot(TM) Client VM*******************************************************Java运行时环境规范版本:1.6Java运行时环境规范供应商:Sun Microsystems Inc.Java运行时环境规范名称:Java Platform API SpecificationJava类格式版本号:50.0Java类路径:D:\esendev\gitrepos\POI\build\classes;D:\esendev\apache-tomcat-5.5\common\lib\commons-el.jar;D:\esendev\apache-tomcat-5.5\common\lib\jasper-compiler-jdt.jar;D:\esendev\apache-tomcat-5.5\common\lib\jasper-compiler.jar;D:\esendev\apache-tomcat-5.5\common\lib\jasper-runtime.jar;D:\esendev\apache-tomcat-5.5\common\lib\jsp-api.jar;D:\esendev\apache-tomcat-5.5\common\lib\naming-factory-dbcp.jar;D:\esendev\apache-tomcat-5.5\common\lib\naming-factory.jar;D:\esendev\apache-tomcat-5.5\common\lib\naming-resources.jar;D:\esendev\apache-tomcat-5.5\common\lib\servlet-api.jar;E:\软件\POI\poi-bin-3.16-20170419\poi-3.16\poi-3.16.jar;E:\软件\POI\poi-bin-3.16-20170419\poi-3.16\poi-examples-3.16.jar;E:\软件\POI\poi-bin-3.16-20170419\poi-3.16\poi-excelant-3.16.jar;E:\软件\POI\poi-bin-3.16-20170419\poi-3.16\poi-ooxml-3.16.jar;E:\软件\POI\poi-bin-3.16-20170419\poi-3.16\poi-ooxml-schemas-3.16.jar;E:\软件\POI\poi-bin-3.16-20170419\poi-3.16\poi-scratchpad-3.16.jar;E:\软件\POI\poi-bin-3.16-20170419\poi-3.16\lib\commons-codec-1.10.jar;E:\软件\POI\poi-bin-3.16-20170419\poi-3.16\lib\commons-collections4-4.1.jar;E:\软件\POI\poi-bin-3.16-20170419\poi-3.16\lib\commons-logging-1.2.jar;E:\软件\POI\poi-bin-3.16-20170419\poi-3.16\lib\junit-4.12.jar;E:\软件\POI\poi-bin-3.16-20170419\poi-3.16\lib\log4j-1.2.17.jar;E:\软件\POI\poi-bin-3.16-20170419\poi-3.16\ooxml-lib\curvesapi-1.04.jar;E:\软件\POI\poi-bin-3.16-20170419\poi-3.16\ooxml-lib\xmlbeans-2.6.0.jar********************************************************加载库时搜索的路径列表:D:\esendev\jdk1.6\bin;.;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;D:/esendev/jdk1.6/bin/../jre/bin/client;D:/esendev/jdk1.6/bin/../jre/bin;D:/esendev/jdk1.6/bin/../jre/lib/i386;D:\mysql\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;D:\esendev\jdk1.6\bin;D:\esendev\jdk1.6\jre\bin;D:\apache-tomcat-8.0.37\lib;D:\apache-tomcat-8.0.37\bin;D:\esendev\eclipse4git;默认的临时文件路径:C:\Users\ADMINI~1\AppData\Local\Temp\要使用的JIT编译器的名称:null一个或多个扩展文件的路径:D:\esendev\jdk1.6\jre\lib\ext;C:\WINDOWS\Sun\Java\lib\ext********************************************************操作系统的名称:Windows NT (unknown)操作系统的架构:x86操作系统的版本:6.2文件分隔符(在UNIX系统中是'/'):\路径分隔符(在UNIX系统是':'):;行分隔符(在UNIX系统中是'/n'):用户的账户名称:Administrator用户的主目录:C:\Users\Administrator用户的当前工作目录:D:\esendev\gitrepos\POIjava.runtime.name = Java(TM) SE Runtime Environmentsun.boot.library.path = D:\esendev\jdk1.6\jre\binjava.vm.version = 14.2-b01java.vm.vendor = Sun Microsystems Inc.java.vendor.url = http://java.sun.com/path.separator = ;java.vm.name = Java HotSpot(TM) Client VMfile.encoding.pkg = sun.iosun.java.launcher = SUN_STANDARDuser.country = CNsun.os.patch.level = java.vm.specification.name = Java Virtual Machine Specificationuser.dir = D:\esendev\gitrepos\POIjava.runtime.version = 1.6.0_16-b01java.awt.graphicsenv = sun.awt.Win32GraphicsEnvironmentjava.endorsed.dirs = D:\esendev\jdk1.6\jre\lib\endorsedos.arch = x86java.io.tmpdir = C:\Users\ADMINI~1\AppData\Local\Temp\line.separator = java.vm.specification.vendor = Sun Microsystems Inc.user.variant = os.name = Windows NT (unknown)sun.jnu.encoding = GBKjava.library.path = D:\esendev\jdk1.6\bin;.;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;D:/esendev/jdk1.6/bin/../jre/bin/client;D:/esendev/jdk1.6/bin/../jre/bin;D:/esendev/jdk1.6/bin/../jre/lib/i386;D:\mysql\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;D:\esendev\jdk1.6\bin;D:\esendev\jdk1.6\jre\bin;D:\apache-tomcat-8.0.37\lib;D:\apache-tomcat-8.0.37\bin;D:\esendev\eclipse4git;java.specification.name = Java Platform API Specificationjava.class.version = 50.0sun.management.compiler = HotSpot Client Compileros.version = 6.2user.home = C:\Users\Administratoruser.timezone = java.awt.printerjob = sun.awt.windows.WPrinterJobfile.encoding = UTF-8java.specification.version = 1.6java.class.path = D:\esendev\gitrepos\POI\build\classes;D:\esendev\apache-tomcat-5.5\common\lib\commons-el.jar;D:\esendev\apache-tomcat-5.5\common\lib\jasper-compiler-jdt.jar;D:\esendev\apache-tomcat-5.5\common\lib\jasper-compiler.jar;D:\esendev\apache-tomcat-5.5\common\lib\jasper-runtime.jar;D:\esendev\apache-tomcat-5.5\common\lib\jsp-api.jar;D:\esendev\apache-tomcat-5.5\common\lib\naming-factory-dbcp.jar;D:\esendev\apache-tomcat-5.5\common\lib\naming-factory.jar;D:\esendev\apache-tomcat-5.5\common\lib\naming-resources.jar;D:\esendev\apache-tomcat-5.5\common\lib\servlet-api.jar;E:\软件\POI\poi-bin-3.16-20170419\poi-3.16\poi-3.16.jar;E:\软件\POI\poi-bin-3.16-20170419\poi-3.16\poi-examples-3.16.jar;E:\软件\POI\poi-bin-3.16-20170419\poi-3.16\poi-excelant-3.16.jar;E:\软件\POI\poi-bin-3.16-20170419\poi-3.16\poi-ooxml-3.16.jar;E:\软件\POI\poi-bin-3.16-20170419\poi-3.16\poi-ooxml-schemas-3.16.jar;E:\软件\POI\poi-bin-3.16-20170419\poi-3.16\poi-scratchpad-3.16.jar;E:\软件\POI\poi-bin-3.16-20170419\poi-3.16\lib\commons-codec-1.10.jar;E:\软件\POI\poi-bin-3.16-20170419\poi-3.16\lib\commons-collections4-4.1.jar;E:\软件\POI\poi-bin-3.16-20170419\poi-3.16\lib\commons-logging-1.2.jar;E:\软件\POI\poi-bin-3.16-20170419\poi-3.16\lib\junit-4.12.jar;E:\软件\POI\poi-bin-3.16-20170419\poi-3.16\lib\log4j-1.2.17.jar;E:\软件\POI\poi-bin-3.16-20170419\poi-3.16\ooxml-lib\curvesapi-1.04.jar;E:\软件\POI\poi-bin-3.16-20170419\poi-3.16\ooxml-lib\xmlbeans-2.6.0.jaruser.name = Administratorjava.vm.specification.version = 1.0java.home = D:\esendev\jdk1.6\jresun.arch.data.model = 32user.language = zhjava.specification.vendor = Sun Microsystems Inc.awt.toolkit = sun.awt.windows.WToolkitjava.vm.info = mixed modejava.version = 1.6.0_16java.ext.dirs = D:\esendev\jdk1.6\jre\lib\ext;C:\WINDOWS\Sun\Java\lib\extsun.boot.class.path = D:\esendev\jdk1.6\jre\lib\resources.jar;D:\esendev\jdk1.6\jre\lib\rt.jar;D:\esendev\jdk1.6\jre\lib\sunrsasign.jar;D:\esendev\jdk1.6\jre\lib\jsse.jar;D:\esendev\jdk1.6\jre\lib\jce.jar;D:\esendev\jdk1.6\jre\lib\charsets.jar;D:\esendev\jdk1.6\jre\classesjava.vendor = Sun Microsystems Inc.file.separator = \java.vendor.url.bug = http://java.sun.com/cgi-bin/bugreport.cgisun.io.unicode.encoding = UnicodeLittlesun.cpu.endian = littlesun.desktop = windowssun.cpu.isalist = pentium_pro+mmx pentium_pro pentium+mmx pentium i486 i386 i86
2.数组操作
src
引用的源数组到 dest
引用的目标数组,数组组件的一个子序列被复制下来。被复制的组件的编号等于length
参数。源数组中位置在srcPos
到 srcPos+length-1
之间的组件被分别复制到目标数组中的destPos
到destPos+length-1
位置。src
- 源数组。srcPos
- 源数组中的起始位置。dest
- 目标数组。destPos
- 目标数据中的起始位置。length
- 要复制的数组元素的数量。 只要下列任何情况为真,则抛出 IndexOutOfBoundsException
异常,并且不会修改目标数组:
srcPos
参数为负。destPos
参数为负。length
参数为负。srcPos+length
大于src.length
,即源数组的长度。destPos+length
大于dest.length
,即目标数组的长度。
2.1测试代码
package system;public class TestArraycopy {public static void main(String[] args) {int [] src = new int[]{0, 1, 2, 3, 4, 5, 6, 7, 8, 9};int [] dest = new int[10];System.arraycopy(src, 0, dest, 0, 10);System.out.println(pringtArray(dest));System.out.println();int [] dest1 = new int[10];System.arraycopy(src, 5, dest1, 0, 5);System.out.println(pringtArray(dest1));System.out.println();int [] dest2 = new int[10];System.arraycopy(src, 5, dest2, 5, 5);System.out.println(pringtArray(dest2));System.out.println();//int [] dest3 = new int[10];//System.arraycopy(src, 0, dest3, 0, 11);//System.out.println(pringtArray(dest3));//System.out.println();int [] dest4 = new int[10];System.arraycopy(src, 0, dest4, 5, 6);System.out.println(pringtArray(dest4));System.out.println();}private static String pringtArray(int[] dest) {StringBuffer sb = new StringBuffer();for (int item : dest) {sb.append(item).append(", ");}String str = sb.toString();int length = str.length();if (length == 0) {return null;} else {return sb.substring(0, length-2);}}}
2.2测试结果
0, 1, 2, 3, 4, 5, 6, 7, 8, 95, 6, 7, 8, 9, 0, 0, 0, 0, 00, 0, 0, 0, 0, 5, 6, 7, 8, 9Exception in thread "main" java.lang.ArrayIndexOutOfBoundsExceptionat java.lang.System.arraycopy(Native Method)at system.TestArraycopy.main(TestArraycopy.java:28)
3.获取时间
此方法只能用于测量已过的时间,与系统或钟表时间的其他任何时间概念无关。返回值表示从某一固定但任意的时间算起的毫微秒数(或许从以后算起,所以该值可能为负)。此方法提供毫微秒的精度,但不是必要的毫微秒的准确度。它对于值的更改频率没有作出保证。在取值范围大于约 292 年(263 毫微秒)的连续调用的不同点在于:由于数字溢出,将无法准确计算已过的时间。
3.1测试代码
package system;public class TestTime {public static void main(String[] args) throws InterruptedException {long start = System.currentTimeMillis();Thread.sleep(1000);System.out.println("耗时:" + (System.currentTimeMillis() - start) + "毫秒");/** * System.nanoTime()是基于cpu核心的时钟周期来计时,它的开始时间是不确定的 * 在多核处理器上,由于每个核心的开始时间不确定 * 这段代码有可能会运行在两个不同的cpu核心上,从而导致得到的结果完全不符逻辑 * */long startNano = System.nanoTime();Thread.sleep(1000);System.out.println("耗时:" + (System.nanoTime() - startNano) + "纳秒");}}
3.2测试结果
耗时:1000毫秒耗时:999958536纳秒
- Java学习笔记:System
- Java学习之System
- Java System学习
- Java Web学习【4】System
- java学习之System类
- java源码学习6-System
- Java学习日志--其他对象System
- java的System类学习笔记
- Java学习笔记--System.out.println();
- Java SE学习之System.getProperties
- java中System,Date学习笔记
- java基础学习笔记——system
- JavaSE学习笔记_13:Java-System类
- java学习日记_69:System类
- JAVA学习笔记——System类
- java日常学习:System系统类
- java学习之路----java类库----System类
- JAVA System
- eclipse的ini文件
- 我在OC工程中调用Swift的记录
- BAT删除文件夹
- (笔记)Android的OnGestureListener中onFling()的使用注意
- 获取调用自己方法的使用者的包名和类名
- Java System学习
- Spring的注解@Qualifier小结
- 软键盘交互
- Python遇到的一些问题
- Unity3D真实跟踪的无脑解决方案
- Predix微服务架构下的用户对微服务权限控制实践
- Hive(二)优化总结
- openCv
- C++搜索之鸣人和佐助