[关闭]
@liayun 2016-06-07T09:10:01.000000Z 字数 5066 阅读 1486

Java常用类库

java基础


System

System描述系统一些信息,获取系统属性信息:Properties getProperties()。类中的方法和属性都是静态的。

因为PropertiesHashTable的子类,也就是Map集合的一个子类对象,那么可以通过map的方法取出该集合的元素。该集合中存储的都是字符串,没有泛型定义。

  1. Properties prop = System.getProperties();

Runtime

该类并没有提供构造函数,说明不可以new对象,那么会直接想到该类中的方法都是静态的,但发现该类中还有非静态方法,说明该类肯定会提供方法获取本类对象,而且该方法是静态的,返回值类型是本类类型。该方法是static Runtime getRuntime()
由这个特点可以看出该类使用了单例设计模式
例,

  1. class RuntimeDemo {
  2. public static void main(String[] args) throws Exception {
  3. Runtime r = Runtime.getRuntime();
  4. // Process p = r.exec("D:\\软件\\QQ\\Bin\\QQScLauncher.exe"); // 传的命令的路径可能是错误的,所以可能会抛出异常
  5. // Thread.sleep(4000); // 等待4s后才杀掉进程,不然就是秒杀
  6. // p.destroy(); // 杀掉进程
  7. Process p = r.exec("notepad.exe SystemDemo.java"); // 用记事本程序打开SystemDemo.java文件
  8. }
  9. }

Date

创建Date对象,并打印。

  1. Date d = new Date();
  2. System.out.println(d); // 打印的时间看不懂,希望有些格式。

将模式封装到SimpleDateFormat对象中。

  1. SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日E hh:mm:ss");

调用format()方法让模式格式化指定Date对象。

  1. String time = sdf.format(d);
  2. System.out.println("time="+time);

注意:Date类导入的包是java.util.*,而SimpleDateFormat类导入的包是java.text.*

Calendar

创建Calendar对象,并打印。

  1. import java.util.*;
  2. import java.text.*;
  3. class CalendarDemo {
  4. public static void main(String[] args) {
  5. Calendar c = Calendar.getInstance();
  6. sop(c.get(Calendar.YEAR)+"年");
  7. sop((c.get(Calendar.MONTH)+1)+"月");
  8. sop(c.get(Calendar.DAY_OF_MONTH)+"日");
  9. sop("星期"+c.get(Calendar.DAY_OF_WEEK));
  10. }
  11. public static void sop(Object obj) {
  12. System.out.println(obj);
  13. }
  14. }

也可用类似制表法的方法来优化:

  1. import java.util.*;
  2. import java.text.*;
  3. class CalendarDemo {
  4. public static void main(String[] args) {
  5. Calendar c = Calendar.getInstance();
  6. String[] mons = {"一月", "二月", "三月", "四月",
  7. "五月", "六月", "七月", "八月",
  8. "九月", "十月", "十一月", "十二月"};
  9. String[] weeks = {"", "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
  10. int index = c.get(Calendar.MONTH);
  11. int index1 = c.get(Calendar.DAY_OF_WEEK);
  12. sop(c.get(Calendar.YEAR)+"年");
  13. sop(mons[index]);
  14. sop(c.get(Calendar.DAY_OF_MONTH)+"日");
  15. sop(weeks[index1]);
  16. }
  17. public static void sop(Object obj) {
  18. System.out.println(obj);
  19. }
  20. }

练习1、获取任意年的二月有多少天。
解:
思路:

  1. 根据指定年设置一个时间就是c.set(year, 2, 1);, 某一年的3月1日。
  2. c.add(Calendar.DAY_OF_MONTH, -1);, 3月1日,往前推一天,就是2月最后一天。
  1. import java.util.Calendar;
  2. public class CalendarTest {
  3. public static void main(String[] args) {
  4. System.out.println("二月有" + getDays(2016) + "天");
  5. }
  6. public static int getDays(int year) {
  7. Calendar c = Calendar.getInstance();
  8. c.set(year, 2, 1);
  9. c.add(Calendar.DAY_OF_MONTH, -1);
  10. return c.get(Calendar.DAY_OF_MONTH);
  11. }
  12. }

练习2、获取昨天的现在这个时刻。
解:

  1. import java.util.Calendar;
  2. public class CalendarTest1 {
  3. public static void main(String[] args) {
  4. System.out.println(getYesterdayTime());
  5. }
  6. public static String getYesterdayTime() {
  7. Calendar c = Calendar.getInstance();
  8. c.add(Calendar.DAY_OF_MONTH, -1);
  9. return printCalendar(c);
  10. }
  11. public static String printCalendar(Calendar c) {
  12. String[] months = { "一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月" };
  13. String[] weeks = { "", "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
  14. int index = c.get(Calendar.MONTH);
  15. int index1 = c.get(Calendar.DAY_OF_WEEK);
  16. StringBuilder sb = new StringBuilder();
  17. sb.append(c.get(Calendar.YEAR)).append("年");
  18. sb.append(months[index]);
  19. sb.append(c.get(Calendar.DAY_OF_MONTH)).append("日");
  20. sb.append(weeks[index1]).append(" ");
  21. sb.append(c.get(Calendar.HOUR)).append("时");
  22. sb.append(c.get(Calendar.MINUTE)).append("分");
  23. sb.append(c.get(Calendar.SECOND)).append("秒");
  24. sb.append(c.get(Calendar.MILLISECOND)).append("毫秒");
  25. return sb.toString();
  26. }
  27. }

Math

练习:给定一个小数,保留该小数的后两位。
解:

  1. import java.text.DecimalFormat;
  2. public class MathTest {
  3. public static void main(String[] args) {
  4. System.out.println(getNumber(0.9));
  5. }
  6. public static String getNumber(double num) {
  7. DecimalFormat df = new DecimalFormat("#0.00");//模式不能写成"#.00"
  8. return df.format(num);
  9. }
  10. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注