前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >System类、Runtime类、Robot类

System类、Runtime类、Robot类

作者头像
端碗吹水
发布2020-09-23 10:32:07
6020
发布2020-09-23 10:32:07
举报
文章被收录于专栏:程序猿的大杂烩

System类:

System类主要是用来操作、获得系统相关的一些东西,例如之前用到的获取系统时间的方法System.currentTimeMillis();

8a4764a9e3acfedff14d397ca21feb9f.png
8a4764a9e3acfedff14d397ca21feb9f.png

运行结果:

eccf4c4c9f9d29b934545ba71634a29c.png
eccf4c4c9f9d29b934545ba71634a29c.png

getenv();方法:

  使用getenv方法可以得到jdk在环境变量的路径,还有classpath、java_home等等路径方面的信息。例如:

1cc7a43415f3101b0dd75bbbc5a0bba9.png
1cc7a43415f3101b0dd75bbbc5a0bba9.png

运行结果:

c8542465bf8fdf48599a534364bee0de.png
c8542465bf8fdf48599a534364bee0de.png

getProperties();方法:

使用getProperties();方法可以获得JDK的各方面信息。例如版本号,所属公司,JVM等等信息。

例如:

6e7c3ddf09987c86c47df28e705d89b9.png
6e7c3ddf09987c86c47df28e705d89b9.png

运行结果:

a9480d944bddebdc945930354a72ffab.png
a9480d944bddebdc945930354a72ffab.png

不过这样获得打印出来的方式比较乱不够直观,所以可以使用Set集合将需要的类型以集合的类型保存到变量中,然后使用这个变量进行遍历打印出来。

  代码示例:

31ff68c6b80cb048e2178b4760d0ca47.png
31ff68c6b80cb048e2178b4760d0ca47.png
9cf6091801e0d2704f816527ca44504e.png
9cf6091801e0d2704f816527ca44504e.png

System.arraycopy();方法:

System.arraycopy();方法是用来在内存中进行数组拷贝的

System.arraycopy(src, srcPos, dest, destPos, length);

src表示:从哪个数组开始拷贝

srcPos表示:从数组的第几个开始拷贝

dest表示:拷贝到哪个数组

destPos表示:从数组的第几个开始放入

length表示:拷贝多少长度

   代码示例:

5f02b713be2791ce9cfc61e33216349f.png
5f02b713be2791ce9cfc61e33216349f.png

运行结果:

47d6c6272f5db7b57f7ccc392cb9dd3b.png
47d6c6272f5db7b57f7ccc392cb9dd3b.png

从num数组的第0个开始拷贝,拷贝到number数组,从number数组的第0个开始放,拷贝的长度是num数组的长度。

System.gc();

提醒垃圾回收方法。

System.exit();

直接关闭虚拟机方法。

float和double:

  float和double在运算时会遇到的一些问题,就是在运算的时候会丢失精度。例如:

d269e9b2c9f8a739df123c2f5f863876.png
d269e9b2c9f8a739df123c2f5f863876.png

运行结果:

5ec27848857dd854c42273d52b3d0a94.png
5ec27848857dd854c42273d52b3d0a94.png

按理来说本来运行结果应该为1的,但是却损失了一点精度,是因为float和double类型主要是为科学和工程计算而设计的。它们执行的是二进制浮点运算,由于二进制的局限性,有时候无法得到准确的结果,因为在二进制中无法准确的表示10的任何负数次方值。虽然在科学计算中无关紧要,通过四舍五入可以解决问题。但是在禁止出现舍入误差的运算中(例如金融计算)就不适用了。

所以这时候就要使用到BigDecimal类。

BigDecimal类:

BigDecimal类用于解决float和double运算时会丢失精度的问题。但是double在运算次数多的时候还是会有一点点精度不够,float则可以保持精度。

代码示例:

f16eee577231a4c223e33779f9d6f66f.png
f16eee577231a4c223e33779f9d6f66f.png

运行结果:

f7b07d1b109ccece6b6b0b94dcc6d4a3.png
f7b07d1b109ccece6b6b0b94dcc6d4a3.png

BigInteger类:

  BigInteger是一个能够存储很大的整型数字的类,能够存储很多很多的数字,并且不会损失精度。

3d4d285aafc328fe31cbfc99ca6bc365.png
3d4d285aafc328fe31cbfc99ca6bc365.png

运行结果:

428dc890d41baf91654ed9cde9a7dc55.png
428dc890d41baf91654ed9cde9a7dc55.png

Runtime类:

Runtime是用来使应用程序能够与其运行的环境相连接的,使用对象可以访问JVM的相关信息,如处理器数量,内存信息等。并且可以控制终端执行一些系统命令。这个类是一个单例,需要用方法才能得到对象。

例如:

2c67e50ea365eb891f93b3f0fcde0d0c.png
2c67e50ea365eb891f93b3f0fcde0d0c.png

exec();

exec();是比较常用的一个方法,用于控制系统终端执行系统命令。

例如使用系统命令打开一个网页:

1f768cca2a0cd18e972c67dc168165b3.png
1f768cca2a0cd18e972c67dc168165b3.png

运行结果:

3952ec7e606fe7967a576a20e555aa48.png
3952ec7e606fe7967a576a20e555aa48.png

其他的一些方法:

15f6bcc89730bbcc74f856131ab49c24.png
15f6bcc89730bbcc74f856131ab49c24.png

获得Jvm内存信息:

99f7cf8bd5b651ce84c77d84da66f06b.png
99f7cf8bd5b651ce84c77d84da66f06b.png

运行结果:

2dd0147cd2fb70a732e5d158e2428eff.png
2dd0147cd2fb70a732e5d158e2428eff.png

Robot类:

Robot是可以实现自动控制的一个类,例如自动控制鼠标,键盘,截图等功能。

控制键盘:

0237c6226a185e9ce905d65bd2f8e382.png
0237c6226a185e9ce905d65bd2f8e382.png

控制截图:

5cc57f2acd23938908130577c38d27d1.png
5cc57f2acd23938908130577c38d27d1.png

控制鼠标:

cdf11ae9a588f96515e3dcc57577a8b5.png
cdf11ae9a588f96515e3dcc57577a8b5.png
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017/10/26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档