JAVA基础--JAVA API常见对象(其他API)13

一、其他API

  1.System类

    

     system类中的方法和成员变量都是静态的, 不需要创建System对象就可以直接使用。

      

 1 /*
 2  * 演示System的使用
 3  */
 4 public class SystemDemo {
 5     public static void main(String[] args) {
 6         
 7         /*
 8          * System类中的静态成员变量: out 和 err的区别
 9          * out和err都可以把需要输出的信息展示在控制台上。
10          * 但是由于JVM的底层针对out和err是两种不同的实现机制
11          * 在输出的时候,数据的显示先后次序并不能确定
12          * 
13          * 建议:开发中要么全部是out,要么全部使用err
14          */
15         System.out.println("你好");
16         System.err.println("hello");
17         //强制退出JVM
18         System.exit(0);
19         //获取系统的当前时间,得到的是当前时间距离1970-1-1 0:0:0秒的时间差
20         //获取到的是一个毫秒值。1秒=1000毫秒
21         System.out.println(System.currentTimeMillis());
22     }
23 }

  

结论:只要获取和系统相关的信息时就应该考虑使用System类。

  2. Math类   

    Math:它封装了和数学运算相关的方法。

    

    Math类中的方法都是静态的,可以通过类名直接调用。

    

 1 /*
 2  * 演示Math类
 3  */
 4 public class MathDemo {
 5     public static void main(String[] args) {
 6         
 7         System.out.println(Math.E);
 8         System.out.println(Math.PI);
 9         
10         //返回大于指定数据的最小整数
11         System.out.println(Math.ceil(4.56));
12         //返回小于指定数据的最大整数
13         System.out.println(Math.floor(4.56));
14         //四舍五入
15         System.out.println(Math.round(4.56));
16         //0~1之间的一个随机数
17         System.out.println(Math.random());
18     }
19 }

 

  3. Random类

    

    Random类它是专门负责产生随机数的类。

    

 1 /*
 2  * 演示随机数类
 3  */
 4 public class RandomDemo {
 5     public static void main(String[] args) {
 6 
 7         // 创建产生随机数的那个对象
 8         Random r = new Random();
 9 
10         System.out.println(r.nextFloat());
11         System.out.println(r.nextDouble());
12         System.out.println(r.nextInt());
13         System.out.println(r.nextBoolean());
14         System.out.println(r.nextLong());
15         System.out.println(r.nextInt(100));
16         
17         for( int i = 0 ; i < 6 ; i++){
18             System.out.println(r.nextInt(6) + 1);
19         }
20     }
21 }

 

   4. 日期类

      a. Date类 

    生活中有时间日期数据,在Java中也有对应的类描述这些数据。

     

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

在 JDK 1.1 之前,类 Date 有两个其他的函数。它允许把日期解释为年、月、日、小时、分钟和秒值。它也允许格式化和解析日期字符串。不过,这些函数的 API 不易于实现国际化。从 JDK 1.1 开始,应该使用 Calendar 类实现日期和时间字段之间转换,使用 DateFormat 类来格式化和解析日期字符串。Date 中的相应方法已废弃。

Date类是表示时间日期数据的对象,但是这个类中的方法不利于其他国家程序员进行时间的显示等操作,其中大部分的方法已经过时,由Calendar和DateFormat类代替。

 1 /*
 2  * 演示Date类
 3  *     构造方法:
 4  *  Date()    
 5  *      Date类中的空参数的构造方法:它的目的仅仅是将当前的时间封装成Date对象
 6  *  Date(long date) 
 7  *      Date类中的接收long类型的整数构造方法,它的目的是将指定的一个毫秒值封装成Date对象
 8  *  普通的方法:
 9  *    getTime()  获取Date对象所表示的当前时间对应的毫秒值
10  *    setTime(long time) 将当前Date对象对应的毫秒值修改为指定的毫秒值
11  *    
12  * Date类中需要掌握:
13  *     Date对象和毫秒值之间的转换。
14  *  Date对象转毫秒值的作用,是为了计算2个时间之间的时间差
15  *  计算出来的时间差是一个毫秒值,需要手动的转成具体的天数,或者月,或者年等数据
16  *  
17  */
18 public class DateDemo {
19     public static void main(String[] args) {
20         
21         //使用Date类中的空参数的构造方法创建Date对象
22         Date date = new Date();
23         Date date2 = new Date(999900001231L);
24         //date.setTime(1230L);
25         //打印
26         System.out.println(date);
27         System.out.println(date2);
28     }
29 }

       b.日期时间格式化类

        b.1 DataFormat类介绍

          

    

DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。日期/时间格式化子类(如 SimpleDateFormat)允许进行格式化(也就是日期 -> 文本)、解析(文本-> 日期)和标准化。将日期表示为 Date 对象,或者表示为从 GMT(格林尼治标准时间)1970 年 1 月 1 日 00:00:00 这一刻开始的毫秒数。

DateFormat 提供了很多类方法,以获得基于默认或给定语言环境和多种格式化风格的默认日期/时间 Formatter。格式化风格包括 FULL、LONG、MEDIUM 和 SHORT。方法描述中提供了使用这些风格的更多细节和示例。

DateFormat类:它可以完成Date对象和字符串之间的转成。但是由于这个类是抽象类,不能直接去创建对象,并且这个类对日期和字符串之间的转换方式只有4种,并不能满足用户想要的格式:

 1 /*
 2  * 简单演示DateFormat类
 3  */
 4 public class DataFormatDemo {
 5     public static void main(String[] args) {
 6         
 7         //获取到DateFormat 对象
 8         DateFormat format = DateFormat.getInstance();
 9         
10         //将日期对象转成字符串
11         Date d = new Date();
12         String s = format.format(d);
13         System.out.println(s);
14         
15     }
16 }

 

      b.2 SimpleDateFormat类介绍

      

SimpleDateFormat:它和DateFormat功能一致。都是完成Date对象和字符串之间的转换。

SimpleDateFormat是DateFormat的子类,并且在创建SimpleDateFormat对象的时候,如何完成日期和字符串之间的转换格式书写,由开发人员自己指定。

      

      

创建SimpleDateFormat对象时如何指定转换的格式:

创建SimpleDateFormat对象指定的格式:

         年使用yyyy

         月MM

         天dd

         时HH

         分mm

         秒ss

         中间的分隔符由程序员自己指定。

解析日期:将字符串形式的日期数据转成Date对象 使用的SimpleDateFormat类中的parse方法

格式化日期:将Date对象转成字符串形式的日期数据,使用SimpleDateFormat类中的format方法

  

 1 /*
 2  * 演示SimpleDateFormat类
 3  */
 4 public class SimpleDataFormatDemo {
 5     public static void main(String[] args) throws ParseException {
 6         method3();
 7     }
 8     /*
 9      * 如下的2个字符串形式的时间数据,计算它们的时间差
10      *     "2016年01月02日 10:27:14"
11      *     "2019-11/22 10:27:14"
12      * 计算它们之间相隔多少天?
13      */
14     public static void method3() throws ParseException {
15         
16         String s = "2016年01月02日 10:27:14";
17         String s2 = "2016-01/03 10:27:14";
18         
19         //需要定义2个不同的格式器对象
20         SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
21         SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM/dd HH:mm:ss");
22         
23         //解析
24         Date d = sdf.parse(s);
25         Date d2 = sdf2.parse(s2);
26         
27         //需要获取不同的Date对象对应的毫秒值
28         long t = d.getTime();
29         long t2 = d2.getTime();
30         
31         //计算时间差
32         long day = Math.abs((t - t2) / 1000 / 60 / 60 / 24);
33         System.out.println(day);
34     }
35     //将字符串数据转成Date对象
36     public static void method2() throws ParseException {
37         
38         String s = "2016年01月02日 10:27:14";
39         
40         //创建格式器对象
41         SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
42         
43         //将字符串转成Date对象
44         Date d = sdf.parse(s);
45         
46         System.out.println(d);
47     }
48     //将日期对象转成字符串数据
49     public static void method() {
50         // 创建格式器对象
51         SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
52 
53         // 将日期对象转成字符串
54         Date d = new Date();
55         String s = sdf.format(d);
56         System.out.println(s);
57     }
58 }

    3. 日历类

      

Calender类:它是日历类。其实这个类相当于一个容器。这个容器中保存者当前时间相关的所有信息。

         比如:今天是一年中的第几天,今天是一周中的第几天,今天是这个月的第几周,今天是几月,几日,时分秒等信息都保存在这个容器中。

Calender类 年月日时分秒,12个月 ,星期 等对应的英文数据都封装成静态的成员变量。

