System类
属性和行为都是静态的
long currentTimeMillis() 返回当前时间毫秒值
exit() 退出虚拟机
Properties getProperties(); 获取当前系统的属性信息
Properties prop = System.getProperties(); 获取系统的属性信息,并将这些信息存储到Properties集合中
添加属性信息
System.setProperty("mylove","yangym");
获取指定的属性信息
String name = System.getProperty("os.name");
实例: 程序是否能在系统中运行
Set<String> hs = new HashSet<String>();
hs.add("Window XP");
hs.add("Windows 7");
if(hs.contains(name))
{
System.out.println("在该系统下可以运行");
}
else
{
System.out.println("不能运行");
}
Runtime类: 没有构造,不可创建对象,说明此为单例设计模式
class RuntimeDemo
{
public static void main(String[] args) throws Exception //因为sleep会抛出异常对象,所以没处理的话就进行抛出
{
Runtime r = Runtime.getRuntime(); //创建runtime对象
Process p = r.exec("winmine.exe"); //打开扫雷
Thread.sleep(4000); //延迟4秒
p.destroy(); //杀掉进程
}
}
Math类:用于数学运算的工具类,方法和属性也是静态,不可以被继承
static double ceil(double a) 返回大于指定数值的最小整数
static double floor(double a) 返回小于指定数值的最大整数
static long round(duoble a) 四舍五入成整数
static double pow(double a,double b) a的b次幂
static double random() 返回0~1的伪随机数
public static void main(String[] args)
{
Random r = new Random();
for(int x=0;x<10;x++)
{
int d = r.nextInt(10) + 1 ; //nextint 返回0到9之间的随机数,其中n必须是正数
System.out.println(d);
}
}
Date类 日期类 所做的一切全是跟日期有关的操作,比如时间转换,从字符串中获取日期
日期对象和毫秒之间的转换
1.日期对象转成毫秒值 Date类中的getTime方法
2.如何将获取到的毫秒值转成具体的日期
Date类中的setTime方法,也可以通过构造函数
日期对象转成毫秒值
Date d = new Date();
long time1 = d.getTime();
long time2 = System.currentTimeMillis();毫秒值
毫秒值转换成具体的日期
long time = 13227099215424;
Date d = new Date();
d.setTime(time);
将日期字符串转换成日期对象: 使用DateFormat方法中的Date parse(String source);
public static void method() throws Exception
{
String str_time = "2011/10/24";
DateFormat df = new SimpleDateFormat("yyyy/MM/dd"); SimpleDateFormat可以指定用户自定义的格式
Date d = df.parse(str_time);
}
如果不需要特定格式化,则可以直接使用封装好的风格对象。getDateInstance() getDateTimeInstance()
将日期对象转换成字符串的方式 DateFormat类中的format方法
创建日期格式对象
DateFormat df = new SimpleDateFormat() 默认封装一个日期格式 14-8-12 下午 12:06
如果要自定义,则使用构造将规范字符串传入
df = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String str_time = df.format(d);
Calendar: 日历类
public static void method()
{
Calendar c = Calendar.getInstance();
System.out.println(c.get(Calendar.YEAR) + "年" + (c.get(Calendar.MONTH)+1)+"月" + getNum(c.get(Calendar.DAY_OF_MONTH))+
"日"+"星期"+getWeek(c.get(Calendar.DAY_OF_WEEK)) );
}
public static String getNum(int num)
{
return num>9?num+"" : "0"+num;
}
public static String getWeek(int index)
{
String[] weeks = {"","日","一","二","三","四","五","六"};
return weeks[index];
}
Date和Calendar的应用:
编写程序,该程序启动后用户可以按"yyyy-MM-dd"的格式输入一个日期
程序计算这一天是星期几,计算出是一年中的第几天
分析:要用户可以按某格式去输入,就说明有一个键盘输入的输入流。
由于输入的格式有可能不对,那么就需要定义格式,如果不符合格式就报错。使用Date类的DateFormat
计算是星期几,第几天,就用Calendar类
public class DateDemo
{
public static void main(String[] args)
{
getCalendar();
}
public static void getCalendar() throws Exception
{
//1.创建一个输入流存储键盘输入的数据
InputStream is = System.in;
//2.将此数据存储到StringBuilder中,以便于将其转换成字符串
StringBuilder sb= new StringBuilder();
String s = null;
while(true)
{
int ch = is.read();
if(ch=='\r');
continue;
if(ch=='\n')
{
s = sb.toString();
break;
}
else
sb.append((char)ch);
}
//3.创建一个SimpleDateFormat对象存储正确的日期格式,若月份大于当前年份的总月数,则会自动增加年数
天数也是一样
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//4.创建一个date对象获取自定义格式后通过字符串转换出来的日期
Date date = sdf.parse(s);
String str = sdf.format(date);
System.out.println(str);
//5.创建GregorianCalendar对象获取该date参数
//目的:使用其中的get方法可以得到日期常量
Calendar c = new GregorianCalendar();
c.setTime(date);
System.out.println(str + "这一天是这一年的第" + c.get(Calendar.DAY_OF_YEAR) + "天" ;)
String[] weeks = {"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
System.out.println(str + "这一天是" + weeks[c.get(Calendar.DAY_OF_WEEK)]);
}
}