System类(getProperties()方法,currentTimeMills()方法),Runtime类(exec()方法)

System类

getProperties()方法

  • System类的getProperties()方法用于获取当前系统的全部属性,该方法会返回一个Properties对象,其中封装了系统的所有属性,这些属性都是以键值对的形式存在的
  • 方法全名:static Properties getProperties()
package com.sgl;

import java.util.Properties;
import java.util.Set;

public class Test {
    public static void main(String[] args) {
        //获取当前系统属性
        Properties properties = System.getProperties();
        System.out.println(properties);

        //获取所有系统的key(属性名),返回Set对象
        Set<String> peopertyNames = properties.stringPropertyNames();
        for (String key : peopertyNames) {
            //获取当前见key(属性名)所对应的值(属性值)
            String value = System.getProperty(key);
            System.out.println(key+"---->"+ value);

        }
        
    }
}

/*
代码简述:
首先通过System的getProperties()方法获取封装系统了系统的Properties集合,然后对Properties集合进行迭代,将系统所有的键以及对应的值打出来
*/

运行结果:

//运行结果复制部分
java.runtime.name---->Java(TM) SE Runtime Environment
sun.boot.library.path---->F:\environment\java\jdk1.8\jre\bin
java.vm.version---->25.301-b09                                    //JVM版本号java.vm.version---->25.301-b09
java.vm.vendor---->Oracle Corporation
java.vendor.url---->http://java.oracle.com/
path.separator---->;
java.vm.name---->Java HotSpot(TM) 64-Bit Server VM
file.encoding.pkg---->sun.io
user.script---->
user.country---->CN                                             //用户国家user.country---->CN 
sun.java.launcher---->SUN_STANDARD
sun.os.patch.level---->
java.vm.specification.name---->Java Virtual Machine Specification
user.dir---->E:\Idea\JavaSE
java.runtime.version---->1.8.0_301-b09
java.awt.graphicsenv---->sun.awt.Win32GraphicsEnvironment
java.endorsed.dirs---->F:\environment\java\jdk1.8\jre\lib\endorsed
os.arch---->amd64                                                     //操作系统架构os.arch---->amd64 
java.io.tmpdir---->C:\Users\shiga\AppData\Local\Temp\
line.separator---->

java.vm.specification.vendor---->Oracle Corporation
user.variant---->
os.name---->Windows 10                               //操作系统名称os.name---->Windows 10  
sun.jnu.encoding---->GBK
java.library.path---->F:\environment\java\jdk1.8\bin;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;F:\environment\java\jdk1.8\bin;F:\environment\java\jdk1.8\jre\bin;C:\Users\shiga\AppData\Local\Microsoft\WindowsApps;E:\Bandizip\;.
java.specification.name---->Java Platform API Specification
java.class.version---->52.0
sun.management.compiler---->HotSpot 64-Bit Tiered Compilers
os.version---->10.0
user.home---->C:\Users\shiga
user.timezone---->
java.awt.printerjob---->sun.awt.windows.WPrinterJob
file.encoding---->UTF-8
java.specification.version---->1.8
user.name---->shiga
java.class.path----
java.vm.specification.version---->1.8
sun.arch.data.model---->64
java.home---->F:\environment\java\jdk1.8\jre
sun.java.command---->com.sgl.Test
java.specification.vendor---->Oracle Corporation
user.language---->zh
awt.toolkit---->sun.awt.windows.WToolkit
java.vm.info---->mixed mode
java.version---->1.8.0_301
java.ext.dirs---->F:\environment\java\jdk1.8\jre\lib\ext;C:\WINDOWS\Sun\Java\lib\ext
sun.boot.class.path---->F:\environment\java\jdk1.8\jre\lib\resources.jar;F:\environment\java\jdk1.8\jre\lib\rt.jar;F:\environment\java\jdk1.8\jre\lib\sunrsasign.jar;F:\environment\java\jdk1.8\jre\lib\jsse.jar;F:\environment\java\jdk1.8\jre\lib\jce.jar;F:\environment\java\jdk1.8\jre\lib\charsets.jar;F:\environment\java\jdk1.8\jre\lib\jfr.jar;F:\environment\java\jdk1.8\jre\classes
java.vendor---->Oracle Corporation
file.separator---->\
java.vendor.url.bug---->http://bugreport.sun.com/bugreport/
sun.cpu.endian---->little
sun.io.unicode.encoding---->UnicodeLittle
sun.desktop---->windows
sun.cpu.isalist---->amd64

Process finished with exit code 0

currentTimeMills()方法

  • currentTimeMills()方法返回一个long类型的值,该值表示当前时间与1970年1月1日0点0时0分0秒之间的时间差,单位毫秒,通常也称作时间戳
package com.sgl;

public class Test {
    public static void main(String[] args) {
        long startTime = System.currentTimeMillis(); //循环开始时的当前时间
        int sum = 0;
        for (int i = 0; i < 100000000; i++) {
            sum = sum+i;
        }
        long endTime = System.currentTimeMillis();  //循环结束时的当前时间
        System.out.println("程序运行时间为:"+(endTime - startTime)+"毫秒");  //程序运行时间为:28毫秒
        //由于处理器性能等原因,程序运行时间也会有所不同
    }
}

