------- android培训、java培训、期待与您交流! ----------
55、 System类
System:类中的方法和属性都是静态的。
out:标准输出
描述系统一些信息。
获取系统属性信息:Properties getProperties( );
示例代码:
package
day30;
import
java.util.Properties;
publicclass
SystemDemo {
publicstaticvoid
main(String args[]){
Properties pro = System.getProperties();
/*因为Properties是Hashtable的子类,也是Map集合的一个子类对象
*
那么可以通过Map的方法取出该集合的元素
*
该集合中存储都是字符串,没有泛型定义。
* */
//如何在系统中自定义一些特有属性?
System.setProperty("myKey","myValue");
//获取指定属性信息
System.out.println("value:"+System.getProperty("os.name"));
//获取所有属性信息
for(Object
obj :pro.keySet()){
String value = (String)pro.get(obj);
System.out.println(obj+":"+value);
}
}
}
可不可以再JVM启动时,动态加载一些属性信息呢?
答案是可以的,形式:java –D属性名称属性值类名
56、 Runtime类
该类没有提供构造函数,说明不可以new对象。那么会直接想到该类中的方法都是静态的。发现该类还有非静态的方法。说明该类肯定会提供方法获取本类对象。而且该方法是静态的。并返回值类型是本类类型。
由以上特点,可以看出该类使用单力设计模式完成。
该方式是:static Runtime getRuntime( );
Java能杀掉自己启动的进程,系统提供的进程java是杀不掉的!
示例代码:
package
day30;
publicclass
RuntimeDemo {
publicstaticvoid
main(String args[])throws Exception {
Runtime run = Runtime.getRuntime();
//
C:\\Windows\\System32\\notepad.exe或者以下
//如果想要在调用记事本程序的时候,打开某一个文件的话,如果这个文件是项目文件的话
//就应该放在根目录下,不是src目录下,例如demo.txt
//记事本可以打开电影文件,只不过显示的都是二进制数据而已。可能会超过记事本空间
Process pro = run.exec("notepad.exe demo.txt");
Thread.sleep(4000);
//杀死进程
pro.destroy();
}
}
57、 Date类
示例代码:
package
day30;
import
java.util.Date;
import
java.text.SimpleDateFormat;
publicclass
DateDemo {
publicstaticvoid
main(String args[])throws Exception {
Date
d = new Date();
//将模式封装到SimpleDateFormat对象中,当把HH小写,就变成12进制的小时
SimpleDateFormat sdf =
new SimpleDateFormat("yyyy年MM月dd日 E
HH:mm:ss");
//调用format方法,让模式格式化指定Date对象
String date = sdf.format(d);
System.out.println(date);
}
}
遗留问题?
问题:在DateFormat和Calendar抽象类中,为什么有构造方法?抽象类允许有构造函数吗?
58、 Calendar
程序里面设计到查表法:利用月份的排序与数组角标的排序一致而进行的。
示例代码:
package
day30;
import
java.util.Calendar;
publicclass
CalendarDemo {
publicstaticvoid
main(String args[]) {
Calendar c = Calendar.getInstance();
printCalendar(c);
//Calendar里面重要的一个方法:set()这个方法比较特殊
//可以设置时间,其中月份设置为2时,真实月份为3月
c.set(2015,6,17);
printCalendar(c);
//add方法可以操作指定的字段
c.add(Calendar.MONTH,-4);
printCalendar(c);
}
publicstaticvoid
printCalendar(Calendar c) {
//现在开始写查表法
String months[] = {
"一月","二月","三月","四月","五月","六月","七月","八月",
"九月","十月","十一月","十二月"
};
String weeks[] = {
"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"
};
int
index_month = c.get(Calendar.MONTH);
int
index_week = c.get(Calendar.DAY_OF_WEEK);
sop(c.get(Calendar.YEAR)
+"年");
//月份是从0,1,2……11结束
//sop(c.get(Calendar.MONTH)+"月");
sop(months[index_month]);
sop(c.get(Calendar.DAY_OF_MONTH)
+"日");
//星期排序:星期日、星期一、星期二……星期六
//sop(c.get(Calendar.DAY_OF_WEEK));
sop(weeks[index_week]);
}
publicstaticvoid
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月最后一天,在获取Calendar.DAY_OF_MONTH
2、获取昨天的现在这个时刻
c.add(Calendar.DAY_OF_MONTH,-1);
3、怎样判断有效的上课时间(周六、周日不算)
59、 Math类
注意Math.ceil( )、Math.round(
)、Math.floor( )
示例代码:
package day30;
import java.util.Random;
publicclass
MethDemo {
publicstaticvoid
main(String args[]) {
show();