System
System类中的方法和属性都是静态的
out:是标准输出,默认是控制台
int:是标准输入,默认是键盘
描述系统的一些信息
获取系统属性信息:Properties getProperties();
因为Properties是HashTable的子类,也就是Map集合的一个子类对象,那么可以通过Map的方法取出该集合中的元素
该集合中存储的都是字符串,没有泛型定义
获取所有属性信息
Properties prop = System.getProperties();
for(Object obj : prop.keySet())
{
String value = (String)prop.get(obj);
System.out.println(obj+"::"+value);
}
获取指定属性信息
String value = System.getProperty("os.name"); //获取操作系统,可以判断支持的系统版本
如何在系统中自定义一些特有信息呢?
System.setProperty("myKey", "myValue");
可不可以在虚拟机启动时动态加载属性信息? 应用:tomacat服务器
java -Dhahaha=qqqq SystemDemo
Runtime
每个java程序都有一个Runtime类实例,是应用程序能够与其运行的环境相连接,可以通过getRuntime方法获取当前运行时(即当前运行的虚拟机)
该类并没有提供构造函数,说明不可以new对象,那么直接想到该类的方法都是静态的,发现该类中还有非静态方法,说明该类肯定提供了方法获取本类对象,而且该方法是静态的,返回值类型是本类类型,由这个特点可以看出该类使用了单例设计模式完成
该方法是static Runtime getRuntime();
Runtime r = Runtime.getRuntime();
Process p = r.exec("notepad.exe SystemDemo.java"); //exec()方法可以打开指定的应用程序,此例中可以用记事本打开指定的文本文件,注意Process是抽象类,无子类
Thread.sleep(4000);//让打开的线程停止4秒
p.destroy();//杀掉该进程
Date
主要用于获取当前的时间
import java.util.*; //导入Date类所属的包
import java.text.*; //导入SimpleDateFormat类所属的包
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 hh:mm:ss"); //注意模式中的字母不要写错,大小写区分
//调用format方法让模式格式化指定Date对象。
String time = sdf.format(d);
System.out.println("time="+time);
long l = System.currentTimeMillis();
Date d1 = new Date(l);//传入毫秒值
System.out.println("d1:"+d1);
//只取年份
SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
//或者用getYear()
}
}
Calendar
主要用于设置时间
首先通过getInstance方法获取日历的实例对象
字段值都是静态的,需要用类名来访问:Calendar.DAY_OF_MONTH
class CalendarDemo2
{
public static void main(String[] args)
{
Calendar c = Calendar.getInstance();
//c.set(2012,2,23);//设置年月日,注意中间的2代表的是三月
c.add(Calendar.DAY_OF_MONTH,-18); //往前推18天
printCalendar(c);
}
public static void printCalendar(Calendar c) //查表法友好显示获取的日历数据,因为月份和星期的数字均是中文的
{
String[] mons = {"一月","二月","三月","四月"
,"五月","六月","七月","八月"
,"九月","十月","十一月","十二月"};
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(mons[index]);
sop(c.get(Calendar.DAY_OF_MONTH)+"日");
//sop("星期"+c.get(Calendar.DAY_OF_WEEK));
sop(weeks[index1]);
}
public static void sop(Object obj)
{
System.out.println(obj);
}
}
Math
变量和方法都是静态的
ceil、floor、round、pow方法
返回int double long都可以
Math.ceil(16.34);// d为17.0,ceil方法返回大于指定数据的最小整数
floor返回小于指定数的最大整数
round:四舍五入
pow:幂数运算
random方法
random:返回带正号的double值,一个大于等于0且小于1的随机数
(int)(Math.random()*10+1)生成一个1到10的随机整数,包括1和10
Random类
也可以用Random类
new Random();
nextInt() //返回下一个伪随机数,它是此随机数生成器的序列中均匀分布的
int
值。nextInt
的常规协定是,伪随机地生成并返回一个int
值。所有 232 个可能int
值的生成概率(大致)相同nextInt(num)//返回下一个0到指定值num(不包括)之间的随机数,省去了强转过程,更加方便