System
System:类中的方法和属性都是静态的。
out:标准输出,默认是控制台。
in:标准输入,默认是键盘。
System描述系统一些信息。获取系统属性信息:Properties getProperties()。
示例代码如下:
import java.util.Properties; public class SystemDemo { public static void main(String[] args) { Properties prop = System.getProperties(); //因为Properties是HashTable的子类,也就是Map集合的一个子类对象。 //那么可以通过map的方法取出该集合的元素。 //该集合中存储的都是字符串,没有泛型定义。 //如何在系统中自定义一些特有信息呢? System.setProperty("mykey", "myvalue"); //获取指定属性信息 String value = System.getProperty("os.name"); System.out.println("value = " + value); //可不可以在JVM启动时,动态加载一些属性信息呢? String v = System.getProperty("haha"); System.out.println("v = " + v);//null /* 获取所有属性信息。 for(Object obj : prop.keySet()) { String value = (String)prop.get(obj); System.out.println(obj + "::" + value); } */ } }
在启动JVM时,如何动态加载一些属性信息?(图示说明)
Runtime
该类并没有提供构造函数。说明不可以new对象,那么会直接想到该类中的方法都是静态的。发现该类中还有非静态方法。说明该类肯定会提供方法获取本类对象,而且该方法是静态的,返回值类型是本类类型。
由这个特点可以看出该类使用了单例设计模式。
该方法是static Runtime getRuntime() 。
代码如下:
import java.io.IOException; public class RuntimeDemo { public static void main(String[] args) { Runtime r = Runtime.getRuntime(); Process p =null; try { //p = r.exec("D:\BaiduYunGuanjia\BaiduYunGuanjia.exe");//传的命令的路径可能是错误的。 p = r.exec("notepad.exe SystemDemo.java"); } catch (IOException e) { e.printStackTrace(); } /* try { Thread.sleep(4000); } catch (InterruptedException e) { e.printStackTrace(); } p.destroy();//杀掉进程 */ } }
Date
示例代码:
import java.text.SimpleDateFormat; import java.util.Date; public class DateDemo { public static void main(String[] args) { Date d = new Date(); System.out.println(d);//打印的时间看不懂,希望有些格式。 //将模式封装到SimpleDateFormat对象中 SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 E"); //调用format()方法让模式格式化指定Date对象 String time = sdf.format(d); System.out.println("time = " + time); } }
Calendar
示例代码:
import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class CalendarDemo { public static void main(String[] args) { Calendar c = Calendar.getInstance(); String[] months = {"一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月"}; String[] weeks = {"", "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"}; int index = c.get(Calendar.MONTH); int index1 = c.get(Calendar.DAY_OF_WEEK); sop(c.get(Calendar.YEAR) + "年"); //sop((c.get(Calendar.MONTH) + 1) + "月"); sop(months[index]); sop(c.get(Calendar.DAY_OF_MONTH) + "日"); //sop("星期" + c.get(Calendar.DAY_OF_WEEK)); sop(weeks[index1]); /* Date d = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy"); String year = sdf.format(d); System.out.println(year); */ } public static void sop(Object obj) { System.out.println(obj); } }
注意:
1、add()方法——根据日历的规则,为给定的日历字段添加或减去指定的时间量。
public abstract void add(int field, int amount)
2、set()方法——设置日历字段 YEAR
、MONTH
和 DAY_OF_MONTH
的值。保留其他日历字段以前的值。
public final void set(int year, int month, int date)
示例代码如下:
import java.util.Calendar; public class CalendarDemo1 { public static void main(String[] args) { Calendar c = Calendar.getInstance(); //c.set(2012, 2, 23); c.add(Calendar.DAY_OF_MONTH, -18); printCalendar(c); } public static void printCalendar(Calendar c) { String[] months = { "一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月" }; String[] weeks = { "", "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" }; int index = c.get(Calendar.MONTH); int index1 = c.get(Calendar.DAY_OF_WEEK); sop(c.get(Calendar.YEAR) + "年"); sop(months[index]); sop(c.get(Calendar.DAY_OF_MONTH) + "日"); sop(weeks[index1]); } public static void sop(Object obj) { System.out.println(obj); } }
练习1、获取任意年的二月有多少天。
分析:
- 根据指定年设置一个时间就是c.set(year, 2, 1);//某一年的3月1日。
- c.add(Calendar.DAY_OF_MONTH, -1);//3月1日,往前推一天,就是2月最后一天。
代码:
import java.util.Calendar; public class CalendarTest { public static void main(String[] args) { System.out.println("二月有" + getDays(2016) + "天"); } public static int getDays(int year) { Calendar c = Calendar.getInstance(); c.set(year, 2, 1); c.add(Calendar.DAY_OF_MONTH, -1); return c.get(Calendar.DAY_OF_MONTH); } }
练习2、获取昨天的现在这个时刻。
代码:
import java.util.Calendar; public class CalendarTest1 { public static void main(String[] args) { System.out.println(getYesterdayTime()); } public static String printCalendar(Calendar c) { String[] months = { "一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月", "十月", "十一月", "十二月" }; String[] weeks = { "", "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" }; int index = c.get(Calendar.MONTH); int index1 = c.get(Calendar.DAY_OF_WEEK); StringBuilder sb = new StringBuilder(); sb.append(c.get(Calendar.YEAR)).append("年"); sb.append(months[index]); sb.append(c.get(Calendar.DAY_OF_MONTH)).append("日"); sb.append(weeks[index1]).append(" "); sb.append(c.get(Calendar.HOUR)).append("时"); sb.append(c.get(Calendar.MINUTE)).append("分"); sb.append(c.get(Calendar.SECOND)).append("秒"); sb.append(c.get(Calendar.MILLISECOND)).append("毫秒"); return sb.toString(); } public static String getYesterdayTime() { Calendar c = Calendar.getInstance(); c.add(Calendar.DAY_OF_MONTH, -1); return printCalendar(c); } }
Math
示例代码如下:
import java.util.Random; public class MathDemo { public static void main(String[] args) { Random r = new Random(); //生产1~10的伪随机数 for(int x = 0; x < 10; x++) { //int d = (int)(Math.random() * 10) + 1; int d = r.nextInt(10) + 1; sop(d); } } public static void show() { double d = Math.ceil(-16.34);//返回大于指定数据的最小整数 double d1 = Math.floor(12.34);//返回小于指定数据的最大整数 long l = Math.round(12.54);//四舍五入 sop("d = " + d); sop("d1 = " + d1); sop("l = " + l); double d2 = Math.pow(2, 3); sop("d2 = " + d2); } public static void sop(Object obj) { System.out.println(obj); } }
练习、给定一个小数,保留该小数的后两位。
代码:
import java.text.DecimalFormat; public class MathTest { public static void main(String[] args) { System.out.println(getNumber(0.9)); } public static String getNumber(double num) { DecimalFormat df = new DecimalFormat("#0.00");//模式不能写成"#.00" return df.format(num); } }