1.System类:阅读源码得知:**
Among the facilities provided by the System
class
class contains several useful class fields
- and methods. It cannot be instantiated.
- are standard input, standard output, and error output streams;
- access to externally defined properties and environment
- variables; a means of loading files and libraries; and a utility
- method for quickly copying a portion of an array.**
是不能被实例化的
下面为定义在System类中的成员变量
public final static InputStream in = null;
public final static PrintStream out = null;
public final static PrintStream err = null;
所以对于 System.out.printfn();即可理解了,out为定义的PrintStream字段,而println()为PrintStream 类中的方法。
a.数组拷贝功能。
public static native void arraycopy(Object src, int srcPos,Object dest, int destPos,int length);
五个参数分别对应被复制的数组,被复制的起始位置(包含),复制到的数组,复制到这个数组的起始位置,复制到这个数组的结束位置,如果被复制到的数组中有元素则会被覆盖,如果被复制的数组结束长度小于预期,则只能只能复制一部分,看例子:
class Main
{
public static void main(String[] args)
{
int[] arr1 = {0,1,2,3,4,5,6};
int[] arr2 = {0,0,0,0,0,0,0};
System.arraycopy(arr1,2,arr2,1,4);//4-1 < 5
for(int arr:arr2)
System.out.print(arr + " ");//注意结果
}
}
结果为:0 2 3 4 5 0 0
b.currentTimeMillis():返回毫秒数。可以用于计算代码段运行时间。
public static native long currentTimeMillis();
c.getProperty()获取系统属性
常用属性:
user.name 用户的账户名称
user.home 用户的主目录
user.dir 用户的当前工作目录
d. public static void gc();垃圾回收
e.exit(int status); 如果status为 0 则正常退出,非 0 代表异常退出。
2.Runtime类,代表Java程序的运行时环境,可以访问JVM的相关信息。程序不能自己创建此类对象,下面是对Runtime类的简单应用
class RuntimeTest
{
public static void main(String[] args) throws Exception
{
Runtime r = Runtime.getRuntime();
Process p = r.exec("c:\\windows\\notepad.exe");//打开记事本
Thread.sleep(5000);
r.gc();
long s = r.freeMemory();//返回 Java 虚拟机中的空闲内存量。
long ss = r.maxMemory() ;//返回 Java 虚拟机试图使用的最大内存量
long sss = r.totalMemory(); // 返回 Java 虚拟机中的内存总量。
//以上三者都以字节为单位
// void gc() 运行垃圾回收器
System.out.println(s);
System.out.println("Hello World!");
}
}
3.Date类:阅读JavaAPI发现其构造方法只有两个,其余的都已经过时,不建议使用。Date();
Date(long date);
具体看例子都比较简单
package com.usually;
import java.util.Date;
public class DateTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Date date1 = new Date();//获取当前时间
Date date2 = new Date(10201020097865L);//分配 Date 对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,
//即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数。
System.out.println(date1.before(date2));//测试此日期是否在指定日期之前。
System.out.println(date1.after(date2));//测试此日期是否在指定日期之后。
System.out.println(date1.compareTo(date2));//比较两个日期的顺序。若小于0则date1在date2前,等于0二者相等,大于0 date1在date2之后
System.out.println(date1);
System.out.println(date2);
System.out.println(date1.getTime());//返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
date1.setTime(123456789456L);// 设置此 Date 对象,以表示 1970 年 1 月 1 日 00:00:00 GMT 以后 time 毫秒的时间点。
System.out.println(date1);
}
}
运行结果为:
true
false
-1
Wed Oct 17 21:09:17 CST 2018
Tue Apr 04 16:41:37 CST 2293
1539781757431
Fri Nov 30 05:33:09 CST 1973
4.SimpleDateFormat类:首先先放一张日期和时间模式
日期和时间模式 | 结果 |
---|---|
“yyyy.MM.dd G ‘at’ HH:mm:ss z” | 2001.07.04 AD at 12:08:56 PDT |
“EEE, MMM d, ''yy” | Wed, Jul 4, '01 |
“h:mm a” | 12:08 PM |
“hh ‘o’‘clock’ a, zzzz” | 12 o’clock PM, Pacific Daylight Time |
“K:mm a, z” | 0:08 PM, PDT |
“yyyyy.MMMMM.dd GGG hh:mm aaa” | 02001.July.04 AD 12:08 PM |
“EEE, d MMM yyyy HH:mm:ss Z” | Wed, 4 Jul 2001 12:08:56 -0700 |
“yyMMddHHmmssZ” | 010704120856-0700 |
“yyyy-MM-dd’T’HH:mm:ss.SSSZ” | 2001-07-04T12:08:56.235-0700 |
接下来观察构造函数:
SimpleDateFormat()
用默认的模式和默认语言环境的日期格式符号构造 SimpleDateFormat。
SimpleDateFormat(String pattern)
用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat。
SimpleDateFormat(String pattern, DateFormatSymbols formatSymbols)
用给定的模式和日期符号构造 SimpleDateFormat。
SimpleDateFormat(String pattern, Locale locale)
用给定的模式和给定语言环境的默认日期格式符号构造 SimpleDateFormat。
format 方法: StringBuffer format(Date date, StringBuffer toAppendTo, FieldPosition pos)
将给定的 Date 格式化为日期/时间字符串,并将结果添加到给定的 StringBuffer。
parse方法: Date parse(String text, ParsePosition pos)
解析字符串的文本,生成 Date。
简单示例:
package com.usually;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class SimpleDateFormatTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Date date = new Date();
SimpleDateFormat sim = new SimpleDateFormat();
String today = sim.format(date);
System.out.println(today);
System.out.println(date);
Date tod;
try {
tod = sim.parse(today);
System.out.println(tod.toString());
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
结果如下:
18-10-17 下午9:36 Wed Oct 17 21:36:54 CST 2018 Wed Oct 17 21:36:00 CST 2018
5.Calendar类:源码:public abstract class Calendar implements Serializable, Cloneable, Comparable说明Calendar类不能创建对象,对此,Calendar提供了一个类方法getInstance,以获得此类型的一个通用的对象,getInstance方法返回一个Calendar对象(该对象为Calendar的子类对象),其日历字段已由当前日期和时间初始化。简单示例
package com.usually;
import java.util.Calendar;
public class CalendarTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Calendar c = Calendar.getInstance();
System.out.println(c.getTimeInMillis());
System.out.println(c.get(Calendar.DAY_OF_MONTH));//这一天为本月第多少天
System.out.println(c.get(Calendar.WEEK_OF_YEAR));//本周为本年的第多少周
System.out.println(c.get(Calendar.DAY_OF_WEEK));//以周日为第一天,本天为本周的第多少天
c.add(Calendar.YEAR, 1);
System.out.println(c.get(Calendar.YEAR));
}
}
结果为:
1539785221517
17
42
4
2019
关于Calendar的更多用法请查询JavaAPI 文档