1. Runtime类的使用
例1. 内存管理示例程序。
package util; public class demoMemory { public static void main(String[] args) { try { Runtime runObj = Runtime.getRuntime(); System.out.println("虚拟机可用存储空间:"+runObj.totalMemory()); System.out.println("申请空间之前剩余空间:"+runObj.freeMemory()); Integer buf[]=new Integer[10240]; System.out.println("申请空间后剩余空间:"+runObj.freeMemory()); //启动垃圾回收线程 runObj.gc(); Thread.sleep(1000); System.out.println("启动垃圾收集机制后剩余空间:"+runObj.freeMemory()); System.out.println("======为对象分配值,重复上述操作======"); for(int i=0;i<10240;i++) buf[i]=i+1; Thread.sleep(1000); System.out.println("对象赋值后剩余空间:"+runObj.freeMemory()); runObj.gc(); Thread.sleep(1000); System.out.println("启动垃圾回收机制后剩余空间:"+runObj.freeMemory()); } catch (InterruptedException e) { e.printStackTrace(); } } }
程序运行结果如下:
虚拟机可用存储空间:5177344 申请空间之前剩余空间:4937392 申请空间后剩余空间:4896416 启动垃圾收集机制后剩余空间:4979744 ======为对象分配值,重复上述操作====== 对象赋值后剩余空间:4822272 启动垃圾回收机制后剩余空间:4812736
2. 执行其他程序
例2. 启动记事本。
package util; import java.io.IOException; public class runNotepad { public static void main(String[] args) { Runtime runObj = Runtime.getRuntime(); try { runObj.exec("notepad"); } catch (IOException e) { System.out.println("无法启动记事本"); } } }
用记事本打开F:workspaceTestsrcutil下的runNotepad.java文件:
package util; import java.io.IOException; public class runNotepad { public static void main(String[] args) { Runtime runObj = Runtime.getRuntime(); try { String cmdarray[] = {"notepad","F:\workspace\Test\src\util\runNotepad.java"}; runObj.exec(cmdarray); } catch (IOException e) { System.out.println("无法启动记事本"); } } }
下面的程序会等记事本执行完毕后才结束:
package util; import java.io.IOException; public class runNotepad { public static void main(String[] args) { Runtime runObj = Runtime.getRuntime(); Process prc = null; try { String cmdarray[] = {"notepad","F:\workspace\Test\src\util\runNotepad.java"}; prc = runObj.exec(cmdarray); prc.waitFor(); } catch (IOException e) { System.out.println("无法启动记事本"); } catch (InterruptedException e) { System.out.println("异常中断!"); } System.out.println("记事本返回值为:"+prc.exitValue()); } }
程序运行结果:
记事本返回值为:0
3. 利用currentTimeMillis()记录程序执行的时间。——System类的使用
例3. 计算程序运行时间。
package util; public class elapsed { public static void main(String[] args) { try { long start = System.currentTimeMillis(); System.out.println("程序开始执行......"); Thread.sleep(1000); long end = System.currentTimeMillis(); System.out.println("程序执行结束!"); System.out.println("程序执行时间为:"+(end-start)+"毫秒"); } catch (InterruptedException e) { e.printStackTrace(); } } }
程序运行结果为:
程序开始执行......
程序执行结束!
程序执行时间为:1000毫秒
4. exit()退出方法
例4. 从子线程中退出虚拟机。
package util; public class exitJVM extends Thread { public static void main(String[] args) { exitJVM tr = new exitJVM(); tr.start(); try { Thread.sleep(10000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("主线程结束!"); } public void run(){ System.out.println("这是在子线程中!"); System.exit(0); } }
程序运行结果如下:
这是在子线程中!
5. 获取和设置环境属性
例5. 获取环境属性:
package util; public class showProperties { public static void main(String[] args) { System.out.println("Java 运行环境版本:"+System.getProperty("java.version")); } }
6. Date类的简单使用
例6. 显示当前时间。
package util; import java.util.Date; public class currentTime_1 { public static void main(String[] args) { Date date = new Date(); System.out.println(date.getTime()); } }
程序运行结果:
1422019278109
7. 使用SimpleDateFormat格式化输出时间
假如程序员希望定制日期数据的格式,比如“星期二-04月-09日-2013年”,这需要用到另外一个类:java.text.SimpleDateFormat,这个类是从抽象类java.text.DateFormat派生出来的。
例7. 按照定制格式显示日期。
package util; import java.text.SimpleDateFormat; import java.util.Date; public class currentTime_2 { public static void main(String[] args) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-EEEE"); Date date = new Date(); System.out.println(sdf.format(date)); } }
程序运行结果如下:
2015-01-23-星期五
例8. 按照定制格式显示日期。
package util; import java.text.DateFormat; import java.util.Date; public class currenTime_3 { public static void main(String[] args) { Date date = new Date(); DateFormat shortDateFormat = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT); DateFormat longDateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG); DateFormat mediumDateFormat = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM); DateFormat fullDateFormat = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL); System.out.println(shortDateFormat.format(date)); System.out.println(mediumDateFormat.format(date)); System.out.println(longDateFormat.format(date)); System.out.println(fullDateFormat.format(date)); } }
程序运行结果如下:
15-1-23 下午10:03
2015-1-23 22:03:45
2015年1月23日 下午10时03分45秒
2015年1月23日 星期五 下午10时03分45秒 CST
例9. 从文本串创建日期对象。
package util; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class textToTime { public static void main(String[] args) { SimpleDateFormat sdf = new SimpleDateFormat("MM-dd-yyyy"); String s = "01-23-2015"; try { Date date = sdf.parse(s); System.out.println(date.getTime()); } catch (ParseException e) { e.printStackTrace(); } } }
程序运行结果如下:
1421942400000
这个数的末尾全是0,是因为时间字符串中没有指定时、分、秒。
8. Calendar类的特色
例10. 用Calendar显示当前的日期和时间。
package util; import java.util.Calendar; public class DateAndTime { //星期要转换成汉语显示,数字1表示星期日 static final char days[] = {' ','日','一','二','三','四','五','六'}; public static void main(String[] args) { Calendar cal = Calendar.getInstance(); int year = cal.get(Calendar.YEAR); int month = cal.get(Calendar.MONTH)+1; int date = cal.get(Calendar.DATE); int day = cal.get(Calendar.DAY_OF_WEEK); int hour = cal.get(Calendar.HOUR_OF_DAY); int min = cal.get(Calendar.MINUTE); int sec = cal.get(Calendar.SECOND); System.out.println("今天是:"+year+"年"+month+"月"+date+"号"+" 星期"+days[day]); System.out.println("现在的时间是: "+hour+":"+min+":"+sec); } }
程序运行结果如下:
今天是:2015年1月24号 星期六
现在的时间是: 11:10:22
9. 利用GregorianCalendar输出日历
例11. 用GregorianCalendar实现一个万年历。
package util; import java.util.*; public class showCalendar { //用来显示日历头 static final String head[] = {"星期日","星期一","星期二","星期三","星期四","星期五","星期六"}; public static void main(String[] args) { Scanner in = new Scanner(System.in); int i; System.out.println("请输入年份:"); int year = in.nextInt(); System.out.println("请输入月份: "); int month = in.nextInt()-1; //GregorianCalendar的第一个月是0,和人的理解不同 in.close(); //以指定的年、月、该月的第一天来创建对象 GregorianCalendar cal = new GregorianCalendar(year,month,1); //获取这个月的天数 int totalDays = cal.getActualMaximum(Calendar.DAY_OF_MONTH); //获取这个月的第一天是星期几 int startDay = cal.get(Calendar.DAY_OF_WEEK)-1; //输出日历头部,每一个输出项占8个字符宽度 for(i=0;i<head.length;i++) System.out.print(head[i]+" "); System.out.println(); //输出第一天之前的空格,每个输出项占8个空格 for(i=0;i<startDay;i++) System.out.print(" "); //依次输出每一天,每一个输出项占8个字符宽度 for(int day =1;day<=totalDays;day++){ System.out.printf(" %2d ",day); i++; if(i==7){ System.out.println(); i=0; } } } }
程序运行结果如下:
请输入年份: 2015 请输入月份: 2 星期日 星期一 星期二 星期三 星期四 星期五 星期六 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28