乐趣区

关于java:JAVA入门深究之System类

概述

在 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 平安管理器

应用平安管理器,您能够管制对:

  1. 文件操作
  2. 反射设施
  3. 读 / 写 IO
  4. 线程 / 线程组操作
  5. 套接字操作(监听,承受等)
  6. 创立您本人的类加载器的能力。

对于每一个这样的事件,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 搬砖小伙子】关注一波,更多资源等着你哦
您的反对是我后退路上最大的能源,谢谢!

退出移动版