System类代表当前Java程序的运行平台,程序不能创建System类的对象,System类提供了一些类变量和类方法,允许直接通过System类来调用这些类变量和类方法
加载文件和动态链接库主要对native方法有用,对于一些特殊例如访问操作系统底层硬件设备等Java程序无法实现,必须借助C语言来完成。此时需要使用C语言为Java方法提供实现
步骤如下:
package code;
import java.io.*;
import java.lang.System.*;
import java.util.*;
public class SystemTest{
public static void main(String [] args)throws Exception{
Map<String,String> env = System.getenv();
for(String name : env.keySet()){
System.out.println(name + "----->" + env.get(name));
}
System.out.println(System.getenv("JAVA_HOME"));
Properties pro = System.getProperties();
pro.store(new FileOutputStream("props.txt"),"System Properties");
System.out.println(System.getProperty("os.name"));
}
}
USERDOMAIN_ROAMINGPROFILE—–>XIAODONGV12
LOCALAPPDATA—–>C:\Users\xiaodong\AppData\Local
PROCESSOR_LEVEL—–>6
FP_NO_HOST_CHECK—–>NO
USERDOMAIN—–>XIAODONGV12
LOGONSERVER—–>\MicrosoftAccount
PROMPT—–>P G
SESSIONNAME—–>Console
ALLUSERSPROFILE—–>C:\ProgramData
PROCESSOR_ARCHITECTURE—–>AMD64
=I:—–>I:\
PSModulePath—–>C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules\
SystemDrive—–>C:
ANT_HOME—–>E:\安卓JDK\apache-ant-1.9.3-bin\apache-ant-1.9.3
=ExitCode—–>00000000
=C:—–>C:\Users\xiaodong
APPDATA—–>C:\Users\xiaodong\AppData\Roaming
MOZ_PLUGIN_PATH—–>F:\WIN8安装目录\FOXIT READER\plugins\
USERNAME—–>xiaodong
TOMCAT_HOME—–>E:\J2EE\apache-tomcat-6.0.39
ProgramFiles(x86)—–>C:\Program Files (x86)
CommonProgramFiles—–>C:\Program Files\Common Files
Path—–>C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS
Client\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\Syste
m32\WindowsPowerShell\v1.0\;C:\Program Files\Java\jdk1.7.0_45\bin;C:\Program Fil
es\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(
R) Management Engine Components\IPT;C:\Program Files (x86)\Intel\Intel(R) Manage
ment Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engi
ne Components\IPT;E:\安卓JDK\adt-bundle-windows-x86_64-20131030\sdk\platform-too
ls;E:\安卓JDK\adt-bundle-windows-x86_64-20131030\sdk\tools;E:\安卓JDK\apache-ant
-1.9.3-bin\apache-ant-1.9.3\bin;E:\J2EE\apache-tomcat-6.0.39\bin;E:\J2EE\apache-
tomcat-6.0.39\lib;C:\Program Files\Common Files\Autodesk Shared\;C:\Program File
s (x86)\Autodesk\Backburner\;C:\Program Files\Java\jdk1.8.0_31\bin
ANDROID_SDK_HOME—–>.
PATHEXT—–>.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
OS—–>Windows_NT
classpath—–>.
COMPUTERNAME—–>XIAODONGV12
CATALINA_HOME—–>E:\J2EE\apache-tomcat-8.0.5
PROCESSOR_REVISION—–>3c03
CommonProgramW6432—–>C:\Program Files\Common Files
ComSpec—–>C:\WINDOWS\system32\cmd.exe
ProgramData—–>C:\ProgramData
ProgramW6432—–>C:\Program Files
HOMEPATH—–>\Users\xiaodong
SystemRoot—–>C:\WINDOWS
TEMP—–>C:\Users\xiaodong\AppData\Local\Temp
ESET_OPTIONS—–>HOMEDRIVE—–>C: PROCESSOR_IDENTIFIER—–>Intel64 Family 6 Model 60
Stepping 3, GenuineIntel USERPROFILE—–>C:\Users\xiaodong
TMP—–>C:\Users\xiaodong\AppData\Local\Temp
CommonProgramFiles(x86)—–>C:\Program Files (x86)\Common Files
ProgramFiles—–>C:\Program Files PUBLIC—–>C:\Users\Public
NUMBER_OF_PROCESSORS—–>4 windir—–>C:\WINDOWS null Windows 8.1
该程序运行结束后还会在当前路径下生成一个props.txt文件,记录当前平台所有系统属性。
System类提供了通知系统进行垃圾回收的gc()方法,以及通知系统进行资源清理的runFinalization()方法。
System类还有两个获取当前时间的方法
System类还提供一个identityHashCode(Object x )方法,该方法返回指定对象的精确hashCode值。当某个类的hashCode()方法被重写后,该类实例的hashCode()方法不能唯一的标识该对象。如果两个类的identityHashCode值相同,则两个对象绝对是同一个对象。
package code;
public class IdentityHashCodeTest{
public static void main(String [] args){
String str1 = new String("java");
String str2 = new String("java");
System.out.println(str1.hashCode() + "------------" + str2.hashCode());
System.out.println(System.identityHashCode(str1) + "--------------" +System.identityHashCode(str2));
String str3 = "Java";
String str4 = "Java";
System.out.println(str3.hashCode() + "------------" + str4.hashCode());
System.out.println(System.identityHashCode(str3) + "--------------" +System.identityHashCode(str4));
}
}
3254818————3254818
366712642————–1829164700
2301506————2301506
2018699554————–2018699554
因为identityHashCode值是根据对象的地址计算得到的,所以任何两个对象的identityHashCode值总是不一样。
Runtime类代表了Java程序的运行时环境,每个Java程序都有一个与之对应的Runtime实例,应用程序通过该对象与运行时环境相连。可以访问Java程序运行时的环境,访问JVM的相关信息,如处理器数量等
应用程序不能自己创建,但可以通过getRuntime()方法获取
同样与System类提供gc()、runFinalization()方法来通知系统进行垃圾回收,清理系统资源,并且提供load(String filename)和loadLibrary(String libname)方法来加载文件和动态链接库
package code;
public class RuntimeTest{
public static void main(String []args){
Runtime rt = Runtime.getRuntime();
System.out.println("处理器数量" + rt.availableProcessors());
System.out.println("可用内存" + rt.freeMemory());
System.out.println("总内存数" + rt.totalMemory());
System.out.println("可用最大内存数" + rt.maxMemory());
}
}
处理器数量4
可用内存60763984
总内存数62390272
可用最大内存数922746880
除此以外Runtime还可以直接单独启动一个进程来运行操作系统的命令
package code;
public class ExecTest{
public static void main(String[] args)throws Exception{
Runtime rt = Runtime.getRuntime();
rt.exec("notepad.exe");
}
}
以上程序将启动系统的“记事本”程序。
原文地址:http://blog.csdn.net/u014270902/article/details/44019685