时间类——Date
- Date是时间类,用于显示时间。使用需要导入Java.util.Date包。
Date date = new Date();// 默认创建当前的时间
System.out.println(date);// Wed Aug 03 19:51:33 CST 2016
Date类自定义时间
- 创建对象时自定义
// 因为Java中时间是从1900年开始,所以要减去1900,月份信息下标是从0开始,所以月份要减去1。下面的代码创建2016年8月3日 Date date2 = new Date(2006-1900,8-1,3); System.out.println(date2);// Thu Aug 03 00:00:00 CST 2006
- 创建对象后用方法更改时间
// 这种方式由于创建Date对象时默认当前日期时间,所以含有小时信息 Date date3 = new Date(); date3.setYear(2006-1900); date3.setMonth(8-1); date3.setDate(3); System.out.println(date3);// Thu Aug 03 19:51:33 CST 2006
Date和时间戳(相对时间)的转换
时间戳:从1970年到当前时间经过的毫秒数
System.currentTimeMillis():得到当前时间和1970年之间的时间差的毫秒值 1s=1000毫秒- 时间戳转为Date
long millis = System.currentTimeMillis();// 1470225939972 Date date4 = new Date(millis); System.out.println(date4);// Wed Aug 03 20:05:39 CST 2016
- Date转为时间戳
Date date5 = new Date(2006-1900,8-1,3); long millis = date5.getTime(); System.out.println(millis);
过时的方法
随着代码的发展,有些Java以前版本的方法逐渐被新的方法所替代。则旧的方法被标记为已过时。但过时的方法仍可以使用。过时的方法名上会画一条线代表该方法已过时。
// 自定义方法标记已过时:@Deprecated
@Deprecated
public static void method(){
}
新的时间类——Calendar
Calendar类是新的时间类,Calendar的许多方法取代了Date中的方法。使用Calendar类需要导入java.util.Calendar包。
* Calendar是一个抽象类,所以使用时需要运用多态。
Calendar cal = Calendar.getInstance();// 得到一个Calendar的子类对象,并赋给父类的引用
Date date = cal.getTime();// 将一个Calendar对象转为Date对象
System.out.println(date);// Wed Aug 03 20:33:26 CST 2016
// 设置时间
cal.set(Calendar.YEAR, 2008);
cal.set(Calendar.MONTH, 8-1);
cal.set(Calendar.DATE, 8);
cal.set(Calendar.HOUR_OF_DAY, 8);
// 取得Calendar的时间信息
System.out.println(cal.get(Calendar.YEAR));
System.out.println(cal.get(Calendar.MONTH)+1);
System.out.println(cal.get(Calendar.DATE));
System.out.println(cal.get(Calendar.DAY_OF_WEEK));
System.out.println(cal.get(Calendar.HOUR));
/** 常见方法
* add:根据日历的规则,为给定的日历字段添加或减去指定的时间量。
* after:判断此Calendar表示的时间是否在指定Object表示的时间之后,返回判断结果。
* before:判断此Calendar表示的时间是否在指定Object表示的时间之前,返回判断结果。
*/
Calendar cal2 = Calendar.getInstance();
cal2.add(Calendar.YEAR, 2);// Fri Aug 03 20:33:26 CST 2018
System.out.println(cal.after(cal2));// false
System.out.println(cal.before(cal2));// true
- Calendar与Date的相互转换
Date date = new Date();
Calendar cal = Calendar.getInstance();
// Date转为Calendar
cal.setTime(date);
// Calendar转为Date
System.out.println(cal.getTime());
// 时间戳转为Calendar
long l = System.currentTimeMillis();
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(l);
// Calendar转为时间戳
long l2 = cal.getTimeInMillis();
- 牛刀小试
计算当前日期(今天)距离08年奥运会多少天
public class Test {
public static void main(String[] args) {
Calendar cal = Calendar.getInstance();
cal.set(2008, 8-1, 8);// 设置时间为奥运会时间
long l = System.currentTimeMillis();// 取得当前时间
long oly = l-cal.getTimeInMillis();// 计算两个时间戳的差值
System.out.println(oly/(1000*60*60*24));// 转化为天数
// 当前时间的计算必须放在后面,如果放在前面可能会导致天数少计算一天,因为他们的毫秒数在程序执行过程中有差别。
}
}
格式化时间——DateFormat
简单应用类SimpleDateFormat继承自DateFormatDate date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 E");
String strDate = sdf.format(date);
System.out.println(strDate);// 2016年08月03日 星期三
// 完成String到Date的转换
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 必须与字符串内容相对应
String str = "2016-08-03 14:25:36";
try {
Date date2 = sdf2.parse(str);
System.out.println(date2);// Wed Aug 03 14:25:36 CST 2016
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

正则表达式
正则表达式是一种规则,一般用于处理数据验证。 * String里面对正则表达式的支持String str = "abc2def2mon";
String[] strArr = str.split("2");// 按数字拆分
System.out.println(Arrays.toString(strArr));// [abc, def, mon]
// 用户注册:验证用户名,规则如下:数字字母下划线 长度为6-8
String username = "zhangsan";
// 匹配正则表达式:matches()。下面表示内容是0-9或a-z或A-Z或_,共出现6到8次,"zhangsan"共8位全是小写字符所以满足,返回true
if(username.matches("[0-9a-zA-Z_]{6,8}")){
System.out.println("注册成功");
}else {
System.out.println("注册失败");
}
- 牛刀小试
邮箱校验,zhangsan@xiaobai.cn。
数字字符下划线出现5位以上,@出现一次,数字字母出现2到6次,.
出现一次,com或cn
String email = "xiaobai@ucai.cn";
// .需要转义
if(email.matches("\\w{5,}@[0-9a-zA-Z]{2,6}\\.(cn|com)")){
System.out.println("success");// 打印success
}else {
System.out.println("fail");
}



可变数组——集合
1.数组需要指定长度,集合不需要 2.数组只能存储固定的数据类型,集合可以存储多种数据类型 3.数组可以存储基本数据类型,集合只能存储引用数据类型 4.集合是一个大家族,有很大的框架结构。本次先学习一个基本实现类**ArrayList**ArrayList list = new ArrayList();
// 存储数据,增add()
list.add("one");
list.add("two");
list.add(3);
list.add("four");
// 将list中的内容全部取出,查get()
for(int i=0;i<list.size();i++){
System.out.print(list.get(i) + " ");
}
System.out.println();
list.remove("one");// 删remove()
System.out.println(list);
// list中数据的修改,改set()
list.set(1, "list");
System.out.println(list);
- 泛型
泛型的好处:
1.检测元素数据类型
2.避免了强制类型转换
ArrayList<String> list = new ArrayList<String>();
list.add("张三");
list.add("李四");
list.add("王五");
list.add("赵六");
list.add("田七");
//list.add(23);// 不是String类型,不能添加
for(int i=0;i<list.size();i++){// 打印姓氏
// 取得类型不用强转就是String,如果不用泛型是Object类型,需要强转
String s = list.get(i);
char ch = s.charAt(0);
System.out.println(ch);
}