美文网首页Android基础Java 基础
Java 常用类 10. Java System类

Java 常用类 10. Java System类

作者: yjtuuige | 来源:发表于2021-12-19 08:02 被阅读0次

简介:

  • 主要用于获取系统的属性数据和其他操作,构造方法(私有的)
  • 实际上 System 类是一些与系统相关属性和方法的集合,而且在System 类中所有的属性,都是静态的,要想引用这些属性和方法,直接使用 System 类调用即可。

常用方法:

方法名 说明
static void arraycopy(...); 复制数组
static long currentTimeMillis(); 获取当前系统时间,返回毫秒值 (常用来计算一个程序执行时间)
static void gc(); 建议 jvm 赶快启动垃圾回收期器回收垃圾
static void exit(int status); 退出 jvm 如果参数是 0 表示正常退出 jvm 非 0 表示异常退出
getProperties(); 确定当前的系统属性。
getProperty(String key); 获取系统某一属性。key - 系统属性的名称。
  • 可以使用的 key 及其相关的描述。
相关值的描述
java.version Java 运行时环境版本
java.vendor Java 运行时环境供应商
java.vendor.url Java 供应商的 URL
java.home Java 安装目录
java.vm.specification.version Java 虚拟机规范版本
java.vm.specification.vendor Java 虚拟机规范供应商
java.vm.specification.name Java 虚拟机规范名称
java.vm.version Java 虚拟机实现版本
java.vm.vendor Java 虚拟机实现供应商
java.vm.name Java 虚拟机实现名称
java.specification.version Java 运行时环境规范版本
java.specification.vendor Java 运行时环境规范供应商
java.specification.name Java 运行时环境规范名称
java.class.version Java 类格式版本号
java.class.path Java 类路径
java.library.path 加载库时搜索的路径列表
java.io.tmpdir 默认的临时文件路径
java.compiler 要使用的 JIT 编译器的名称
java.ext.dirs 一个或多个扩展目录的路径
os.name 操作系统的名称
os.arch 操作系统的架构
os.version 操作系统的版本
file.separator 文件分隔符(在 UNIX 系统中是“/”)
path.separator 路径分隔符(在 UNIX 系统中是“:”)
line.separator 行分隔符(在 UNIX 系统中是“/n”)
user.name 用户的账户名称
user.home 用户的主目录
user.dir 用户的当前工作目录
  • 实例 1:System.arraycopy(src, srcPos, dest, destPos, length);
package com.base.demo05;

import java.util.Arrays;

public class Demo07 {
    public static void main(String[] args) {
        // 1.arraycopy(src, srcPos, dest, destPos, length)
        /*
        src-原数组
        srcPos-从哪个位置开始复制0
        dest-目标数组
        destPos-目标数组的位置
        length-复制的长度
        */
        // 原数组
        int[] arr = {12, 6, 30, 18, 22, 55, 98, 3, 36};
        // 目标数组
        int[] dest = new int[9];
        // Arrays.copyOf(original, newLength); 实际调用 System.arraycopy();
        System.arraycopy(arr, 0, dest, 0, arr.length);  // 本地方法,效率高

        for (int i = 0; i < dest.length; i++) {
            System.out.println(dest[i]);
        }
    }
}
  • 实例 2:
package com.base.demo05;

public class Demo08 {
    public static void main(String[] args) {
        // 开始时间
        long begin = System.currentTimeMillis();
        int sum = 0;
        for (int i = 0; i < 100000; i++) {
            sum += i;
        }
        // 结束时间
        long end = System.currentTimeMillis();
        // 循环所用时间
        System.out.println("用时:" + (end - begin) + "ms");
        // 获取本机操作系统
        System.out.println("操作系统的名称:" + System.getProperty("os.name"));
        // 获取本机的全部环境属性
        System.out.println(System.getProperties());
    }
}

垃圾对象的回收

  • Java 中用垃圾的自动收集机制,可以不定期地释放 Java 中的垃圾空间。在 System 类中有一个 System.gc(); 方法,此方法可以进行垃圾的收集。

什么是垃圾对象?

  • 一个对象,如果不再被任何栈内存所引用,那么此对象就可以称为垃圾对象,等待被回收。实际上,等待的时间是不确定的,所以直接调用System.gc(); 方法进行垃圾的回收。
  • 提示:开发中的垃圾收集,基本上都是由系统自动完成的,除非特殊情况,一般很少直接去调用 System.gc(); 方法。
  • 实例:
package com.base.demo05;

public class Demo10 {
    public static void main(String[] args) {
        Student a = new Student("xiaoming", 10);
        // 断开引用释放空间
        a = null;
        // 直接new,没用引用
        new Student("lihua", 11);
        // 进行垃圾回收
        System.gc();
        // 退出 JVM
        System.exit(0);
         // 已经退出 JVM,不会被执行
        System.out.println("程序结束了!");
    }

    static class Student {
        private String name;
        private int age;

        public Student(String name, int age) {
            this.name = name;
            this.age = age;
        }

        public String toString() {
            return "姓名:" + name + " 年龄:" + age;
        }
        // 对象释放空间时默认调用此方法
        // finalize() Java 8 以后弃用
        public void finalize() throws Throwable {
            // 直接打印对象调用toString
            System.out.println("对象被释放:" + this);
        }
    }
}
  • 运行结果

总结

  • 在 System 类中的 currentTimeMillis(); 方法,常用来计算一个程序执行的时间,非常实用。
  • 通过 System 类中的 getProperties(); 方法,不仅可以获取用户工作目录,还可以获取系统用户名。
  • 关于 System.gc(); 方法,不是调用这个方法,就一定会回收对象,具体还是由 JVM 确认(要判断是否为垃圾对象,如果不是垃圾对象,即使调用,也不会回收的)

相关文章

  • Java 常用类 10. Java System类

    简介: 主要用于获取系统的属性数据和其他操作,构造方法(私有的) 实际上 System 类是一些与系统相关属性和方...

  • 2020-08-24--Java--day01【常用API】

    主要内容 System类 StringBuilder类 包装类 1.System类 java.lang.Syste...

  • java常用类之System

    System是一个类,这个System类主要是一些与系统相关的属性和方法的集合,而且其内部的方法全部是静态的,所以...

  • Java常用类库-System

    System提供了一系列静态方法和变量。System类提供了标准输入、输出和错误输出流;访问外部定义的属性和环境变...

  • java-System & Runtime

    System类 System类介绍   System类代表Java程序运行平台,程序不能创建该对象,但是Syste...

  • 04-类库

    Java API Object类 Class类 System类 封装类 Integer类 Character类 S...

  • Java System类

    System 类 获取系统属性 1.1 私有构造方法 1.2 System.out.println() 3 个类变...

  • 20170704 Java常用类System类和Runtime类

    参考文献:《Java疯狂讲义》(第三版) Oracel为Java提供了丰富的基础类库,Java8提供了4000多个...

  • Java常用包和第三方jar包

    一、Java常用包 java.lang--语言包:Java语言的基础类,包括Object类、Thread类、Str...

  • java中的system类

    System作为系统类,在JDK的java.lang包中,可见它也是一种java的核心语言特性。System类的构...

网友评论

    本文标题:Java 常用类 10. Java System类

    本文链接:https://www.haomeiwen.com/subject/sdgefrtx.html