常用工具类1

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:\workspace\Test\src\util下的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   

 

posted @ 2015-01-24 12:57  ~风轻云淡~  阅读(372)  评论(0编辑  收藏  举报