字符串、日期、数字是Java程序中最常使用的数据对象,对这些数据的创建、修改、格式化和转换等操作融入在Java程序的每个角落,必须熟练掌握。本节将通过实例演示以下常用实体类
Java系统级类:系统类System、运行时类Runtime
Java字符串处理类:字符串类String、字符串分隔符类StringTokenizer、线程安全的可变字符串类StringBuffer、可变字符串类StringBuilder
Java日期处理类:日期类Date、日期格式化类DateFormate、日历类Calendar
Java数字处理类:数学类Math、随机类Radom、数学类Float、Double、Integer、Long
1、Java系统级类
系统类System:访问系统属性、访问环境变量、加载文件和库、快速复制数组、取得系统时间、系统推出命令、执行垃圾回收
运行时类Runtime:查看系统内存、终止JVM虚拟机、运行系统程序、使用关闭钩子
1.1访问系统属性
例如获取操作系统名称os.name、操作系统版本os.version、JVM名称java.vm.name、JDK版本java.version等。系统属性集合如表1-1示
表1-1 系统属性键值
java.version | Java运行时环境版本 |
java.vendor | Java运行时供应商 |
java.home | Java安装目录 |
java.vm.version | Java虚拟机版本 |
java.vm.name | Java虚拟机名称 |
java.class.version | Java类格式版本号 |
java.class.path | Java类路径 |
os.name | 操作系统的名称 |
os.version | 操作系统的版本 |
file.separator | 文件分隔符 |
path.separator | 路径分隔符 |
line.separator | 行分隔符 |
user.dir | 用户当前工作目录 |
(1)、取得所有系统属性列表
使用System.getProperties()函数将取得一个Properties对象,该对象包含了所有系统属性的键值对。然后转化为迭代器Enumeration对象额,然后使用while()循环显示输出所有的key和value。
package org.test.envm;import java.util.Enumeration;import java.util.Properties;public class SystemEnvm { public static void main(String[] args) { // 取得系统属性列表 Properties properties = System.getProperties(); Enumeration
显示结果如下:
java.runtime.name = Java(TM) SE Runtime Environmentsun.boot.library.path = C:\Program Files\Java\jre6\binjava.vm.version = 20.14-b01java.vm.vendor = Sun Microsystems Inc.java.vendor.url = http://java.sun.com/path.separator = ;java.vm.name = Java HotSpot(TM) 64-Bit Server VMfile.encoding.pkg = sun.iosun.java.launcher = SUN_STANDARDuser.country = CNsun.os.patch.level = Service Pack 1java.vm.specification.name = Java Virtual Machine Specificationuser.dir = D:\workspace\new1_workspace\threadjava.runtime.version = 1.6.0_39-b04java.awt.graphicsenv = sun.awt.Win32GraphicsEnvironmentjava.endorsed.dirs = C:\Program Files\Java\jre6\lib\endorsedos.arch = amd64java.io.tmpdir = C:\Users\ADMINI~1\AppData\Local\Temp\line.separator = java.vm.specification.vendor = Sun Microsystems Inc.user.variant = os.name = Windows 7sun.jnu.encoding = GBKjava.library.path = C:\Program Files\Java\jre6\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\oraclexe\app\oracle\product\11.2.0\server\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Java\jdk1.7.0_71\bin;C:\Program Files\Java\jdk1.7.0_71\jre\bin;D:\soft\apache-maven-3.0.5\bin;C:\Program Files\TortoiseSVN\bin;C:\Program Files\Lenovo\Fingerprint Manager Pro\;C:\Program Files\TortoiseSVN\bin;C:\Program Files (x86)\Subversion\bin;D:\soft\apache-tomcat-7.0.56\bin;.java.specification.name = Java Platform API Specificationjava.class.version = 50.0sun.management.compiler = HotSpot 64-Bit Tiered Compilersos.version = 6.1user.home = C:\Users\Administratoruser.timezone = java.awt.printerjob = sun.awt.windows.WPrinterJobfile.encoding = GBKjava.specification.version = 1.6java.class.path = D:\workspace\new1_workspace\thread\binuser.name = Administratorjava.vm.specification.version = 1.0sun.java.command = org.test.envm.SystemEnvmjava.home = C:\Program Files\Java\jre6sun.arch.data.model = 64user.language = zhjava.specification.vendor = Sun Microsystems Inc.awt.toolkit = sun.awt.windows.WToolkitjava.vm.info = mixed modejava.version = 1.6.0_39java.ext.dirs = C:\Program Files\Java\jre6\lib\ext;C:\Windows\Sun\Java\lib\extsun.boot.class.path = C:\Program Files\Java\jre6\lib\resources.jar;C:\Program Files\Java\jre6\lib\rt.jar;C:\Program Files\Java\jre6\lib\sunrsasign.jar;C:\Program Files\Java\jre6\lib\jsse.jar;C:\Program Files\Java\jre6\lib\jce.jar;C:\Program Files\Java\jre6\lib\charsets.jar;C:\Program Files\Java\jre6\lib\modules\jdk.boot.jar;C:\Program Files\Java\jre6\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 = amd64
(2)、取得某一个系统属性的值
如果我们知道要查询的属性的键,也可以直接使用System.getProperties(key)直接取得该键的值。
// TODO 取得某一系统属性值 String osname = System.getProperty("os.name");//取得os.name String osversion = System.getProperty("os.version");//取得os.version String fileSep = System.getProperty("file.separator"); System.out.println("操作系统名称:"+osname); System.out.println("操作系统版本:"+osversion); System.out.println("文件分隔符:"+fileSep);
显示结果如下:
操作系统名称:Windows 7操作系统版本:6.1文件分隔符:\
1.2、访问环境变量
系统属性是系统固有属性,不能够被修改。环境变量是可修改的。环境变量包括系统变量和用户变量。
用System取得环境变量。
(1)取得所有环境变量列表
使用System.getenv()函数将取得一个Map对象,该对象包含了所有环境变量的键值对。使用该函数去除了对象列表map,然后迭代,使用while()循环输出
// 得到环境变量列表 Mapgetenv = System.getenv(); Iterator iterator = getenv.keySet().iterator(); while(iterator.hasNext()){ String key = iterator.next(); System.out.println(key + " = " + getenv.get(key)); }
取得结果如下:
USERPROFILE = C:\Users\AdministratorJAVA_HOME = C:\Program Files\Java\jdk1.7.0_71TOMCAT_CLASSPATH = .;D:\soft\apache-tomcat-7.0.56\lib\servlet-api.jarSystemDrive = C:#envTSLOGsss2796 = 75890384Path = C:\oraclexe\app\oracle\product\11.2.0\server\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Java\jdk1.7.0_71\bin;C:\Program Files\Java\jdk1.7.0_71\jre\bin;D:\soft\apache-maven-3.0.5\bin;C:\Program Files\TortoiseSVN\bin;C:\Program Files\Lenovo\Fingerprint Manager Pro\;C:\Program Files\TortoiseSVN\bin;C:\Program Files (x86)\Subversion\bin;D:\soft\apache-tomcat-7.0.56\bin#envTSLOGXMediaLibrary2796 = 178637744PROCESSOR_REVISION = 3c03USERDOMAIN = WIN-RO8HM9VF60IALLUSERSPROFILE = C:\ProgramDataCATALINA_BASE = D:\soft\apache-tomcat-7.0.56SESSIONNAME = ConsoleTMP = C:\Users\ADMINI~1\AppData\Local\Temp#envKKPRbc_Cmdilne = LOGONSERVER = \\WIN-RO8HM9VF60I=:: = ::\CommonProgramFiles = C:\Program Files\Common FilesPROCESSOR_LEVEL = 6LOCALAPPDATA = C:\Users\Administrator\AppData\LocalCOMPUTERNAME = WIN-RO8HM9VF60ISystemRoot = C:\WindowsUSERNAME = AdministratorNLS_LANG = SIMPLIFIED CHINESE_CHINA.ZHS16GBKTOMCAT_HOME = D:\soft\apache-tomcat-7.0.56APPDATA = C:\Users\Administrator\AppData\RoamingProgramData = C:\ProgramDataPATHEXT = .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSCwindows_tracing_logfile = C:\BVTBin\Tests\installpackage\csilogfile.logMAVEN_HOME = D:\soft\apache-maven-3.0.5ProgramFiles(x86) = C:\Program Files (x86)windows_tracing_flags = 3TEMP = C:\Users\ADMINI~1\AppData\Local\TempProgramFiles = C:\Program FilesHOMEDRIVE = C:TNS_ADMIN = C:\oraclexe\app\oracle\product\11.2.0\server\network\ADMINProgramW6432 = C:\Program FilesPROCESSOR_IDENTIFIER = Intel64 Family 6 Model 60 Stepping 3, GenuineIntelShellLaunch{A81BA54B-CCFE-4204-8E79-A68C0FDFA5CF} = ShellExtCLASSPATH = .;C:\Program Files\Java\jdk1.7.0_71\lib;C:\Program Files\Java\jdk1.7.0_71\lib\tools.jarPROCESSOR_ARCHITECTURE = AMD64FP_NO_HOST_CHECK = NOOS = Windows_NTHOMEPATH = \Users\AdministratorJRE_HOME = C:\Program Files\Java\jre7#envTSLOGRBCShellExt2796 = 2178528CommonProgramW6432 = C:\Program Files\Common FilesAPR_ICONV_PATH = C:\Program Files (x86)\Subversion\iconvCATALINA_HOME = D:\soft\apache-tomcat-7.0.56windir = C:\WindowsNUMBER_OF_PROCESSORS = 4PSModulePath = C:\Windows\system32\WindowsPowerShell\v1.0\Modules\PUBLIC = C:\Users\PublicCommonProgramFiles(x86) = C:\Program Files (x86)\Common FilesComSpec = C:\Windows\system32\cmd.exe
取得某一变量值,直接调用System.getenv(key)即可。
1.3、加载文件和库
函数load(String fileName)的作用是,从作为动态库的本地文件系统中以指定的文件名加载代码文件,文件名参数必须是完整的路径。
1.4 退出系统命令Runtime.getRuntime().exit(n);
1.5 垃圾回收:System.gc()
1.6 取得系统时间:System.currentTimeMillis()
1.7 快速复制数组:void arraycopy(Object src,int srcPos,Object dest,int destPos,int length)