黑马程序员——透过几个实用类谈查阅API文档

来源:互联网 发布:知乎和天涯哪个真实 编辑:程序博客网 时间:2024/06/02 05:42

----------------------ASP.Net+Android+IOS开发、.Net培训、期待与您交流!----------------------

 

一、System类

System类描述了系统的一些信息,没有提供构造方法或者返回类型为本类的静态方法,所以它不能被实例化,但是它提供的所有方法都是静态方法,所以可以直接通过类名.方法进行使用。其中它可以通过getProperties()方法获取系统属性信息,返回的数据类型是Properties对象。Properties是Hashtable的子类,也就是说Properties类是Map集合的一个子类对象,那么可以通过map的方法取出该集合中的元素。

另外,可以用System.setProperty(key,value)方法在系统中自定义一些特有信息;可以用System.getProperty(key)方法来获取指定属性信息;可以使用迭代器和keySet()来获取所有属性信息,由于Properties集合中存储的都是字符串,没有泛型定义,所以不可以用entrySet()来执行这一操作。

 

二、Runtime类

Runtime类使得应用程序能够与其运行的环境相连接。通过查看API文档,发现该类也没有提供构造函数,但是它的方法中也不全是静态方法,而且非静态方法占大多数。通过研究发现,该类提供了一个静态的getRuntime()方法,且返回类型为Runtime对象。所以我们可以通过这个方法实现对Runtime对象的实例化,这个特点可以看出该类使用了单例设计模式,保证了对象只能被初始化一次。

Runtime r =Runtime.getRuntime();//初始化Runtime对象

//调用exec方法,可以指定执行什么程序,其中多个程序通过空格隔开,返回值是Process对象。

Process p =r.exec("notepad.exe  SystemDemo.java");

 

三、Date类

Date类表示特定的瞬间,精确到毫秒。

可以直接使用Date d = newDate();建立Date对象,但是这样打印出来的时间是格林威治标准时,太难看懂了,所以本着用户体验最佳的原则,可以使用以下方法:

//将模式封装到SimpleDateformat对象中。在这个构造函数中,我们可以按照自己的需求定义时间格式。

SimpleDateFormat sdf = newSimpleDateFormat("yyyy年MM月dd日E hh:mm:ss");

//将时间按照定义好的模板对象规范,调用format方法让模式格式化指定Date对象。

String time = sdf.format(d);

另外Date类中也有有参构造函数,比如Date(long date),可以在构造函数中传入一个毫秒数,自从标准基准时间1970年 1 月 1 日 00:00:00到此时经历的毫秒数。具体操作如下:

long l =System.currentTimeMillis();//获取系统当期时间,距离标准基准时间的毫秒数。

Date d1 = newDate(l); //将参数传入构造函数中。

通过查看API文档,可以发现在Date类中还存在一些已过时的方法,比如getYear(),getHours()等等方法返回时间特定的字段,都是被Calendar类中的方法所代替了。

 

四、Calendar类

Calendar类也是一个单例设计模式的类,它没有构造函数,要用getInstance()方法进行对象的初始化,即

Calendar c =Calendar.getInstance();

Calendar类中用来替代Date类中获取特定的字段的方法其实就是get(int field)方法,方法中的int类型字段,Calendar中都已经定义好了,用静态常量表示。比如c.get(Calendar.YEAR)是获取年份;c.get(Calendar.MONTH)是获取月份的,但是由于在java中计数都是从0开始的,所以这里的月份要加1才是真正的月份;c.get(Calendar.DAY_OF_WEEK)是获取星期的,这里星期的第一天和第一个星期中的最小一天(从1 到 7),如果加1之后,周日也无法表示。

为了解决这个问题,可以采用查表法。

String[] mons ={"一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"};//mons角标0-11分别表示一月到十二月。

//weeks角标1-7分别表示星期日到星期六

String[] weeks ={"","星期日","星期一","星期二","星期三","星期四","星期五","星期六",};

//获取月份和星期的字段值,传入角标中。

int index = c.get(Calendar.MONTH);

int index1 =c.get(Calendar.DAY_OF_WEEK);

System.out.println(c.get(Calendar.YEAR)+"年");

//根据角标进行查表,从而打印出相应字段。

System.out.println(mons[index]);

System.out.println(weeks[index1]);

 

另外,Calendar类中有可以更改时间的方法,如add(f,增减量),可以将增减量添加到f字段中;set(int field,int value) 方法可以将给定的日历字段设置为给定值。add方法可以更改了某一字段但是整个时间随之更改,比如如果当前日期是4月1号,在更改DAY字段使得减1之后,日期会更改为3月31号。

 

五、Math & Random类

Math &Random类是两个工具类,方法全是静态方法。

记住几个常见方法,其余使用时查阅API文档即可。常见方法有:

Math提供一些数学运算的方法——

ceil返回大于指定数据的最小整数;floor返回小于指定数据的最大整数;round四舍五入;pow(a,b):a的b次幂;random:产生随机数[0.0,1.0].

Random是用于产生随机数——

Random r = new Random();

int d =r.nextInt(10)+1;//nextInt(n)返回下一个[0,n)之间的int值。

 

 

 通过以上几个类的学习,可以总结出对于一个陌生类,如何通过查阅API文档来学会使用这个类。首先一个类,如果没有提供构造函数,那么这个类就有可能是一个工具类,只有静态方法,都可以通过类名.方法名使用这些方法;但是如果它的方法不仅是静态方法,那么它的静态方法中肯定会提供一个返回类型是本类对象的方法,通过这个方法,可以实现对对象的初始化。这样的类使用了单例设计模式。另外,像Date类、Calendar类的,使用的时候要先理解相关文字介绍,才能理解该类的使用方式。

 

----------------------ASP.Net+Android+IOS开发、.Net培训、期待与您交流!----------------------

 详细请查看:http://edu.csdn.net