Java其他API介绍

有一些类虽然不像集合、多线程、网络编程中的类那样属于Java中的核心类,但是它们在开发过程中给我们带来很多便利,这里就对它们做下简要的介绍和演示。

一、System类

System类中的构造方法是私有的,System类中的属性和方法都是静态的。

常用方法: long currentTimeMills():返回以毫秒值为单位的当前时间。

System 类包含一些有用的类字段和方法。下面的演示就获取了本地系统的信息,并把它们打印出来。

 1 package www.wsw.otherApi;
 2 import java.util.Properties;
 3 import java.util.Set;
 4 
 5 public class SystemTest {
 6     /**
 7      * 跨平台的分隔符,在什么平台上运行,就调用那个平台的换行符
 8      * 另外。可以把系统的常用信息定义成静态字段,方便使用。
 9      */
10     public static String line_speparator=System.getProperty("line.separator");
11     
12     public static void main(String[] args) {
13         //常用方法: long currentTimeMills()
14         long  l1=System.currentTimeMillis();//返回以毫秒值为单位的当前时间
15         System.out.println(l1);//1490005710792
16         demo_1();
17     }
18 
19     public  static void demo_1() {
20         /**
21          * 获取系统信息的键和值,并存储到Properties集合中
22          * Properties是HashTable的子类,它的键和值都是String类型的
23          * 最好使用Properties自己的方法来完成元素的存储和取出操作
24          */
25         Properties properties=System.getProperties();
26         // Set<String> stringPropertyNames()  返回此属性列表中的键集
27         Set<String> nameSet=properties.stringPropertyNames();
28         for(String name:nameSet){
29             String value=properties.getProperty(name);
30             System.out.println(name+"::"+value);
31         }
32     }
33 
34 }

二、 Runtime类

每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接。可以通过 getRuntime 方法获取当前运行时。

应用程序不能创建自己的 Runtime 类实例。

有exec方法和destroy方法,参见演示。

 1 package www.wsw.otherApi;
 2 import java.io.IOException;
 3 
 4 public class RuntimeDemo {
 5 
 6     public static void main(String[] args) throws IOException, InterruptedException {
 7 /**
 8  * Runtime没有构造方法摘要,说明该类不能够创建对象,
 9  * 又该类有非静态方法,则Runtime类有能返回该类实例的静态方法,
10  * 发现这样的方法只有一个,则Runtime类使用了单例设计模式
11  */
12         Runtime r=Runtime.getRuntime();
13         //execute 执行 exe
14         Process p=r.exec("notepad.exe D:\abc\MapDemo.java");//打开记事本,并用它解析D盘目录下的一个文件
15         //Process是一个抽象类
16         Thread.sleep(2000);
17         p.destroy();//杀掉子进程
18         
19     }
20 
21 }

三、Math类

* Math类中都是做数学运算的静态方法
* 常用方法:
* ceil():返回大于等于参数的最小整数
* floor():返回小于等于参数的最大整数
* round():返回参数四舍五入得到的整数
* pow(a,b):返回a的b次方
*
* random():返回[0,1)范围内的伪随机数

 1 package www.wsw.otherApi;
 2 
 3 public class MathDemo {
 4 
 5     public static void main(String[] args) {
 6         
 7         double d1=Math.ceil(-7.67);//-7.0
 8         double d2=Math.floor(-7.67);//-8.0
 9         double d3=Math.round(-7.67);//-8.0
10         sop("d1="+d1);
11         sop("d2="+d2);
12         sop("d3="+d3);
13         
14         sop(Math.pow(10,2)+"");//100.0
15         
16         //获取10个1-6之间的随机数
17         for (int i = 0; i < 10; i++) {
18             //double d= (int)(Math.random()*6)+1;
19             double d=Math.ceil(Math.random()*6);
20             /**
21              * 也可以写为:
22              * Random r=new Random();//Random位于Java.util包中,把随机数封装成了对象
23              * 提供更多的方法
24              * int d=r.nextInt(6)+1;
25              */
26              
27             sop(d+"");
28         }
29 
30     }
31 //方便输出
32     public  static void sop(String str) {
33         System.out.println(str);
34     }
35 
36 }

四、Date类和DateFormat类

Date类属于java.util包,类 Date 表示特定的瞬间,精确到毫秒。

它允许把日期解释为年、月、日、小时、分钟和秒值。它也允许格式化和解析日期字符串。不过,这些函数的 API 不易于实现国际化。

从 JDK 1.1 开始,应该使用 Calendar 类实现日期和时间字段之间转换,使用 DateFormat 类来格式化和解析日期字符串。Date 中的相应方法已废弃。

DateFormat 属于java.text包,是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。

 把毫秒值转化为Date对象
* 1.Date的构造方法
* 2.通过setTime方法
* 作用:可以使用Date类中的方法对Date对象的字段(年月日等)进行操作
*
* 把Date对象转化为毫秒值
* 1.getTime方法
* 作用:可以对毫秒值进行运算,算出时间差等
*
* 其他方法
* boolean before(Date when):判断此日期是否在指定日期之前
* boolean after():判断此日期是否在指定日期之后
* boolean equals():判断此日期和指定日期是否相等
* int compareTo():返回正负零

下面的演示中还涉及到两个转化,把日期字符串转为为Date对象和把Date对象转化为按某种格式的日期字符串,

