System类常用API
成员变量
| InputStream in 标准输入流 |
| PrintStream out 标准输出流 |
| PrintStream err 标准错误输出流 |
arraycopy()复制数组,浅拷贝
| arraycopy(Object src, 源数组 |
| int srcPos, 源数组要复制的起始位置 |
| Object dest, 目标数组 |
| int destPos, 目标数组起始位置 |
| int length 复制的长度 |
| ) |
| |
| String[] str2Array = {"A","B","C","D","E"}; |
| String[] strArray = {"a","b","c","d","e"}; |
| |
| |
| System.arraycopy(str2Array,1,strArray,2,3); |
| System.out.println(Arrays.toString(str2Array)); |
| System.out.println(Arrays.toString(strArray)); |
| |
| |
| str2Array[3] = "F"; |
| System.out.println(Arrays.toString(str2Array)); |
| System.out.println(Arrays.toString(strArray)); |
| |
| |
| System.arraycopy(str2Array,1,strArray,2,4); |
getProperties()获取系统参数
| java.runtime.name=Java(TM) SE Runtime Environment, |
| sun.boot.library.path=D:\JDK8\jre\bin, |
| java.vm.version=25.301-b09, |
| java.vm.vendor=Oracle Corporation |
| ... |
getProperty(String key) 获取指定键的系统属性
| System.out.println(System.getProperty("java.vm.name")); |
| System.out.println(System.getProperty("java.home")); |
setProperty(String key, String value) 设置系统属性
| System.setProperty("name","曹丕的老婆进菜园"); |
| System.out.println(System.getProperty("name")); |
setProperties(Properties props) 可以设置多个系统属性
| Properties properties = new Properties(); |
| properties.setProperty("name","就你是歌姬吧"); |
| properties.setProperty("pass","yes"); |
| |
| System.setProperties(properties); |
| |
| System.out.println(System.getProperty("name")); |
| System.out.println(System.getProperty("pass")); |
clearProperty(String key)删除指定的key的属性
| Properties properties = new Properties(); |
| properties.setProperty("name","就你是歌姬吧"); |
| properties.setProperty("pass","yes"); |
| System.setProperties(properties); |
| String name = System.clearProperty("name"); |
| System.out.println(name); |
| System.out.println(System.getProperty("name")); |
| System.out.println(System.getProperty("pass")); |
console()获取控制台,
| Console console = System.console(); |
| |
| System.out.println("we are family"); |
| String str = console.readLine(); |
| System.out.println(str); |
currentTimeMillis()返回当前时间戳
| System.out.println(System.currentTimeMillis()); |
nanoTime()返回当前时间的纳秒数
exit(int status)退出当前虚拟机
| 调用的是RunTime类 |
| Runtime.getRuntime().exit(status); |
| status 为0时表示虚拟机正常退出,非零表示虚拟机是非正常退出 |
gc()调用垃圾回收器
| System.gc();垃圾回收器并不一定立马就工作 |
| 垃圾回收器并不定会调用finalize方法,来释放内存。有可能造成用户线程暂停。 |
runFinalization()
参考:finalize()、gc()、runFinalization()方法说明 - Matrixin - 博客园 (cnblogs.com)
System.getenv()获取系统环境
| public static java.util.Map<String,String> getenv() |
| USERDOMAIN_ROAMINGPROFILE=DESKTOP-F861F7I, |
| LOCALAPPDATA=C:\Users\hxfgs\AppData\Local, |
| PROCESSOR_LEVEL=6, |
| USERDOMAIN=DESKTOP-F861F7I, |
| ... |
| -------- |
| getenv(String key) 获取指定key的环境 |
| System.out.println(System.getenv("USERDOMAIN")); |
identityHashCode(obj)无论obj是否覆盖hashcode方法都将调用默认的hashcode方法返回hashcode值
| fastJson中的IdentityHashMap类的get方法为获取key的hash值使用了这个方法 |
lineSeparator()获取当前系统的换行符
| 有些时候'/n'换行在每个系统有可能表示不同的含义,如果使用这个将会可以在每个系统中使用这个函数, |
load(String filename)加载文件
| 用来装载dll文件,可以将dll文件加载到内存中 |
| fileName必须为绝对路径 |
| System.load("D:\\JDK8\\jre\\bin\\server\\jvm.dll"); |
loadLibrary(String libname)加载文件
| 用来装载dll文件,可以将dll文件加载到内存中 |
| libname 为dll文件名,而且改文件必须在System.getProperty("java.library.path"),目录下 |
| System.loadLibrary("jli"); |
详细可以见:System.load()与System.loadLibrary() - i野老i - 博客园 (cnblogs.com)
mapLibraryName(String libname) 将库名称映射到表示本机库的特定于平台的字符串
| System.out.println(System.getProperty("os.name")); |
| String s = System.mapLibraryName("os.name"); |
| System.out.println(s); |
可以看这个:一起学JDK源码 -- System类 - 简书 (jianshu.com)
setOut()、setIn()、setErr()
| 分别是给:System.out |
| System.in |
| System.err 重新赋值 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具