日期类与初识集合

时间类——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继承自DateFormat
Date 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();
}
![时间](index_files/SimpleDateFormat.png)

正则表达式

正则表达式是一种规则,一般用于处理数据验证。 * 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");
}
![regex1](index_files/2.png) ![regex2](index_files/1.png) ![regex3](index_files/3.png)

可变数组——集合

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);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值