Calender类是抽象类,它中提供了静态的getInstance方法获取到Calender对象()。

 

 

 1 //简单演示Calendar
 2     public static void method() {    
 3         
 4         //获取Calendar对象
 5         Calendar c = Calendar.getInstance();
 6         
 7         System.out.println(c);
 8         
 9         System.out.println(c.get( Calendar.YEAR  ));
10         /*
11          * 计算机中的月份是从 零开始的。
12          * 0 表示 1月
13          * 1 表示2月
14          * 11表示12月
15          * 12表示下一年的1月
16          */
17         System.out.println(c.get( Calendar.MONTH  ));
18         System.out.println(c.get( Calendar.DAY_OF_MONTH  ));
19         
20     }
21 
22 
23     /*
24      *  计算任意一年的2月有多少天?
25      *  由于时间数据是连续的,因此我们可以将当前的时间设置为
26      *  当年的3月1日,然后让天数-1,当前的时间就自动的变为了2月的最后一天。
27      *  我们只需要将当前这个月中的天数获取出来,就是二月共计有多少天
28      */
29     public static void method2() {
30         
31         //获取到Calendar对象
32         Calendar c = Calendar.getInstance();
33 
34         // 设置当前的时间为 3月 1日
35         for (int year = 1000; year < 2555; year++) {
36             c.set(year, 2, 1);
37             // 让天数 -1
38             c.add(Calendar.DAY_OF_MONTH, -1);
39             // 获取到当前处理后的月中的天数
40             System.out.println(year + "年的2月有 " + c.get(Calendar.DAY_OF_MONTH) + "天");
41         }    
42     }

 

 

 二 、 JDK5的特性

   1. 静态导入

    

 1 /*
 2  * 静态导入演示
 3  *  在程序中如果需要使用某些类中的静态成员,可以在程序开始的时候,
 4  *  先将这些静态成员导入到程序中
 5  *  然后在程序中就可以直接使用静态成员,而不需要指定类名
 6  */
 7 import static java.lang.Math.PI;
 8 import static java.lang.System.out;
 9 
10 public class StaticImportDemo {
11     public static void main(String[] args) {
12         out.println(PI);
13     }
14 }

  2.  可变参数

 

 1 /*
 2  * 演示可变参数
 3  */
 4 public class ParameterArgumentsDemo {
 5     public static void main(String[] args) {
 6 
 7         int sum = getSum(1, 2, 4);
 8         System.out.println(sum);
 9         /*
10          * 如果需要操作多个类型相同的数据的,将这些数据需要传递给某个方法
11          * 在JDK5之前:可以先将这些数据存储到数组中,然后将数组传递给方法
12          * 
13          * 到JDK5之后,可以使用可变参数的技术来接收不确定个数的数据
14          * 
15          */
16         int[] arr = {11,22,33,44,55,66,77,88};
17         
18         int sum2 = getSum(12,33,44,55 );
19         System.out.println(sum2);
20     }
21     
22     /*
23      * 演示定义可变参数的方法
24      * 可变参数:
25      *     1、它实际中接收到的数据之后,依然保持在数组中,在方法中还是要通过数组的方式进行操作
26      *  2、如果方法上除了可变参数之外,还有其他的参数,这时可变参数必须写在整个方法参数列表的最后
27      */
28     public static int getSum(int x , int ... arr ) {
29         
30         int sum  = 0;
31         for (int i = 0; i < arr.length; i++) {
32             sum += arr[i];
33         }
34         return sum;
35     }    
36     /*计算传递的数组中的和值
37     public static int getSum(int[] arr) {
38         
39         int sum  = 0;
40         for (int i = 0; i < arr.length; i++) {
41             sum += arr[i];
42         }
43         return sum;
44     }
45     */
46     // 需求:定义功能 计算2个数的和值
47     public static int getSum(int i, int j , int k) {
48         return i + j + k;
49     }
50 
51     // 需求:定义功能 计算2个数的和值
52     public static int getSum(int i, int j) {
53         return i + j;
54     }
55 }

 

   

  3.foreach循环

 1 /*
 2  * 在JDK5中提供了一个可以简化for循环的技术:
 3  *     foreach技术:高级for循环
 4  * 普通for循环的书写格式:
 5  *     for( 表达式1 ; 表达式2 ; 表达式3 ){
 6  *      循环体
 7  *  }
 8  * foreach书写格式:
 9  *     for( 数组空间中的元素类型   变量名  : 数组名 ){
10  *    循环体
11  *  } 
12  * 使用foreach遍历数组的时候,定义的变量名中保存的数据是从数组中取出的元素
13  * 弊端:foreach只能遍历,不能对数组空间中的值进行其他的操作
14  */
15 public class ForEachDemo {
16     public static void main(String[] args) {
17         
18         int[] arr = {11,22,33,44,55,66};
19         
20         //使用普通for循环遍历
21         for(int i = 0 ; i < arr.length ; i ++){
22             System.out.print(arr[i] + "   ");
23         }
24         System.out.println("\n===================");
25         //使用foreach遍历数组
26         for( int x : arr ){
27              System.out.print(x + "  ");
28         }
29     }
30 }

 

posted @ 2017-10-03 22:18  最苦逼的程序猿  阅读(442)  评论(0编辑  收藏  举报