System
:类中的方法和属性都是静态的,没有提供构造函数
out:标准输出,默认是控制台
in: 标准输入,默认是键盘
Properties getProperties :获取系统属性信息
Properties 是Hashtable的子类,也就是Map集合的一个子类对象
所以可以通过Map方法取出该集合中的元素;该集合存储的都是字符串,没有泛型的定义
操作示例:
import java.util.*;
class SystemDemo
{
public static void main(String[] args)
{
Properties prop = System.getProperties();//包含全部属性信息
System.setProperty("mykey","myvalue");//在系统中自定义特有信息
String myvalue = System.getProperty("mykey");//获取指定属性信息
sop("myvalue: "+myvalue); //自定义的
String value = System.getProperty("os.name");
sop("value: "+value); //系统原有的
//在JVM启动时,加载一些属性信息,在命令行加载
String v= System.getProperty("haha");
sop("v= "+v);
/* 获取所有属性信息
for (Object obj: prop.keySet() )//通过Map方法取出该集合中的元素
{
String value = (String)prop.get(obj);//向下转型
sop(obj+" : "+value);
}
*/ }
public static void sop(Object obj)
{
System.out.println(obj);
}
}
Runtime
可以对当前系统进行相应的操作该类并没有提供构造函数,不可以new对象,可以联想到该类中方法都是静态的
而API中发现该类中还存在非静态方法,说明该类一定提供了方法获取本类对象而且该方法是静态的,返回值是本类类型
由此可以看出该类使用了 单例设计模式完成
该静态方法是: static Runtime getRuntime();
使用示例:
class RuntimeDemo
{
public static void main(String[] args) throws Exception
{
Runtime r = Runtime.getRuntime(); //获取运行时类对象
// Process p = r.exec("D:\\Program Files\\yy\\YY.exe");//根据运行时类执行本机程序
Process p = r.exec("notepad.exe SystemDemo.java ");//调用记事本打开文件
Thread.sleep(5000); //等待5秒
p.destroy(); //杀掉子进程
}
}
Date
获取当前系统时间,更多方法参见APT文档import java.util.*;
import java.text.*;//要记得导包
class DateDemo
{
public static void main(String[] args)
{
Date d = new Date();//获取当前时间
sop(d);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 E hh点mm分ss秒");
String time = sdf.format(d);//调用formart方法让模式格式化指定Date对象
sop("当前时间: "+time);
}
public static void sop(Object obj){
System.out.println(obj);
}
}
Calendar
更加灵活地获取时间
import java.util.*;
import java.text.*;
class CalendarDemo2
{
public static void main(String[] args)
{
Calendar c = Calendar.getInstance();
// c.set(2014,2,1); //设置时间,月份+1
// c.add(Calendar.MONTH,-4);//在当前时间上增减
// c.set(2012,2,1); //时间设定为2012年3月1日
c.add(Calendar.DAY_OF_MONTH,-1);//3月1日前推一天就是二月的最后一天
//获取昨天的现在时刻
printCalendar(c);
}
public static void printCalendar(Calendar c)//查表法应用,更灵活的定义日期输出格式
{
String[] months = {"一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"};
String[] weeks = {"","周日","周一","周二","周三","周四","周五","周六"};
int index = c.get(Calendar.MONTH);
int index0 = c.get(Calendar.DAY_OF_WEEK);
sop(c.get(Calendar.YEAR)+"年");
//sop(c.get(Calendar.Month)+"月");
sop(months[index]);
sop(c.get(Calendar.DAY_OF_MONTH)+"日");
//sop(+c.get("星期"+Calendar.DAY_OF_WEEK));
sop(weeks[index0]);
}
public static void sop(Object obj){
System.out.println(obj);
}
}
Math工具类
包含用于执行基本数学运算的方法import java.util.*;
class MathDemo
{
public static void main(String[] args)
{
Random r = new Random();
for (int x=0 ;x<10 ;x++ ){ //5,获取1~6的随机数;骰子
// int d = (int)(Math.random()*6 +1);//Math类的方法
int d = r.nextInt(6)+1; //集合中Random类的方法,不需要再强转
sop(d);
}
}
public static void show()
{
double d= Math.ceil(10.24); //1,返回大于指定数据的最小整数
double d1 = Math.floor(10.24);//2,返回小于指定数据的最大整数
long l = Math.round(10.24); //3,四舍五入
double d2= Math.pow(3,4); //4,次幂运算,a的b次方
sop("d ="+d); //返回11.0
sop("d1="+d1); //返回10.0
sop("l= "+l); //返回10.0
sop("d2="+d2); //返回81.0
}
public static void sop(Object obj){
System.out.println(obj);
}
}
Collections.shuffle(list); //集合的混洗在底层也调用了random
Math类中的random() 方法获取的是0.0~1.0的随机double数,如果要获得整数需要类型强转
还有另外一个获取随机整数的方法:java.util.包中的Random类
nextDouble();返回的是浮点型
nextInt()方法;返回的是int型,不需要再强转
这些工具类要进行掌握,以后开发会经常用到