• 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("
    ===================");
    25         //使用foreach遍历数组
    26         for( int x : arr ){
    27              System.out.print(x + "  ");
    28         }
    29     }
    30 }
  • 相关阅读:
    5.Hiveguigun滚(ノ`Д)ノ竟然竞争谨慎谨慎谨慎哈喇子罢工八公
    4.HadoopMapRe程序设计
    3.MapReduce原理和Yarn
    java注解
    各种操作系统远程windows服务器
    protocol-buffers
    反向生成实体类
    java 反射
    web api 返回数据
    Newtonsoft.Json
  • 原文地址:https://www.cnblogs.com/Kubility123/p/7624684.html
Copyright © 2020-2023  润新知