[疯狂Java]基础类库:System(环境变量、系统属性、系统时间、内存地址、垃圾回收)
来源:互联网 发布:2017年淘宝客好做吗 编辑:程序博客网 时间:2024/04/29 16:57
1. System类的主要功能:
1) 从名字上看就是系统,其实System代表了Java程序运行的OS平台;
2) System对象明显不能由程序自己创建,该类的对象只能有JVM自己创建并在后台维护,用户只能调用System的静态工具方法来获取OS平台的相关信息;
3) 由于System代表操作系统,因此通过System获取的信息都是平台的信息,平台与你当前运行的Java程序无关,因此其中的信息都属于静态信息,查看查看就行了;
4) 除了查看平台的信息之外还可以利用System使Java程序和OS进行交互,总结一下System的常用功能:
i. 查看OS的环境变量、系统属性;
ii. 提供标准输入(键盘)、输出(屏幕)、错误输出(屏幕)的基础IO功能;
iii. 垃圾回收:System的gc方法可以强制操作系统回收程序中失效的内存控件;
iv. 获取系统时间:是系统底层的时钟时间(从UTC1970年1月1日0时开始计算的时间);
v. 获取Java对象精确的内存地址;
!!以下介绍的都是System的静态(static)工具方法:
2. 查看OS的环境变量和系统属性:
1) 查看环境变量:
i. Map<String,String> getenv(); // 返回所有的环境变量信息,以键值对的方式保存在map中
ii. String getenv(String name); // 根据指定的环境变量名获得环境变量的值
iii. 示例:
public class Test {public static void main(String[] args) throws FileNotFoundException, IOException {Map<String, String> envs = System.getenv();for (String name: envs.keySet()) {System.out.println(name + " ---> " + envs.get(name));}System.out.println(System.getenv("JAVA_HOME"));}}2) 查看系统属性:
i. 系统属性不仅包含一些OS的信息(用户名、操作同版本等)也包含一些Java程序要经常用到的信息(JVM虚拟机的路径、JVM运行时库的路径等);
ii. 这些系统属性在Java中都被命名为Java类名的风格,比如操作系统名称这一属性的属性名就是os.name,而JVM库路径这一属性名就是java.library.path;
iii. 它们和环境变量一样都是以键值对的形式保存着,你可以将所有系统属性打印到外部文件,可以看到就是Java配置文件的格式,每条属性都是这样的:属性名=属性值
iv. 查看系统属性的方式:
a. 只查看指定的属性:String getProperty(String key); // 指定属性名返回属性值
b. 查看所有属性:Properties getProperties(); // 直接将所有属性集合保存在Properties对象中,然后利用该对象进一步查看
v. 将全部属性导入到外部文件中查看:
a. 想要达到这个目的必须先获得Properties对象,然后用该对象的store方法保存到外部;
b. 原型:void Properties.store(OutputStream out, String comments); // 是Properties的对象方法
c. out指定了导入目的地,comments表示文件的注释信息(就是说明信息);
d. 导出的格式当然是Java配置文件的格式,comments将会出现在整个配置文件的开头(以#打头,表示配置文件的注释信息);
vi. 综合示例:
public class Test {public static void main(String[] args) throws FileNotFoundException, IOException {Properties sysProps = System.getProperties(); // 获得属性集合System.out.println(System.getProperty("os.name")); // 直接获取指定的系统属性System.out.println(sysProps.getProperty("os.name")); // 在属性集合中获取指定属性for (Object key: sysProps.keySet()) { // 程序中遍历String name = (String)key;System.out.println(sysProps.getProperty(name));}sysProps.store(new FileOutputStream("props.txt"), "System Properties"); // 存储到外部文件}}
3. 查看系统时间:
1) 原型:native long currentTimeMillis(); // 可以看到是一个本地C语言调用
2) 返回的是系统时钟时间,单位是毫秒,从UTC 1970年1月1日0时到当前时间的毫秒数,在很多应用中非常常用;
4. 标准流以及重定向:在I/O中详细讲解 -> 链接
5. 得到精确的对象地址:
1) 我们都知道类的hashCode方法在没有覆盖以前是根据地址计算的,但是该方法可以自行覆盖,比如String的该方法就是根据本身字符序列计算的,因此并不能正确反映其地址信息(两个String只要内容相同则hashCode的相同);
2) 但是System的identityHashCode方法可以精确辨认地址,想要纯地址就用该方法:native int identityHashCode(Object x); // 调用JVM内核的C代码获取对象内存的32位地址
6. 垃圾回收:
1)
- [疯狂Java]基础类库:System(环境变量、系统属性、系统时间、内存地址、垃圾回收)
- java gc(垃圾回收系统)详解
- Java系统调优:内存管理与垃圾回收
- Java系统调优:内存管理与垃圾回收
- Java系统调优:内存管理与垃圾回收
- 系统整理java垃圾回收
- java内存---java内存垃圾回收----属性封装-----继承
- java System 常用功能(获取时间,获取系统属性)
- Java内存垃圾回收
- Java基础学习总结(114)——System之系统变量和环境变量
- 疯狂Java之学习笔记(24)-----------垃圾回收机制
- java系统属性 (System.getProperty("xxxx"))
- Java 系统属性 System.getProperty
- Java System Properties 系统属性
- java内存管理机制+垃圾回收机制(*****)
- Java(JVM)内存模型,垃圾回收
- Java基础--Java内存管理与垃圾回收
- Java基础---JVM内存管理以及垃圾回收机制
- IntentService的使用
- 【T_SQL】 基础 续+++
- 移植speex库
- 如何实现球随鼠标移动
- 复制构造函数 与 赋值函数 的区别
- [疯狂Java]基础类库:System(环境变量、系统属性、系统时间、内存地址、垃圾回收)
- c#初学-多线程中lock用法的经典实例
- 深入浅出Mybatis系列(四)---配置详解之typeAliases别名(mybatis源码篇)
- 房地产为何一枝独秀?
- Android模糊处理简单实现毛玻璃效果
- 欢迎使用CSDN-markdown编辑器
- 键盘全局回收--响应者链中横插一脚
- javaの面向对象的总结
- 你刚才在淘宝上买了一件东西【技术普及贴】