1 //java基础视频教程第18天-01-其他对象(System)
2 /*
3 这节课讲解了System中的一些方法,它中的方法全是静态的,重点讲解了System中的getProperties()方法
4 getProperty()返回的是Properties类,Properties属于HashTable的子类,然而HashTable又属于Map接口,
5 所以,可以用Map中的keySet,entrySet方法打印出Properties中的键值对,这些键值对就是系统的一些信息,
6
7 然后就是获取单个系统信息
8 System.getProperty(要获取的单个的键)
9 然后自己设定一个系统信息
10 System.setProperty(key,value)
11 然后就是在java虚拟机启动时动态加载一些属性
12 java -D(name)=(value) 类名
13
14 */
15 import java.util.*;
16 class SystemDemo
17 {
18 public static void main(String[] args)
19 {
20 Properties p = System.getProperties(); //这就相当于一个Map集合 public static Properties getProperties()
21
22 //获取单个系统信息
23 sop(System.getProperty("os.name")); //返回系统名称 Winsdow71,用于安装软件时判断是那个系统 public static String getProperty(String key)
24 //自己设定一个个人的系统信息
25 sop(System.setProperty("nmlgb","我去年买了个表")); //public static String setProperty(String key,String value)
26 //动态加载一些属性信息
27 //sop(System.getProperty("wcnm")); //由于系统中没有wcnm这个属性,但是返回来的是一个null,又由于系统属性都会在java虚拟机开启时都会读取,所以我们可以再虚拟机中动态的加载一些属性信息
28 //所以在我们用java这个命令的时候就是在开启虚拟机,开启时,我们就可以通过-D(name)=(value)来动态加载一些属性
29 //例如:java -D(wcnm)=("哇哈哈") SystemDemo,这个主要在tamcat服务中药用到
30 //获取全部的系统信息
31 for(Object o:p.keySet())
32 {
33 String s =(String)o; //明显这个地方有一些问题,因为没涉及到泛型就必须转型,如果这里使用到String的某些方法就必须转型,注意点!!!!!!!!
34 sop(s+"---"+p.get(s)); //打印出的一些列键值对就是当前系统的一些全面的描述,
35 }
36
37 }
38 public static void sop(Object o)
39 {
40 System.out.println(o);
41 }
42 }
1 //java基础视频教程第18天-02-其他对象(Runtime)
2 /*
3 本节课主要讲了Runtime中的exec方法public Process exec(String command)
4 throws IOException
5 Runtime这个类没有构造方法,不能new对象,(为啥子??),并且它的方法中只提供了一个静态方法getRuntime,返回值就是本生Runtime,而其他的方法都是非静态的
6 所以这里应该想到单例设计模式
7 exec是execute(执行)的缩写,传递的参数可以是一个可执行文件,返回的是一个进程,由于传递的参数是一个可执行文件,
8 这个文件可能会找不到,所以会出异常,所以要抛异常
9 */
10 class RunTimeDemo
11 {
12 public static void main(String[] args) throws Exception //exec()方法要抛异常,因为它中的参数位置不一定正确,不正确时就要抛异常,一般抛的是IO异常,但这里为了不导入IO包就直接抛Excption异常
13 {
14 Runtime r = Runtime.getRuntime(); //这里用了单例设计模式,返回一个Runtime类型,Runtime类型里面有很多方法都是非静态的
15 Process p = r.exec("D:\\Program Files (x86)\\Shark\\Shark.exe"); //中间的每个\都要被转移,否则出错 exec作用就是执行某个可以执行文件
16 //exec()方法返回的是一个进程Process,进程中也有很多方法,其中一个就是杀掉进程destroy
17 Thread.sleep(10000); //让这个进程谁10000毫秒
18 p.destroy(); //干掉这个进程
19
20 //Runtime当中的方法不仅仅是执行一个程序,而且可以用某个软件打开某个文件
21 Process c = r.exec("D:\\Program Files (x86)\\DuoMi\\DuoMi.exe C:\\Users\\Administrator\\Desktop\\1.mp3"); //注意是空格哈,这个好好玩!!
22
23
24
25 }
26 }
1 //java基础视频教程第18天-03-其他对象(Date)
2 /*
3 这节课主要讲了Date类,Date类中只有两个现用的构造方法,其他的已经废弃
4 但是Date对象打印出来的时间不便于观看,需要把时间格式化,就用到了Dateformat,而DateFormate类是抽象的,但它有一个子类SimpleDateFormat可以固定一个时间模板,
5 而时间模板有个format可以将一个时间以模板形式的打印出来
6 */
7 import java.util.*;
8 import java.text.*; //由于类DateFormat以及子类SimpleDateFormat都是text里面的类,所以加载这个包
9 class DateDemo
10 {
11 public static void main(String[] args)
12 {
13 Date d = new Date(); //这样打印出来并不便于观看,为了便于观看,我们参见DateFormat,DateFormat是一个抽象的方法,它有一个子类SimpleDateFormat
14 sop(d);
15 SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 E HH:mm:ss"); //封装一个模板对象,这里的E走的是本地化星期
16 sop(sdf.format(d)); //SimpleDateFormat有个format方法public StringBuffer format(Date date, StringBuffer toAppendTo,FieldPosition pos)(后面两个参数有些不懂)
17
18 }
19 public static void sop(Object o)
20 {
21 System.out.println(o);
22 }
23 }
24
1 //java基础视频教程第18天-04-其他对象(Calendar)
2 /*
3 本节课主要讲解了Calender这个类中的getInstance()方法,get()方法,以及set()方法,add()方法
4 注意一点Calendar获取的月份数字和星期天数字都要加1
5 */
6 import java.util.*; //Date用到了这包
7 import java.text.*; //SimpleDateFormat用到这个包
8 class CalendarDemo
9 {
10 public static void main(String[] args)
11 {
12 /*单独获取年份
13 Date d = new Date();
14 SimpleDateFormat sdf = new SimpleDateFormat("yyyy年");
15 sop(sdf.format(d)); //返回的是一个StringBuffer
16 */
17 //由于Date对象中的getYear()方法已经过时,但从JDK1.1之后就被Calendar代替了,这里有一个新的类Calendar,它当中有getInstance静态方法可以获取一个当地当时的Calendar信息
18 Calendar c = Calendar.getInstance(); //这个Calendar就像一个map集合,都有键值对对应,要想获取某个值,只需get(Calender.名称)即可
19 sop(c);
20 sop(c.get(Calendar.YEAR)+"年"); //要加上这个类的Calendar
21 sop(c.get(Calendar.MONTH)+1+"月"); //月份要加1,注意哈 //月份可以用查表发输出大写的月份
22 sop(c.get(Calendar.DAY_OF_MONTH)+"日"); //记住get返回的是一个int类型
23 sop("星期"+(c.get(Calendar.DAY_OF_WEEK)-1)); //星期几,这里的DAY_OF_WEEK是国外的说法,星期天就是1,星期一就是2,所以要减去1,星期天也可以用查表发
24
25 String[] months = {"一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"}; //月份可以用查表发输出大写的月份
26 String[] weeks = {"","星期天","星期一","星期二","星期三","星期四","星期五","星期六"}; //前面加一个"",是因为2代表星期1,星期天也可以用查表发
27 sop(months[c.get(Calendar.MONTH)]);
28 sop(weeks[c.get(Calendar.DAY_OF_WEEK)]);
29 }
30 public static void sop(Object o)
31 {
32 System.out.println(o);
33 }
34 }
1 //java基础视频教程第18天-04(1)-其他对象(Calendar)
2 /*
3 本章是上一章的延续,讲解了set,add那个方法,
4 以及两道作业题目:
5 计算任意年2月有多少天,(思路:先设置时间set(任一年,2,1)为3月1号,然后减去1天,就可以查看到当年二月有多少天)
6 计算昨天的这个时候(思路:现获取现在这个时刻,然后减去24小时就是昨天现在这个时刻或者是今天减去1天)
7 set方法有几种重写格式
8 */
9 import java.util.*;
10 import java.text.*;
11 class CalendarDemo1
12 {
13 public static void main(String[] args)
14 {
15 Calendar c = Calendar.getInstance();
16 /*
17 c.set(2100,0,1); //这里的0代表1月,记住月份需要加1
18 c.add(Calendar.YEAR,-1000); //add方法用于改变时间的的,可以加可以减,年月日时分秒都可以改
19 sop(c);
20 sop(c.get(Calendar.YEAR));
21 */
22 //题目1(计算某年的二月有多少天)
23 getMonthNumber(c,2012);
24 //题目2(获取昨天的今天这个时候)
25 getYesterdayNow(c);
26 }
27 public static void sop(Object o)
28 {
29 System.out.println(o);
30 }
31 public static void getMonthNumber(Calendar c,int year)
32 {
33 c.set(year,2,1);
34 c.add(Calendar.DAY_OF_MONTH,-1);
35 sop(c.get(Calendar.DAY_OF_MONTH));
36 }
37 public static void getYesterdayNow(Calendar c)
38 {
39 c.add(Calendar.DAY_OF_MONTH,-1);
40 String time = c.get(Calendar.YEAR)+"-"+c.get(Calendar.MONTH)+"-"+c.get(Calendar.DAY_OF_MONTH)+" "+c.get(Calendar.HOUR)+":"+c.get(Calendar.MINUTE)+":"+c.get(Calendar.SECOND);
41 sop(time);
42 }
43 }
1 //java基础视频教程第18天-05-其他对象(Math-Random)
2 /*
3 本节课主要讲解java.lang包中的Math中的一些方法,这些方法都是静态的
4 主要讲解了ceil,floor,round,pow,random
5 public static double ceil(double a)
6 public static double floor(double a)
7 public static double pow(double a,double b)
8 还有java.util包中的Rondom类中nextInt(int)方法
9
10
11 练习:给定一个小数,保留该小数后两位
12 */
13 import java.util.*;
14 class MathDemo
15 {
16 public static void main(String[] args)
17 {
18 double a = Math.ceil(3.1415926); //返回大于或等于参数的最小double整数
19 sop(a);
20 double b = Math.floor(3.1415926); //返回小于或等于参数的最大double整数
21 sop(b);
22 long c = Math.round(3.1415926); //四舍五入,返回的是long类型
23 sop(c);
24 double d = Math.pow(2,3); //返回2的3次方,返回的是一个double数
25 sop(d);
26
27 for(int x=0;x<10;x++)
28 {
29 //System.out.println(Math.random()); //返回的是0-1之间的随机数,包含0,不包含1
30 int y = (int)(Math.random()*10+1); //返回的是doble类型转换为int则就是整数,这里*10+1是为了取到0-10的整数
31 sop(y);
32 }
33
34 //下面讲解了java.util包中的Random类中的nextInt(int n)
35 for(int z=0;z<10;z++)
36 {
37 Random r = new Random();
38 sop(r.nextInt(10)+1); //加1是为了取到10
39 }
40
41 getNumber(3.1);
42 }
43 //题目:给定一个小数保留该小数的后两位,此代码有BUG
44 public static void getNumber(double x)
45 {
46 int y = (int)(x*100);
47 double z = (double)y/100;
48 sop(y);
49 sop(z);
50
51 }
52 public static void sop(Object o)
53 {
54 System.out.println(o);
55 }
56 }