• Java 数组、日期和时间


    一、Java数组:

    Java语言中的数组是用来存储固定大小的同类型元素。

    数据必须先声明,才能在程序中使用数据。

    1、数组声明:dataType[] arrayRefVar;

    2、创建数组:arrayRefVar = new dataType[arraySize];

    3、多维数组:String[][] str = new String[3][4];

    Java.util.Arrays类能方便的操作数组,它提供的方法是静态的,具有以下功能:

    1、给数组赋值:通过 fill 方法。

    2、对数组排序:通过 sort 方法,按升序。

    3、比较数组:通过 equals 方法比较数组中元素值是否相等。

    4、查找数组元素:通过 binarySearch 方法能对排序好的数组进行二分查找法操作。

    序号

    方法和说明

    1

    public static int binarySearch(Object[] a, Object key)
    用二分查找算法在给定数组中搜索给定值的对象(Byte,Int,double等)。数组在调用前必须排序好的。如果查找值包含在数组中,则返回搜索键的索引;否则返回 (-(插入点) - 1)。

    2

    public static boolean equals(long[] a, long[] a2)
    如果两个指定的 long 型数组彼此相等,则返回 true。如果两个数组包含相同数量的元素,并且两个数组中的所有相应元素对都是相等的,则认为这两个数组是相等的。换句话说,如果两个数组以相同顺序包含相同的元素,则两个数组是相等的。同样的方法适用于所有的其他基本数据类型(Byte,short,Int等)。

    3

    public static void fill(int[] a, int val)
    将指定的 int 值分配给指定 int 型数组指定范围中的每个元素。同样的方法适用于所有的其他基本数据类型(Byte,short,Int等)。

    4

    public static void sort(Object[] a)
    对指定对象数组根据其元素的自然顺序进行升序排列。同样的方法适用于所有的其他基本数据类型(Byte,short,Int等)。

    二、Java 日期和时间:

    15.1、Java.util提供Date类来封装当前的时间和如期。Date类提供两个构造函数来实例化Date对象:Date()和Date(long millisec)。

    Date对象的调用方法:

    序号

    方法和描述

    1

    boolean after(Date date)
    若当调用此方法的Date对象在指定日期之后返回true,否则返回false。

    2

    boolean before(Date date)
    若当调用此方法的Date对象在指定日期之前返回true,否则返回false。

    3

    Object clone( )
    返回此对象的副本。

    4

    int compareTo(Date date)
    比较当调用此方法的Date对象和指定日期。两者相等时候返回0。调用对象在指定日期之前则返回负数。调用对象在指定日期之后则返回正数。

    5

    int compareTo(Object obj)
    若obj是Date类型则操作等同于compareTo(Date) 。否则它抛出ClassCastException。

    6

    boolean equals(Object date)
    当调用此方法的Date对象和指定日期相等时候返回true,否则返回false。

    7

    long getTime( )
    返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。

    8

    int hashCode( )
     返回此对象的哈希码值。

    9

    void setTime(long time)
     
    用自1970年1月1日00:00:00 GMT以后time毫秒数设置时间和日期。

    10

    String toString( )
    把此 Date 对象转换为以下形式的 String: dow mon dd hh:mm:ss zzz yyyy 其中: dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat)。

    获取当前日期时间:

    import java.util.Date;

      

    public class DateDemo {

       public static void main(String args[]) {

           // 初始化 Date 对象

           Date date = new Date();

            

           // 使用 toString() 函数显示日期时间

           System.out.println(date.toString());

       }

    }

    日期比较:

    Java使用以下三种方法来比较两个日期:使用 getTime() 方法获取两个日期(自1970年1月1日经历的毫秒数值),然后比较这两个值使用方法 before(),after() 和 equals()使用 compareTo() 方法,它是由 Comparable 接口定义的,Date 类实现了这个接口。

    格式化日期:

    SimpleDateFormat 是一个以语言环境敏感的方式来格式化和分析日期的类。SimpleDateFormat 允许你选择任何用户自定义日期时间格式来运行。示例:

    import java.util.*;

    import java.text.*;

    public class DateDemo {

       public static void main(String args[]) {

          Date dNow = new Date( );

          SimpleDateFormat ft =

          new SimpleDateFormat ("E yyyy.MM.dd 'at' hh:mm:ss a zzz");

          System.out.println("Current Date: " + ft.format(dNow));

       }

    }

    日期和时间的格式化编码:

    字母

    描述

    示例

    G

    纪元标记

    AD

    y

    四位年份

    2001

    M

    月份

    July or 07

    d

    一个月的日期

    10

    h

    A.M./P.M. (1~12)格式小时

    12

    H

    一天中的小时 (0~23)

    22

    m

    分钟数

    30

    s

    秒数

    55

    S

    毫秒数

    234

    E

    星期几

    Tuesday

    D

    一年中的日子

    360

    F

    一个月中第几周的周几

    2 (second Wed. in July)

    w

    一年中第几周

    40

    W

    一个月中第几周

    1

    a

    A.M./P.M. 标记

    PM

    k

    一天中的小时(1~24)

    24

    K

    A.M./P.M. (0~11)格式小时

    10

    z

    时区

    Eastern Standard Time

    '

    文字定界符

    Delimiter

    "

    单引号

    `

    使用printf格式化日期:

            printf 方法可以很轻松地格式化时间和日期。使用两个字母格式,它以 %t 开头并且以下面表格中的一个字母结尾

    • %tY:输出四位数的年份,例如:2023
    • %ty:输出两位数的年份,例如:23
    • %tm:输出两位数的月份,例如:02
    • %tB:输出月份的全名,例如:February
    • %tb:输出月份的缩写,例如:Feb
    • %tA:输出星期的全名,例如:Wednesday
    • %ta:输出星期的缩写,例如:Wed
    • %td:输出两位数的日期,例如:24
    • %te:输出一位或两位数的日期,例如:24 或 02
    • %tH:输出24小时制的小时数,例如:23
    • %tI:输出12小时制的小时数,例如:11
    • %tM:输出分钟数,例如:45
    • %tS:输出秒数,例如:30
    • %tp:输出上午还是下午,例如:AM 或 PM
    • %tZ:输出时区,例如:GMT+08:00

    转换符

    说明

    示例

    %tc

    包括全部日期和时间信息

    星期六 十月 27 14:21:20 CST 2007

    %tF

    "年-月-日"格式

    2007-10-27

    %tD

    "月/日/年"格式

    10/27/07

    %tr

    "HH:MM:SS PM"格式(12时制)

    02:25:51 下午

    %tT

    "HH:MM:SS"格式(24时制)

    14:28:16

    %tR

    "HH:MM"格式(24时制)

    14:28

    解析字符串为时间:

            SimpleDateFormat 类有一些附加的方法,特别是parse(),它试图按照给定的SimpleDateFormat 对象的格式化存储来解析字符串。示例:

    mport java.util.*;

    import java.text.*;

      

    public class DateDemo {

       public static void main(String args[]) {

          SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd");

          String input = "2015-11-11" ;

          System.out.print(input + " Parses as ");

          Date t;

          try {

              t = ft.parse(input);

              System.out.println(t);

          } catch (ParseException e) {

              System.out.println("Unparseable using " + ft);

          }

       }

    }

    java休眠:

            sleep()使当前线程进入停滞状态(阻塞当前线程),让出CPU的使用、目的是不让当前线程独自霸占该进程所获的CPU资源,以留一定时间给其他线程执行的机会。示例:

    import java.util.*;

      

    public class SleepDemo {

       public static void main(String args[]) {

          try {

             System.out.println(new Date( ) + "\n");

             Thread.sleep(1000*3);   // 休眠3秒

             System.out.println(new Date( ) + "\n");

          } catch (Exception e) {

              System.out.println("Got an exception!");

          }

       }

    }

    测量时间:

    import java.util.*;

      

    public class DiffDemo {

       public static void main(String args[]) {

          try {

             long start = System.currentTimeMillis( );

             System.out.println(new Date( ) + "\n");

             Thread.sleep(5*60*10);

             System.out.println(new Date( ) + "\n");

             long end = System.currentTimeMillis( );

             long diff = end - start;

             System.out.println("Difference is : " + diff);

          } catch (Exception e) {

             System.out.println("Got an exception!");

          }

       }

    }

    15.2、Calendar类:

    Calendar类是一个抽象类,在实际使用时实现特定的子类的对象,创建对象的过程对程序员来说是透明的,只需要使用getInstance方法创建即可

    Calendar c = Calendar.getInstance();//默认是当前日期

    使用Calendar类代表特定的时间,需要首先创建一个Calendar的对象,然后再设定该对象中的年月日参数来完成

    //创建一个代表2009年6月12日的Calendar对象Calendar c1 = Calendar.getInstance();

    c1.set(2018, 6 - 1, 12);

    Calendar类对象字段类型:

    常量

    描述

    Calendar.YEAR

    年份

    Calendar.MONTH

    月份

    Calendar.DATE

    日期

    Calendar.DAY_OF_MONTH

    日期,和上面的字段意义完全相同

    Calendar.HOUR

    12小时制的小时

    Calendar.HOUR_OF_DAY

    24小时制的小时

    Calendar.MINUTE

    分钟

    Calendar.SECOND

    Calendar.DAY_OF_WEEK

    星期几

    15.3、GregorianCalendar类

    Calendar类实现了公历日历,GregorianCalendar是Calendar类的一个具体实现。Calendar 的getInstance()方法返回一个默认用当前的语言环境和时区初始化的GregorianCalendar对象。GregorianCalendar定义了两个字段:AD和BC。这是代表公历定义的两个时代。

    下面列出GregorianCalendar对象的几个构造方法:

    序号

    构造函数和说明

    1

    GregorianCalendar()
    在具有默认语言环境的默认时区内使用当前时间构造一个默认的 GregorianCalendar。

    2

    GregorianCalendar(int year, int month, int date)
    在具有默认语言环境的默认时区内构造一个带有给定日期设置的 GregorianCalendar

    3

    GregorianCalendar(int year, int month, int date, int hour, int minute)
    为具有默认语言环境的默认时区构造一个具有给定日期和时间设置的 GregorianCalendar。

    4

    GregorianCalendar(int year, int month, int date, int hour, int minute, int second)
      为具有默认语言环境的默认时区构造一个具有给定日期和时间设置的 GregorianCalendar。

    5

    GregorianCalendar(Locale aLocale)
    在具有给定语言环境的默认时区内构造一个基于当前时间的 GregorianCalendar。

    6

    GregorianCalendar(TimeZone zone)
    在具有默认语言环境的给定时区内构造一个基于当前时间的 GregorianCalendar。

    7

    GregorianCalendar(TimeZone zone, Locale aLocale)
     在具有给定语言环境的给定时区内构造一个基于当前时间的 GregorianCalendar。

    GregorianCalendar 类提供的方法:

    序号

    方法和说明

    1

    void add(int field, int amount)
    根据日历规则,将指定的(有符号的)时间量添加到给定的日历字段中。

    2

    protected void computeFields()
    转换UTC毫秒值为时间域值

    3

    protected void computeTime()
    覆盖Calendar ,转换时间域值为UTC毫秒值

    4

    boolean equals(Object obj)
    比较此 GregorianCalendar 与指定的 Object。

    5

    int get(int field)
    获取指定字段的时间值

    6

    int getActualMaximum(int field)
    返回当前日期,给定字段的最大值

    7

    int getActualMinimum(int field)
    返回当前日期,给定字段的最小值

    8

    int getGreatestMinimum(int field)
     返回此 GregorianCalendar 实例给定日历字段的最高的最小值。

    9

    Date getGregorianChange()
    获得格里高利历的更改日期。

    10

    int getLeastMaximum(int field)
    返回此 GregorianCalendar 实例给定日历字段的最低的最大值

    11

    int getMaximum(int field)
    返回此 GregorianCalendar 实例的给定日历字段的最大值。

    12

    Date getTime()
    获取日历当前时间。

    13

    long getTimeInMillis()
    获取用长整型表示的日历的当前时间

    14

    TimeZone getTimeZone()
    获取时区。

    15

    int getMinimum(int field)
    返回给定字段的最小值。

    16

    int hashCode()
    重写hashCode.

    17

    boolean isLeapYear(int year)
    确定给定的年份是否为闰年。

    18

    void roll(int field, boolean up)
    在给定的时间字段上添加或减去(上/下)单个时间单元,不更改更大的字段。

    19

    void set(int field, int value)
    用给定的值设置时间字段。

    20

    void set(int year, int month, int date)
    设置年、月、日的值。

    21

    void set(int year, int month, int date, int hour, int minute)
    设置年、月、日、小时、分钟的值。

    22

    void set(int year, int month, int date, int hour, int minute, int second)
    设置年、月、日、小时、分钟、秒的值。

    23

    void setGregorianChange(Date date)
    设置 GregorianCalendar 的更改日期。

    24

    void setTime(Date date)
    用给定的日期设置Calendar的当前时间。

    25

    void setTimeInMillis(long millis)
    用给定的long型毫秒数设置Calendar的当前时间。

    26

    void setTimeZone(TimeZone value)
    用给定时区值设置当前时区。

    27

    String toString()
    返回代表日历的字符串。

  • 相关阅读:
    《攻守道》笔记(3)
    数据库注入提权总结(一)
    Everything:文件查找工具,一搜即得
    基于阴阳对算法的无人机航迹规划-附代码
    浏览器里玩机器学习、深度学习
    SpringMVC 01: SpringMVC + 第一个SpringMVC项目
    后端关卡18 了解JDBC
    webpack--打包出口(output)
    javascript anchor()方法
    Django 文件的上传
  • 原文地址:https://blog.csdn.net/corlin6688/article/details/134505516