System类
一、Systerm类概述
1、System类是系统类,虚拟机启动时加载系统信息的类,类中的属性和方法都是静态的。不能被实例化,没有构造函数。在 System
类提供的设施中,有标准输入、标准输出和错误输出流;对外部定义的属性和环境变量的访问;加载文件和库的方法;还有快速复制数组的一部分的实用方法。
2、字段摘要
out:标准输出流。默认是控制台。
in:标准输入流。默认是键盘。
二、方法
1、获取系统的属性信息:
Properties prop=System.getProperties();//系统类调用getProperties()方法,结果返回Properties类型。
说明:
1)因为Properties是Hahstable的子类,也就是Map集合的一个子类对象,所以可以通过Map方法取出该集合中的元素。
2)该集合存储的都是字符串,没有泛型定义。
2、获取单个指定属性信息:
String value=System.getProperty(“os.name”);//只获取系统名称(例如当跨平台时可能需要获取单个系统信息,如果某个应用程序只能在windox系统下运行,则可以获取系统名称以后用if判断。)
3、在系统启动时在系统中设置一些自定义信息:
String setProperty(“mykey”,”myvalue”);
4、如何在虚拟机启动时,动态加载一些属性信息:
通过命令:java-D<name>=<value>可以设置特有的系统属性信息
示例:
[java] view plaincopy
1. import java.util.*;
2. class SystemDemo
3. {
4. public static void main(String[] args)
5.
6. Properties prop=System.getProperties();//获取当前的系统属性
7.
8.
9. String value=System.getProperty("os.name");//只获取系统名称属性
10. sop("os.name="+value);
11.
12. System.setProperty("mykey","myvalue");//设置指定键指示的系统属性信息
13.
14.
15. String s= System.getProperty("haha");//当系统中没有该键值,返回null
16.
17.
18.
19.
20. public static void sop(Object obj)
21.
22.
23.
24. }
Runtime类
一、概述
1、每个java应用程序都有一个Runtime类实例,使用应用程序能与其中运行的环境相连接,应用程序不能创建自己的Runtime类的实例,是由系统底层自己创建的,getRuntime方法就是系统运行时自动创建的,只需要调用即可。
2、该类中并没有提供构造函数。说明不可以new对象。那么会直接想到该类中的方法都是静态的。查阅API文档发现,该类中还有非静态方法。说明该类肯定会提供了方法获取本类对象。而且该方法是静态的,并返回值类型是本类类型,该方法就是getRuntime方法。
3、由以上特点可以看出该类使用了单例设计模式完成,保证了对象的唯一性。
二、方法
1、获取本类对象
static Runtime.getRuntime();
2、在单独的进程中执行指定字符串命令
Process p= r.exec(String command);
3、利用应用程序打开某文件
r.exec(“notepad.exe RuntimeDemo.java”);//用记事本打开指定文件
4、在Process中有一个杀掉子进程的方法,可将exec方法开启的进程快速结束,秒杀。
p.destroy();
5、延迟进程
Thread.sleep(4000);//应用程序延迟4秒钟。
示例:
[java] view plaincopy
1. class RuntimeDemo
2. {
3. public static void main(String[] args)throws Exception
4.
5. Runtime r=Runtime.getRuntime();//获取本类对象
6.
7. Process p=r.exec("notepad.exe");//执行记事本程序
8. r.exec("notepad.exe RuntimeDemo.java");//用记事本打开指定文件
9.
10. Thread.sleep(3000);//让线程等待3秒
11. p.destroy();//杀掉指定进程
12.
13. }
时间类
一、Date类
1、概述
Date类表示特定的瞬间,精确到毫秒。
java中的默认显示格式为:MonJun 10 22:35:21 CST2013
2、自定义格式
默认的格式不一定满足每个人的需求,那么就需要自定义格式化模式。因为Date类中的大部分方法已过时,所以只能找其子类来实现。子类DateFormat中有format方法可以实现,但是DateFormat是抽象类,不能实例化。但是其下有个SimpleDateFormat子类,可以定义时间模式。
具体步骤:
1)创建Date对象
2)将时间模式封装到SimpleDateFormat对象中
3)调用format方法让格式化模式指定Date对象
代码如下:
[java] view plaincopy
1. import java.util.*;
2. import java.text.*;
3. class DateDemo
4. {
5. public static void main(String[] args)
6.
7. Date d=new Date();//创建Date对象
8. //sop(d);
9.
10. 将模式封装到SimpleDateformat对象中。
11. SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日E HH:mm:ss"); //Date对象的格式“XXXX年XX月XX日星期X 时:分:秒”
12. //调用format方法让模式格式化指定Date对象。
13.
14.
15.
16.
17. public static void sop(Object ojb)
18.
19.
20.
21. }
二、Carendar类
1、概述:
1)Calendar是一个抽象类,它为特定瞬间与一组诸如YEAR、MONTH、DAY_OF_MONTH等日历字段之间的转换提供了一些方法。
2)Calendar可以对年月日等时间进行获取。并提供了相应的子段值。可参阅API文档。
2、方法:
2.1、基本获取时间
1)获取年份:Calendar.YEAR
2)获取月份:Calendar.MONTH
3)获取日期:Calendar.DAY_OF_MONTH
4)获取星期:Calendar.DAY_OF_WEEK
5)获取小时:Calendar.HOUR_OF_DAY
6)获取分钟:Calendar.MINUTE
7)获取秒数:Calendar.SECOND
2.2、设置时间:
1)根据日历的规则,为给定的日历字段添加或减去指定的时间量:
void add(int field,int amount);
2)获取指定的日历字段对应的时间值:
int get(int field);
3)将给定日历字段对应的时间值设置为给定值:
void set(int field,int value);
设置日历字段 YEAR、MONTH和DAY_OF_MONTH的值:
void set(int year,int month,int date);
示例:
[java] view plaincopy
1. import java.util.*;
2. class CalendarDemo
3. {
4. public static void main(String[] args)
5.
6.
7.
8. sop(pattern(c));//显示今天日期和当前时间
9.
10. c.add(Calendar.YEAR,3);//年份变为3年后
11.
12. sop(pattern(c));//显示指定日期和时间
13.
14.
15.
16. //获取指定日期和时间
17. public static String pattern(Calendar c)
18.
19. String s=year(c)+month(c)+day(c)+week(c)+" "+time(c);
20. return s;
21.
22.
23. //获取年份
24. public static int year(Calendar c)
25.
26. return c.get(Calendar.YEAR);
27.
28. //获取月份
29. public static String month(Calendar c)
30.
31. String[] yue={"一月","二月","三月","四月",
32. "五月","六月","七月","八月",
33. "九月","十月","十一月","十二月"};
34. return yue[c.get(Calendar.MONTH)];
35.
36. //获取日期
37. public static int day(Calendar c)
38.
39. return c.get(Calendar.DAY_OF_MONTH);
40.
41. //获取星期
42. public static String week(Calendar c)
43.
44. String[] day={"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
45. return day[c.get(Calendar.DAY_OF_WEEK)];
46.
47. //获取时间,格式为时:分:秒
48. public static String time(Calendar c)
49.
50. String s=c.get(Calendar.HOUR_OF_DAY)+":"+c.get(Calendar.MINUTE)+":"+c.get(Calendar.SECOND);
51. return s;
52.
53.
54. //打印输出
55. public static void sop(Object obj)
56.
57.
58.
59. }
小练习:
[java] view plaincopy
1. /*
2. 练习
3. 1、获取任意年的二月有多少天:
4. 思路:根据指定年设置一个时间就是
5. c.set(year,2,1)//某一年的3月1日。
6. c.add(Calenar.DAY_OF_MONTH,-1);//3月1日,往前推一天,就是2月最后一天。
7.
8. 2、获取前一天的现在这个时刻
9. 思路:c.add(Calenar.DAY_OF_MONTH,-1);
10.
11. 3、计算有效上课天数,每周六日不上课,计算任意年从九月到十月的有效上课天数
12. 思路;
13. 1、根据指定年设定一个时间就是c.set(year,8,1)//某一年的9月1日
14. 2、定义一个计数器,判断指定时间是否是星期六或者星期日,不是则计数加1
15. 3、日期偏移量1天,直至判断到这个月的最后一天
16. */
17.
18. import java.util.*;
19.
20. class OtherClassTest
21. {
22. public static void main(String[] args)
23.
24. //练习1测试
25. sop("2014年二月份有"+whatDay(2014)+"天");
26.
27. //练习2测试
28. sop("昨天的现在这个时刻:"+lastNowTime());
29.
30. //练习3测试
31. sop("2014年9月到10月上了"+howDay(2014)+"天课");
32.
33.
34. //练习1
35. public static int whatDay(int year)
36.
37.
38. c.set(year,2,1); //某一年的3月1号
39. c.add(Calendar.DAY_OF_MONTH,-1); //3月1号往前移1天就是2月的最后一天
40. return c.get(Calendar.DAY_OF_MONTH); //将2月的最后一天返回来就是2月的天数
41.
42.
43. //练习2
44. public static String lastNowTime()
45.
46.
47. c.add(Calendar.DAY_OF_MONTH,-1);
48. return pattern(c);
49.
50.
51. //练习3
52. public static int howDay(int year)
53.
54.
55. c.set(year,8,1); //设置时间为某一年的9月1号
56. int count=0;
57. for (int x=c.get(Calendar.DAY_OF_MONTH); x<=30;x++ )
58.
59. if(c.get(Calendar.DAY_OF_WEEK)!=1&&c.get(Calendar.DAY_OF_WEEK)!=7) //如果不是周六日就加1自增
60.
61. c.add(Calendar.DAY_OF_MONTH,1); //如果是周六日则不自增,日期往后推一天
62.
63. return count;
64.
65.
66. //获取指定日期和时间
67. public static String pattern(Calendar c)
68.
69. String s=year(c)+month(c)+day(c)+week(c)+" "+time(c);
70. return s;
71.
72.
73. //获取年份
74. public static int year(Calendar c)
75.
76. return c.get(Calendar.YEAR);
77.
78. //获取月份
79. public static String month(Calendar c)
80.
81. String[] yue={"一月","二月","三月","四月",
82. "五月","六月","七月","八月",
83. "九月","十月","十一月","十二月"};
84. return yue[c.get(Calendar.MONTH)];
85.
86. //获取日期
87. public static int day(Calendar c)
88.
89. return c.get(Calendar.DAY_OF_MONTH);
90.
91. //获取星期
92. public static String week(Calendar c)
93.
94. String[] day={"","星期日","星期一","星期二","星期三","星期四","星期五","星期六"};
95. return day[c.get(Calendar.DAY_OF_WEEK)];
96.
97. //获取时间,格式为时:分:秒
98. public static String time(Calendar c)
99.
100. String s=c.get(Calendar.HOUR_OF_DAY)+":"+c.get(Calendar.MINUTE)+":"+c.get(Calendar.SECOND);
101. return s;
102.
103.
104. //打印输出
105. public static void sop(Object obj)
106.
107.
108.
109. }
Math类
一、概述
Math 类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。该类全为静态方法。
二、方法
1、doubleceil(doubled);//返回大于指定数据的最小整数
2、doublefloor(doubled);//返回小于指定数据的最大整数
3、doublepow(doublea,double b);//返回a的b次方
4、longround(doubleb);//返回b四舍五入的值
5、doublerandom();//返回正号的double值,是一个大于等于0.0且小于1.0的随机数
三、Random类
这是java.util中的一个单独的类,该类对象用于获取随机数。与Math中的random方法是一样的,不过这个类有自身的方法,可以将相应的随机数强转为指定基本数据类型。
如:int nextInt(intn);//返回一个伪随机数,它是取自此随机数生成器序列的、在 0(包括)和指定值(不包括)之间均匀分布的 int值。
小练习:
[java] view plaincopy
1. /*
2. 练习:给定一个小数,保留该小数的后n位。
3. 思路: 1、先把给定小数乘以10的n次方,四舍五入保留整数部分
4. 2、再把该整数除以10的n次方
5. */
6. class MathTest
7. {
8. public static void main(String[] args)
9.
10.
11. double d=retention(13.6572,2);
12.
13. System.out.println("d="+d);
14.
15.
16. //保留小数位方法
17. public static double retention(double d,int n)
18.
19. double d1=d*Math.pow(10,n);//先将要保留的小数位变为整数
20. long l=Math.round(d1);//将小数四舍五入
21. return l/Math.pow(10,n);//返回保留了指定小数位的小数
22.
23. }