System类
package cn.hema;
import java.util.Properties;
public class SystemDemo {
/*system:类中的方法和属性都是静态的,不能被实例化,因为构造方法是私有的
out:标准输出。默认是控制台
in:标准输入,默认是键盘*/
public static void main(String[] args) {
/* Properties是Hashtable的子类,也就是Map集合的一个子类对象
那么可以通过map的方法取出该集合中的元素
该集合中存储的都是字符串,没有泛型定义*/
Properties props=System.getProperties();
//设置一个系统属性
System.setProperty("mykey", "hello world");
for(Object obj:props.keySet()){
String value=(String) props.get(obj);
System.out.println(value);
}
System.out.println("操作系统名称:"+System.getProperty("os.name"));
//虚拟机启动时可以动态加入一些属性信息 格式:-D<name>=<value>例如java -Dp=yes SystemDemo
System.out.println("动态属性的值:"+System.getProperty("p"));
}
}
在本次实验中提到了map,使我联想到了map的一些基本属性方法,经常写的代码就是Map map= new HashMap();map是双列集合,采用键值对的形式存放,我们也可能采用 map.keySet()得到所有的键的集合,当然也可以通过map.values()得到所有的值的集合,此时又让我想了LinkedHashMap 这个类可以实现存进去的顺序和取出来顺序一致(方立勋老师的javaweb视频教程做购物车时好像就用到了这个类)。
Runtime类
package cn.hema;
import java.io.IOException;
//Runtime类没有构造函数,用单例设计模式完成的,通过静态方法
//getRuntime()得到一个Runtime对象
public class RunTime {
public static void main(String[] args) {
Runtime r= Runtime.getRuntime();
//process类是个抽象类,没有实现方法,由底层实现
Process p;
try {
//启动一个程序,先在当前目录找,然后再去系统的system32下找
p=r.exec("winmine.exe");
//用记事本打开D盘下的rainbow.log文件
r.exec("notepad D:\\rainbow.log");
Thread.sleep(4000);
//杀死扫雷这个子进程
p.destroy();
} catch (Exception e) {
e.printStackTrace();
}
}
}
这个实验中提到的单例设计模式我又想起了就业面试宝典中提到的:
三种实现单例的方法,记得上次去面试还真的考到了这个题
第一种:饱汉模式
public class SingleTon {
private SingleTon(){
}
//类加载时就实例化可以提高运行效率,当然有利有弊嘛,这样会多用内存空间
private final static SingleTon instance = new SingleTon();
public static SingleTon getInstance(){
return instance;
}
}
第二种:饥汉模式
public class SingleTon {
private SingleTon(){}
private static instance = null;
public static synchronized SingleTon getInstance(){
if(instance == null)
instance = new SingleTon();
return instance;
}
}
第三种:用枚举
public enum SingleTon{
ONE;
}
Date 类
package cn.hema;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateDemo {
public static void main(String[] args) {
Date d= new Date();
SimpleDateFormat sdf= new SimpleDateFormat("yyyy年MM月dd日");
//将日期格式化成yyyy年MM月dd日这种字符串形式
String time=sdf.format(d);
System.out.println(time);
//当然也可以将字符串形式的日期解析成date形式
String s="2011年12月32日";
try {
Date d2=sdf.parse(s);
System.out.println(d2);
} catch (ParseException e) {
e.printStackTrace();
}
}
//SimpleDateFormat在获取表单数据将字符串形式的日期转化成Date时经常用到
}
Calendar类
package cn.hema;
import java.util.Calendar;
public class CalenlarDemo {
public static void main(String[] args) {
String[] mons = { "一月", "二月", "三月", "四月", "五月", "六月", "七月", "八月", "九月",
"十月", "十一月", "十二月" };
String[] weeks = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
Calendar calendar = Calendar.getInstance();
//Calendar.getInstance()获取实例的方法使我想起张孝祥老师所说的得到实例对象有三种方法:
//直接new对象,通过工厂类获取,通过该类的静态方法得到
System.out.println(calendar.get(Calendar.YEAR) + "年");
// 月是从0开始的,所以要加1
System.out.println((calendar.get(Calendar.MONTH) + 1) + "月");
// 通过查表的方法解决
System.out.println(mons[calendar.get(Calendar.MONTH)]);
System.out.println(calendar.get(Calendar.DAY_OF_MONTH) + "日");
System.out.println("星期" + calendar.get(Calendar.DAY_OF_WEEK));
System.out.println(weeks[calendar.get(Calendar.DAY_OF_WEEK)]);
}
}
Math类
package cn.hema;
import static java.lang.Math.*;//静态导入
import java.util.Random;
public class MathDemo {
public static void main(String[] args) {
double d = Math.ceil(23.34);// 返回大于指定数的最小整数
double d2 = Math.floor(23.34);// 返回小于指定数的最大整数
long l = Math.round(23.8);// 四舍五入
System.out.println(d);
System.out.println(d2);
System.out.println(l);
Random r= new Random();
for(int i=0;i<100;i++){
System.out.println(r.nextInt(10));
}