一、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) |
| 2 | public static boolean equals(long[] a, long[] a2) |
| 3 | public static void fill(int[] a, int val) |
| 4 | public static void sort(Object[] a) |
二、Java 日期和时间:
15.1、Java.util提供Date类来封装当前的时间和如期。Date类提供两个构造函数来实例化Date对象:Date()和Date(long millisec)。
Date对象的调用方法:
| 序号 | 方法和描述 |
| 1 | boolean after(Date date) |
| 2 | boolean before(Date date) |
| 3 | Object clone( ) |
| 4 | int compareTo(Date date) |
| 5 | int compareTo(Object obj) |
| 6 | boolean equals(Object date) |
| 7 | long getTime( ) |
| 8 | int hashCode( ) |
| 9 | void setTime(long time) |
| 10 | String toString( ) |
获取当前日期时间:
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 开头并且以下面表格中的一个字母结尾:
| 转换符 | 说明 | 示例 |
| %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 | 星期几 |
Calendar类实现了公历日历,GregorianCalendar是Calendar类的一个具体实现。Calendar 的getInstance()方法返回一个默认用当前的语言环境和时区初始化的GregorianCalendar对象。GregorianCalendar定义了两个字段:AD和BC。这是代表公历定义的两个时代。
下面列出GregorianCalendar对象的几个构造方法:
| 序号 | 构造函数和说明 |
| 1 | GregorianCalendar() |
| 2 | GregorianCalendar(int year, int month, int date) |
| 3 | GregorianCalendar(int year, int month, int date, int hour, int minute) |
| 4 | GregorianCalendar(int year, int month, int date, int hour, int minute, int second) |
| 5 | GregorianCalendar(Locale aLocale) |
| 6 | GregorianCalendar(TimeZone zone) |
| 7 | GregorianCalendar(TimeZone zone, Locale aLocale) |
GregorianCalendar 类提供的方法:
| 序号 | 方法和说明 |
| 1 | void add(int field, int amount) |
| 2 | protected void computeFields() |
| 3 | protected void computeTime() |
| 4 | boolean equals(Object obj) |
| 5 | int get(int field) |
| 6 | int getActualMaximum(int field) |
| 7 | int getActualMinimum(int field) |
| 8 | int getGreatestMinimum(int field) |
| 9 | Date getGregorianChange() |
| 10 | int getLeastMaximum(int field) |
| 11 | int getMaximum(int field) |
| 12 | Date getTime() |
| 13 | long getTimeInMillis() |
| 14 | TimeZone getTimeZone() |
| 15 | int getMinimum(int field) |
| 16 | int 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) |
| 24 | void setTime(Date date) |
| 25 | void setTimeInMillis(long millis) |
| 26 | void setTimeZone(TimeZone value) |
| 27 | String toString() |