概述
在 JAVA入门深究之sysout中我们深究了System.out.println,关于System类,可能这个类方法用的最多就是sout以及System.currentTimeMillis(),下面我们在研究一下这个类其他相对重要方法。
常用方法
arraycopy 数组拷贝
/**
@param src 源数组
@param srcPos 源数组中的起始位置。
@param dest 目标数组。
@param destPos 在目标数据中的起始位置。
@param length 要复制的数组元素的数量。
@exception IndexOutOfBoundsException 如果复制会导致在数组范围之外访问数据。
@exception ArrayStoreException 类型不匹配是,必须是数组类型
@exception NullPointerException
*/
public static native void arraycopy(Object src, int srcPos,
Object dest, int destPos,
int length);
示例:
int[] arr1 = { 6, 7, 8, 2, 4 };
int[] arr2 = { 3, 4,5, 8, 9 };
System.arraycopy(arr1, 1, arr2, 1, 3);
arr1[3] = 8;
for (int i = 0; i < 5; i++) {
System.out.print(arr2[i] + " ");
}
// 3 7 8 2 9
gc垃圾回收
用于运行jvm中的垃圾回收器,完成内存中垃圾清除
class Demo {
/**
* 垃圾回收器准备释放内存的时候,会先调用finalize()
*/
@Override
public void finalize() {
System.out.println("gc is comming!!!");
}
}
public class HelloWorld {
public static void main(String[] args) {
new Demo();
System.gc();
}
}
getProperties()获取系统属性
Properties properties = System.getProperties();
for (String key : properties.stringPropertyNames()) {
System.out.println(key + "=" + properties.getProperty(key));
}
//打印可参考最下方表格
当然可以通过System.getProperty(key)获取指定键值
String oName = System.getProperty("os.name");
System.out.println(oName);//Windows 10
System.setProperty(key,value) 可以设置键值对
System.setProperties(properties) 可以设置Properties对象
System.clearProperty(key) 根据key删除property
getSecurityManager()安全管理器
jvm运行到未知java程序时,为了防止恶意代码对系统影响,需要对运行代码权限进行控制,这样就要启用Java安全管理器
使用安全管理器,您可以控制对:
- 文件操作
- 反射设施
- 读/写IO
- 线程/线程组操作
- 套接字操作(监听,接受等)
- 创建您自己的类加载器的能力。
对于每一个这样的事情,SecurityManager中都有一个check *()方法
自定义 securityManager
private static class MySecurityManager extends SecurityManager {
@Override
public void checkRead(String file) {
if ("java".contains(file)) {
throw new AccessControlException("cannot read file:" + file);
}
super.checkRead(file);
}
}
public static void main(String[] args) throws FileNotFoundException {
//install
System.setSecurityManager(new MySecurityManager());
//read
InputStream in = new FileInputStream(new File("Hello.java"));
//uninstall
SecurityManager sm = System.getSecurityManager();
if (sm != null) {
System.setSecurityManager(null);
}
}
System.setout重定向输出
以下代码会将打印内容输出到txt文本中
PrintStream pStream = new PrintStream("F:/hcx.txt");
pStream.println("666666666666");
System.setOut(pStream);
System.out.println("88888888")
//hcx.txt内容
//666666666666
//88888888
小结
System还有很多方法没有列出来,不过日常使用已足够了,希望看完有所获。如有错误,请指正,谢谢
参考
System.properties参考值:
建 | 值 | 描述 |
---|---|---|
java.runtime.name | Java(TM) SE Runtime Environment | |
sun.boot.library.path | C:\Program Files\Java\jdk1.8.0_231\jre\bin | |
java.vm.version | 25.231-b11 | Java虚拟机实现版本 |
java.vm.vendor | Oracle Corporation | Java 虚拟机实现供应商 |
java.vendor.url | http://java.oracle.com/ | Java 供应商的URL |
path.separator | ; | 路径分隔符(在UNIX系统中是“:”) |
java.vm.name | Java HotSpot(TM) 64-Bit Server VM | |
file.encoding.pkg | sun.io | |
user.country | CN | 国家 |
sun.java.launcher | SUN_STANDARD | |
java.vm.specification.name | Java Virtual Machine Specification | Java虚拟机规范名称 |
user.dir | D:\chrome download\dubbo-admin-develop\docker-file-springboot | 用户当前工作目录 |
java.runtime.version | 1.8.0_231-b11 | jdk版本 |
java.awt.graphicsenv | sun.awt.Win32GraphicsEnvironment | |
java.endorsed.dirs | C:\Program Files\Java\jdk1.8.0_231\jre\lib\endorsed | endorsed目录 |
os.arch | amd64 | 操作系统的架构 |
java.io.tmpdir | C:\Users\12640\AppData\Local\Temp\ | io操作历史文件 |
java.vm.specification.vendor | Oracle Corporation | |
os.name | Windows 10 | 系统版本 |
sun.jnu.encoding | GBK | |
java.library.path | C:\Program Files\Java\jdk1.8.0_231\bin;C:\windows\Sun ........ | |
java.specification.name | Java Platform API Specification | Java运行时环境规范名称 |
java.class.version | 52.0 | Java类格式版本号 |
sun.management.compiler | HotSpot 64-Bit Tiered Compilers | |
os.version | 10.0 | |
java.awt.printerjob | sun.awt.windows.WPrinterJob | |
file.encoding | UTF-8 | |
java.specification.version | 1.8 | |
user.name | 12640 | 用户的账户名称 |
java.class.path | C:\Program Files\Java\jdk1.8.0 ...... | |
java.vm.specification.version | 1.8 | java虚拟机规范版本 |
sun.arch.data.model | 64 | |
java.home | C:\Program Files\Java\jdk1.8.0_231\jre | Java安装目录 |
sun.java.command | com.example.HelloWorld 12 | |
java.specification.vendor | Oracle Corporation | |
user.language | zh | 用户语言 |
awt.toolkit | sun.awt.windows.WToolkit | |
java.vm.info | mixed mode | 混合模式执行 |
java.version | 1.8.0_231 | |
java.ext.dirs | C:\Program Files\Java\jdk1.8.0_231\jre\lib\ext;C:\windows\Sun\Java\lib\ext | |
sun.boot.class.path | C:\Program Files\Java\jdk1.8.0_231\jre ..... | |
java.vendor | Oracle Corporation | |
java.vendor.url.bug | http://bugreport.sun.com/bugr... | |
sun.cpu.endian | little | |
sun.io.unicode.encoding | UnicodeLittle | |
sun.desktop | windows | |
sun.cpu.isalist | amd64 |
微信公众号【Java搬砖小伙子】关注一波,更多资源等着你哦
您的支持是我前进路上最大的动力,谢谢!