演示数字求和操作,程序在求和开始和结束时,分别调用了currentTimeMills()方法获得了两个时间戳,两个时间戳之间的差值便是求和操作耗费的时间;

arraycopy(Object src,int srcPos,Object dest,int destPos,int length)方法

  • arraycopy()方法是将一个数组中的元素快速拷贝到另一个数组
  • src:表示源数组
  • dest:表示目标数组
  • srcPos:表示源数组中拷贝元素的起始位置
  • destPos:表示拷贝到目标数组的其实位置
  • length:表示拷贝元素的个数

注意:

  • 在进行数组拷贝时,目标数组必须有足够的空间来放拷贝的元素,否则会发生角标越界异常
  • 保证源数组元素类型与目标数组元素类型一样,否则程序会出现ArrayStoreException异常
package com.sgl;

public class Test {
    public static void main(String[] args) {
        long startTime = System.currentTimeMillis(); //循环开始时的当前时间

        int[] scrArray = new int[]{101,102,103,104,105,106};//源数组
        int[] destArray = new int[]{201,202,203,204,205}; //目标数组

        System.arraycopy(scrArray,2,destArray,0,4);
        //打印目标数组的元素
        for (int i = 0; i < destArray.length; i++) {
            System.out.println(i+":"+destArray[i]);
        }

        long endTime = System.currentTimeMillis();  //循环结束时的当前时间
        System.out.println("程序运行时间为:"+(endTime - startTime)+"毫秒");  //程序运行时间为:28毫秒   值不确定
    }
}

Runtime类

  • Runtime类用于表示Java虚拟机运行时的状态,它用于封装Java虚拟机进程
  • 启动Java虚拟机时都会对应一个Runtime实例,并且只有一个实例
  • 应用程序不能创建自己的Runtime实例,通过getRuntime()方法获取与之相关的Runtime对象

获取方式如下:

Runtime run = Runtime.getRuntime();
  • 由于Runtime类封装了Java虚拟机,因此可以通过该类的实例对象来获取当前虚拟机的相关信息
package com.sgl;

public class Test {
    public static void main(String[] args) {
        long startTime = System.currentTimeMillis(); //循环开始时的当前时间

        Runtime rt = Runtime.getRuntime();
        System.out.println("处理器的个数:"
                                        +rt.availableProcessors()+"个");//处理器的个数:16个
        System.out.println("空闲内存大小:"
                                        +rt.freeMemory()+"M");//空闲内存大小:244317232M
        System.out.println("最大可用内存空间:"
                                           +rt.maxMemory()+"M");//最大可用内存空间:3679977472M

        long endTime = System.currentTimeMillis();  //循环结束时的当前时间
        System.out.println("程序运行时间为:"+(endTime - startTime)+"毫秒");  //程序运行时间为:28毫秒   值不确定
    }
}

/*简述:
通过Runtime().getRuntime()方法创建一个Runtime的实例对象,分别调用该对象的availableProcessors(),freeMemory(),和
maxMemory()方法,将当前虚拟机的个数,空间内存数和可用最大空间的信息打印出来
*/

exec()方法

  • 调用Runtime对象的exec()方法,并将系统命名”notepad.exe“作为参数传递给方法。运行时会打开一个记事本,可通过任务管理器进行观察

代码和运行结果:

package com.sgl;


public class Test {
    public static void main(String[] args) {
        long startTime = System.currentTimeMillis(); //循环开始时的当前时间

        Runtime rt = Runtime.getRuntime();
        rt.exec("notepad.exe");  //调用exec()方法

        long endTime = System.currentTimeMillis();  //循环结束时的当前时间
        System.out.println("程序运行时间为:"+(endTime - startTime)+"毫秒");  //程序运行时间为:28毫秒   值不确定
    }
}

在这里插入图片描述

在这里插入图片描述

Runtime()类的exec()方法会返回一个Process对象,该对象表示操作系统的一个进程,此处为notepad.exe进程,通过Process对象可以对产生新进程进行管理,如关闭进程,只需调用destory()方法,如下:

打开记事本后3秒后自动关闭功能

package com.sgl;


public class Test {
    public static void main(String[] args) {
        long startTime = System.currentTimeMillis(); //循环开始时的当前时间

        //创建一个Runtime的实例对象
        Runtime rt = Runtime.getRuntime();

        //rt.exec("notepad.exe");  //调用exec()方法
        //得到表示进程的Process对象
        Process process = rt.exec("notepad.exe");
        //程序休眠5秒
        Thread.sleep(5000);     //在多线程进行详细讲解

        //关闭程序
        process.destroy();

        long endTime = System.currentTimeMillis();  //循环结束时的当前时间
        System.out.println("程序运行时间为:"+(endTime - startTime)+"毫秒");  //程序运行时间为:28毫秒   值不确定
    }
}

效果自己测

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

等慢慢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值