Java的常用类—System类和Runtime类

Java的常用类—System类和Runtime类

开发工具与关键技术:工具:myeclipse  技术: System、Runtime
作者:吴东梅
撰写时间:2019-05-31

System类
System类代表当前Java程序的运行平台,程序不能创建System类的对象,System类提供了一些类变量和类方法,允许直接通过System类来调用这些类变量和类方法。它不能被实例化。
System.out 标准输出
System.err 错误输出
System.in 标准输入
用下面的方法输入,输入的如果是中文,输出的便是乱码,如下图所示:
在这里插入图片描述
所以下面就是对上面方法的改良,这样的方法输入中文后输出的也是中文,不会再是乱码了,如下所示:
在这里插入图片描述
System类有如下几种常用的方法:
(1)getenv() 返回一个不能修改的当前系统环境的字符串映射视图。
(2)getenv(String name) 获取指定的环境变量值。
(3)getProperties()确定当前的系统属性。
(4)getProperty(String key) 获取指定键指示的系统属性。
(5)gc()运行垃圾回收器。
如下所示,就是对上面五种方法的应用和执行的结果。
代码:
System.out.println("----系统所有的环境变量--------");
//获取系统所有的环境变量
Map<String, String> map = System.getenv();
//遍历输出
Set keySet = map.keySet();
for (String key : keySet) {
System.out.println(key+"------->"+map.get(key));
}
//获取具体的某个环境变量
System.out.println("----获取指定的系统变量 JAVA_HOME--------");
System.out.println(System.getenv(“JAVA_HOME”));
//获取系统属性
System.out.println("-----getProperties----");
System.out.println(System.getProperties());
System.out.println("-----getProperty 获取系统具体的user.name----");
System.out.println(System.getProperty(“user.name”));
//System.gc(); 垃圾回收机制
//gc() 函数的作用只是提醒虚拟机:希望进行一次垃圾回收。
//但是它不能保证垃圾回收一定会进行,而且具体什么时候进行是取决于具体的虚拟机的,不同的虚拟机有不同的对策。
System.gc();
效果图:
在这里插入图片描述
(6)currentTimeMillis()返回以毫秒为单位的当前时间。
(7)nanoTime()返回最准确的可用系统计时器的当前值,以毫微秒为单位。
如下图所示就是上面两种常用方法的应用:
System.out.println("-------currentTime 和 nanoTime------------");
//返回当前时间与UTC 1970年1月1日午夜的时间差
System.out.println(System.currentTimeMillis());
//currentTimeMillis 毫秒为单位 1毫秒(ms)=1000000纳秒(ns)
//nanoTime 纳秒为单位,部分操作系统不支持使用纳秒作为计时单位。
System.out.println(System.nanoTime());
System.out.println("--------系统的运行速度---------");
for (int i = 0; i < 10; i++) {
System.out.println(System.currentTimeMillis()+"<>"+System.nanoTime());
}
(8)identityHashCode(Object x) 返回给定对象的哈希码,该代码与默认的方法 hashCode() 返回的代码一样,无论给定对象的类是否重写 hashCode()。
(9)exit(int status) 终止当前正在运行的 Java 虚拟机。
如下所示:就是上面两种方法的应用及执行后的结果:
代码:
System.out.println("-----------identityHashCode--------------");
//下面程序中str1和str2是两个不同的对象
String str1 = new String(“Hello,World”);
String str2 = new String(“Hello,World”);
//String 重写了hashCode()方法——改为根据字符序列计算hashCode值,
//因为str1和str2的字符序列相同,所以它们的hashCode方法返回值相同
System.out.println(str1.hashCode()+"\t"+str2.hashCode());
//str1和str2是不同的字符串对象,所以它们的identityHashCode值 不同
System.out.println(System.identityHashCode(str1)+"\t"+System.identityHashCode(str2));
String str3 = “Java”; //字符串常量池
String str4 = “Java”;
//因为str3和str4的字符序列相同,所以它们的hashCode方法返回值相同
System.out.println(str3.hashCode()+"\t"+str4.hashCode());
//str3和str4是相同的字符串对象,所以它们的identityHashCode值相同
System.out.println(System.identityHashCode(str3)+"\t"+System.identityHashCode(str4));
//exit 停止正在运行的虚拟机,退出程序
System.exit(0); //正常退出
System.out.println(“这一句将不会打印出来,因为没有执行”);
执行后的结果:
在这里插入图片描述
Runtime类
Runtime类代表Java程序的运行时环境,可以访问JVM的相关信息,每个Java程序都有一个与之对应的Runtime实例,应用程序通过该对象与其运行时环境相连。应用程序不能创建自己的Runtime实例,但可以通过getRuntime()方法获取与之关联的Runtime对象。
 Runtime类 是饿汉式单例类,如下图所示:
在这里插入图片描述
Runtime类有如下几种常用方法:
(1) availableProcessors() 向 Java 虚拟机返回可用处理器的数目。
(2) freeMemory() 返回 Java 虚拟机中的空闲内存量。
(3) totalMemory() 返回 Java 虚拟机中的内存总量。
(4) maxMemory() 返回 Java 虚拟机试图使用的最大内存量。
(5) gc()运行垃圾回收器。
(6) exit(int status) 通过启动虚拟机的关闭序列,终止当前正在运行的 Java 虚拟机。
(7) halt(int status) 强行终止目前正在运行的 Java 虚拟机。
如下所示,就是上面提及到的常用方法的应用及执行之后的效果图:
代码:
//Runtime类是饿汉式单例类
//获取Java程序关联的运行时对象
Runtime rt = Runtime.getRuntime();
System.out.println(“处理器数量:”+rt.availableProcessors());
System.out.println(“JVM空闲内存数:”+rt.freeMemory() / 1024 / 1024);
System.out.println(“JVM总内存数:”+rt.totalMemory() / 1024 / 1024);
System.out.println(“JVM试图使用的最大内存:”+rt.maxMemory() /1024 /1024);
//运行外部程序
try {
rt.exec(“notepad.exe”); //运行时启动notepad.exe 这个应用程序
} catch (Exception e) {
e.printStackTrace();
}
//运行时垃圾回收
//System.gc();内部也使用这个方法Runtime.getRuntime().gc();
rt.gc();
//退出
// rt.exit(0);//正常退出
rt.halt(0); //强制退出
System.out.println(“exit”);
效果图:
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值