分别使用了DateFormat类中的parse方法和format方法。

 1 package www.wsw.otherApi;
 2 
 3 import java.text.DateFormat;
 4 import java.text.ParseException;
 5 import java.text.SimpleDateFormat;
 6 import java.util.Date;
 7 
 8 public class DateDemo {
 9 
10     public static void main(String[] args) throws ParseException {
11 
12         methodDemo_3();
13     }
14     /**
15      * 将日期字符串-->日期对象
16      * @throws ParseException  日期转换异常
17      */
18     public static void methodDemo_3() throws ParseException {
19         String str="2017--03--29";
20         DateFormat dateFormat=new SimpleDateFormat("yyyy--MM--dd");
21         /**
22          * String str="2017年3月1日";
23          * DateFormat dateFormat=DateFormat.getDateInstance(DateFormat.LONG);
24          */
25         Date date=dateFormat.parse(str);
26         System.out.println(date);//Wed Mar 29 00:00:00 CST 2017
27         
28     }
29     /**
30      * 将日期对象进行格式化
31      * 将日期对象-->日期格式的字符串
32      *   使用的是DateFormat中的format方法
33      */
34     public  static void methodDemo_2() {
35         Date date=new Date();
36         //获取日期格式器对象,并为默认的风格 可以指定Long full风格等
37         DateFormat  dateFormat1=DateFormat.getDateInstance(DateFormat.FULL);
38         //获取日期/时间格式器对象
39         DateFormat  dateFormat2=DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG);
40         
41         //如果,想要使用自定义的格式呢?
42         DateFormat dateFormat3=new SimpleDateFormat("MM月~dd日--yyyy年");
43         String str1=dateFormat1.format(date);
44         String str2=dateFormat2.format(date);
45         String str3=dateFormat3.format(date);
46         System.out.println(str1);//2017年3月22日 星期三
47         System.out.println(str2);//2017年3月22日 下午02时14分06秒
48         System.out.println(str3);//03月~22日--2017年
49     }
50     
51     public  static void methodDemo_1() {
52         long l=System.currentTimeMillis();
53         Date d=new Date();//把当前时间封装为Date对象
54         Date d2=new Date(1490023019659l);//把毫秒值转化为Date对象
55         System.out.println(d);//Mon Mar 20 23:18:58 CST 2017
56         System.out.println(d2);//Mon Mar 20 23:16:59 CST 2017
57     }
58 
59 }

Date类练习

练习:计算“2017年6月1日”和“2017年3月22日”之间相差多少天?
* 思路:
* 1.把日期字符串转化为Date对象
* 2.把Date对象转化为相应的毫秒值,然后相减
* 3.把毫秒值转化为天

 1 package www.wsw.otherApi;
 2 
 3 import java.text.DateFormat;
 4 import java.text.ParseException;
 5 import java.util.Date;
 6 
 7 public class DateTest {
 8 
 9     public static void main(String[] args) throws ParseException {
10         int day=subDate("2017年5月1日","2017年3月22日");
11         System.out.println(day);
12     }
13 
14     public  static int subDate(String str1, String str2) throws ParseException {
15         DateFormat dateFormat=DateFormat.getDateInstance(DateFormat.LONG);
16         Date date1=dateFormat.parse(str1);
17         Date date2=dateFormat.parse(str2);
18         
19         long time1=date1.getTime();
20         long time2=date2.getTime();
21         long time =time1-time2;
22         int day=getDay(time);
23         return day;
24     }
25 /**
26  * 把毫秒值转化为天数
27  * @param time 毫秒值
28  * @return 天数
29  */
30     public  static int getDay(long time) {
31         int day=(int) (time/1000/60/60/24);
32         return day;
33     }
34 
35 }
View Code

五、Calendar类

Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEARMONTHDAY_OF_MONTHHOUR日历字段之间的转换提供了一些方法,

并为操作日历字段(例如获得下星期的日期)提供了一些方法。

 1 package www.wsw.otherApi;
 2 import java.util.Calendar;
 3 
 4 public class CalendarDemo {
 5 
 6     public static void main(String[] args) {
 7         Calendar c=Calendar.getInstance();
 8         
 9         //使用Calendar类中的方法获取某年的2月有多少天
10         showDays(2016);//2016年2月29日星期一
11     }
12 
13     public static void showDays(int year) {
14         Calendar c=Calendar.getInstance();
15         c.set(year, 2, 1);//把日期设置为某年的三月一号
16         c.add(Calendar.DAY_OF_MONTH, -1);//把日期向前偏移一天
17         showDate(c);
18     }
19     
20 //获取日历字段,得到符合中国人习惯的日期显示
21     public static void showDate(Calendar c) {
22         int year=c.get(Calendar.YEAR);
23         int month=c.get(Calendar.MONTH)+1;//0代表1月
24         int day=c.get(Calendar.DAY_OF_MONTH);
25         int week=c.get(Calendar.DAY_OF_WEEK);//1代表星期天,7代表星期六
26         
27         System.out.println(year+"年"+month+"月"+day+"日"+getWeek(week));//2017年3月22日星期三
28     }
29 
30     public  static String getWeek(int week) {
31         String[] weeks={"","星期天","星期一","星期二","星期三","星期四","星期五","星期六"};
32         return weeks[week];
33     }
34 
35 }
原文地址:https://www.cnblogs.com/wsw-tcsygrwfqd/p/6600547.html