java源码阅读System
1类签名与注释
public final class System
System类包含一些有用的类属性和方法。该类不能被实例化,所以其所有属性与方法都是static的。
2标准输入输出流
public final static InputStream in = null; public final static PrintStream out = null;
标准输入输出流会在initializeSystemClass方法中被初始化。
(1)控制台输入输出1
Scanner in = new Scanner(System.in);
System.out.println(in.nextLine());
代码在运行到第1行的时候会等待用户在控制台输入,然后接下来通过out的println方法在控制台输出。
(2)控制台输入输出2
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
try {
String str = in.readLine();
System.out.println(str);
} catch (IOException e) {
e.printStackTrace();
}
3数组复制
public static native void arraycopy(Object src, int srcPos,
Object dest, int destPos,
int length);
arraycopy是一个native方法。作用是将src数组里的值复制到dest数组中去。下面是其详细用法:
int[] a = {0,1,2};
int[] b = {3,4,5};
int[] ab = new int[a.length+b.length]; System.arraycopy(a, 0, ab, 0, a.length);
for(int i:ab){
System.out.print(i+" ");
}
System.out.println(""); System.arraycopy(b, 0, ab, a.length, b.length);
for(int i:ab){
System.out.print(i+" ");
}
输出为
0 1 2 0 0 0
0 1 2 3 4 5
line5表示将数组a从0开始复制到数组ab也是从0开始,复制的长度是a的长度。也就是说ab[0] = a[0] = 0依此类推ab[2] = a[2] = 2。所以第一次复制后ab数组为{0,1,2,0,0,0},前面三位是a复制过来的,后面三个0是其初始化时的默认值。同理,line11也很好理解了。
4其他常用方法
(1)currentTimeMillis
public static native long currentTimeMillis();
该方法的作用是返回当前的计算机时间,时间的表达格式为当前计算机时间和GMT时间(格林威治时间)1970年1月1号0时0分0秒所差的毫秒数。
可以直接把这个方法强制转换成date类型。
long currentTime = System.currentTimeMillis();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy年-MM月dd日-HH时mm分ss秒");
Date date = new Date(currentTime);
System.out.println(formatter.format(date));
输出:2018年-05月08日-09时58分45秒
SimpleDateFormat formatter = new SimpleDateFormat("yyyy年-MM月dd日-HH时mm分ss秒");
Date date = new Date();
System.out.println(formatter.format(date));
上面两段代码某种程度上是一样的,但是我们可以用变量currentTime保存某一刻的时间,然后再格式刷出来。而直接new date只能获取当前时间。
(2)exit
public static void exit(int status) {
Runtime.getRuntime().exit(status);
}
status为0表示正常退出,其他值表示异常退出。可以在异常catch块中System.exit(1)来异常退出。
(3)gc
public static void gc() {
Runtime.getRuntime().gc();
}
该方法会通知jvm进行垃圾回收,但是jvm不一定会马上处理。
(4)runFinalization
public static void runFinalization() {
Runtime.getRuntime().runFinalization();
}
强制调用已经失去引用的对象的finalize方法。
(5)Properties
System类里面包含一套对Properties的操作,包括getProperties与setProperties等。在initializeSystemClass初始化方法中会默认初始化Properties。简单使用方法如下:
//获取当前操作系统
String osName = System.getProperty("os.name");
System.out.println(osName); //添加自己的属性
Properties pro = System.getProperties();
pro.put("ouym", "24");
System.out.println(System.getProperty("ouym"));
完
java源码阅读System的更多相关文章
- Java源码阅读的真实体会(一种学习思路)
Java源码阅读的真实体会(一种学习思路) 刚才在论坛不经意间,看到有关源码阅读的帖子.回想自己前几年,阅读源码那种兴奋和成就感(1),不禁又有一种激动. 源码阅读,我觉得最核心有三点:技术基础+强烈 ...
- Java源码阅读的真实体会(一种学习思路)【转】
Java源码阅读的真实体会(一种学习思路) 刚才在论坛不经意间,看到有关源码阅读的帖子.回想自己前几年,阅读源码那种兴奋和成就感(1),不禁又有一种激动. 源码阅读,我觉得最核心有三点:技术基础+ ...
- 如何阅读Java源码 阅读java的真实体会
刚才在论坛不经意间,看到有关源码阅读的帖子.回想自己前几年,阅读源码那种兴奋和成就感(1),不禁又有一种激动. 源码阅读,我觉得最核心有三点:技术基础+强烈的求知欲+耐心. 说到技术基础,我打个比 ...
- [收藏] Java源码阅读的真实体会
收藏自http://www.iteye.com/topic/1113732 刚才在论坛不经意间,看到有关源码阅读的帖子.回想自己前几年,阅读源码那种兴奋和成就感(1),不禁又有一种激动. 源码阅读,我 ...
- java源码阅读Hashtable
1类签名与注释 public class Hashtable<K,V> extends Dictionary<K,V> implements Map<K,V>, C ...
- Java源码阅读Stack
Stack(栈)实现了一个后进先出(LIFO)的数据结构.该类继承了Vector类,是通过调用父类Vector的方法实现基本操作的. Stack共有以下五个操作: put:将元素压入栈顶. pop:弹 ...
- Java源码阅读ArrayList
1简介 public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAc ...
- Java源码阅读-Integer(基于jdk1.8)
public final class Integer extends Number implements Comparable<Integer> Integer 由final修饰了,所以该 ...
- Java源码阅读顺序
阅读顺序参考链接:https://blog.csdn.net/qq_21033663/article/details/79571506 阅读源码:JDK 8 计划阅读的package: 1.java. ...
随机推荐
- KVM的ept机制
转载:http://ytliu.info/blog/2014/11/24/shi-shang-zui-xiang-xi-de-kvm-mmu-pagejie-gou-he-yong-fa-jie-xi ...
- MSP432P401R时钟入门
拿到msp432的板子差不多一年了,刚刚进行了开机点亮LED工程: 首先是msp432的时钟模块(CS),个人理解msp432最特色的功能应该是超低功耗和高性能的组合.432系列的时钟 ...
- 自动化测试===【转】Robot Framework作者建议如何选择自动化测试框架
原文:http://www.infoq.com/cn/news/2012/06/robot-author-suggest-autotest 软件自动化测试,作为手工测试的替代,越来越受到关注.Pekk ...
- SuSE Linux10.1 网络设置以及和主机通信
SuSE Linux10.1 网络设置以及和主机通信 http://www.cnblogs.com/kevintian/articles/1086994.html 在VMWare上安装好SuSE之后, ...
- 肢解 HTTP 服务器构建
更好阅读请戳 这里 1. 最简单的 http 服务器 // server.js var http = require("http"); http.createServer(func ...
- selenium java读取csv文件 (数据驱动)
javacsv2.1 下载地址:http://sourceforge.net/projects/javacsv/files/ 该链接可以下载java读取csv文件的jar 包.下载之后解压找到对应的. ...
- 深入理解Java的注解(Annotation):注解处理器(3)
如果没有用来读取注解的方法和工作,那么注解也就不会比注释更有用处了.使用注解的过程中,很重要的一部分就是创建于使用注解处理器.Java SE5扩展了反射机制的API,以帮助程序员快速的构造自定义注解处 ...
- Vue cmd命令操作
1.安装node(安装到电脑中,不同项目不需重复安装) 安装nodejs(如果不是在C:则需要配环境变量)2.打开cmd C:创建一个文件夹(名字不要用node) 1.进入该文件夹 2.node -v ...
- Mysql错误:Every derived table must have its own alias
Mysql报错:Every derived table must have its own alias <缺少一个别名> 在子查询中经常会犯的错误 .这个别名其实没啥用途.... ...
- CF 1005C Summarize to the Power of Two 【hash/STL-map】
A sequence a1,a2,-,an is called good if, for each element ai, there exists an element aj (i≠j) such ...