一、日期操作
Date,结合SimpleDateFormat类。
Calendar类。
1.Date类
java.util.Date类:(区别于java.sql.Date)
表示特定时间的Date对象:年月日时分秒时区
Date类中的很多获取日期,时间等等的方法, 都被Calendar类所提供替代。
2.SimpleDateFormat类
专门用于日期和文本之间的转换。
表示日期时间的特殊字符:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ApT1PNlV-1587083819691)(java笔记图片/date.png)]
1年:12月,365天
1天:24小时
1小时:60分钟
1分钟:60秒
1秒:1000毫秒
。。。。纳秒,皮秒,微妙。。。
/*
* SimpleDateFormat类:
* Date-->String:日期格式化?就是将一个日期Date对象,按照指定的字符串格式去显示。
* format(),根据模板,将date日期,转为String字符串类型
* 1.创建SimpleDateFormat对象。可以通过构造方法指定模板(格式):"yyyy-MM-dd"
* 如果没有指定模板,使用系统默认:20-4-16 上午11:09
* 2.sdf.format(date)-->String
*
*
* String-->Date:解析?就是将一个文本字符串,解析成一个Date对象。
* parse(),根据模板,将字符串解析为对应的日期对象,异常。
* 1.同上
* 2.sdf.parse(String)-->date
*/
public static void main(String[] args) throws ParseException {
Date date = new Date();
System.out.println(date);//Thu Apr 16 11:00:36 IRKT 2020
/*
* "2020-04-16"-->"yyyy-MM-dd"
* 2020/04/16 --> "yyyy/MM/dd"
* 2020年04月16日:"yyyy年MM月dd日"
* 2020-04-16 11:01:33-->"yyyy-MM-dd HH:mm:ss"
* ....
*/
/*
* SimpleDateFormat类:
* Date-->String:日期格式化?就是将一个日期Date对象,按照指定的字符串格式去显示。
* format(),根据模板,将date日期,转为String字符串类型
* 1.创建SimpleDateFormat对象。可以通过构造方法指定模板(格式):"yyyy-MM-dd"
* 如果没有指定模板,使用系统默认:20-4-16 上午11:09
* 2.sdf.format(date)-->String
*
*
* String-->Date:解析?就是将一个文本字符串,解析成一个Date对象。
* parse(),根据模板,将字符串解析为对应的日期对象,异常。
* 1.同上
* 2.sdf.parse(String)-->date
*/
//step1:创建格式化对象:
SimpleDateFormat sdf = new SimpleDateFormat();//默认格式:yy-M-dd
//step2:调用format方法,将date--->String
String s1 = sdf.format(date);
System.out.println(s1);
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss.SSS");
String s2 = sdf2.format(date);
System.out.println(s2);//2020年04月16日 11:22:01.640
//String类型的表示日期的数据--->Date对象
String src = "2020-05-22";
SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd");
Date date2 = sdf3.parse(src);//会按照sdf对应的模板来进行格式化
System.out.println(date2);
}
3.Calendar类
Calendar类是抽象的。GregorianCalendar子类。
获取日期时间,也可以设置日期时间。
//step1:创建Calendar类的对象。
Calendar calendar = new GregorianCalendar();//方式一
Calendar rightNow = Calendar.getInstance();//方式二
//step2:
//获取类
calender.get(YEAR,MONTH,DAY_OF_MONTH,DAY_OF_WEEK,HOUE,MINUTE....);
//设置
calendar.set();
月份:
January,一月,0
February,二月,1
March,三月,2
April,四月,3
May,五月,4
June,六月,5
July,七月,6
August,八月,7
September,九月,8
October,十月,9
November,十一月,10
December,十二月,11
星期:
Monday,星期一
Tuesday,星期二
Wednesday,星期三
Thursday,星期四
Friday,星期五
Saturday,星期六
Sunday,星期日
public static void main(String[] args) {
//step1:创建Calendar类的对象
// Calendar calendar = new GregorianCalendar();
Calendar calendar = new GregorianCalendar();
//step2:获取所需要的数据
/*
* 语法:calendar.get(XXX);
* year-->年
* month-->月,+1
* dayofmonth-->日期
* hourofday-->小时
* ....
*/
System.out.println("YEAR: " + calendar.get(Calendar.YEAR));
System.out.println("MONTH: " + (calendar.get(Calendar.MONTH)+1));
System.out.println("DAY_OF_MONTH: " + calendar.get(Calendar.DAY_OF_MONTH));
System.out.println("DAY_OF_WEEK: " + calendar.get(Calendar.DAY_OF_WEEK));
// System.out.println("AM_PM: " + calendar.get(Calendar.AM_PM));//0上午am,1下午pm
// System.out.println("HOUR: " + calendar.get(Calendar.HOUR));//12小时制。
System.out.println("HOUR_OF_DAY: " + calendar.get(Calendar.HOUR_OF_DAY));//24小时制
System.out.println("MINUTE: " + calendar.get(Calendar.MINUTE));
System.out.println("SECOND: " + calendar.get(Calendar.SECOND));
System.out.println("MILLISECOND: " + calendar.get(Calendar.MILLISECOND));
/*
* 通过Calendar类,可以直接获取年,月,日,时,分,秒。。。。
* Date类:
* 思考题:通过Calendar类的对象,获取当前的年月日时分秒:拼接成一个字符串:
* 2020年04月16日 11:52:33
*/
String date = calendar.get(Calendar.YEAR)+"年"+(calendar.get(Calendar.MONTH)+1)+"月"+calendar.get(Calendar.DAY_OF_MONTH)+"日";
String time = calendar.get(Calendar.HOUR_OF_DAY)+":"+calendar.get(Calendar.MINUTE)+":"+calendar.get(Calendar.SECOND);
System.out.println(date);
System.out.println(time);
}
public static void main(String[] args) {
//数值表示时间:1587019851679,当前时间,距离1970年1月1日0点0分0秒的毫秒差值
System.out.println(System.currentTimeMillis());//1587019851679
long startTime = System.currentTimeMillis();
for(int i=0;i<10000;i++){
//....老大老大的循环了。。
System.out.println("....");
}
long endTime = System.currentTimeMillis();
long time = endTime-startTime;
System.out.println("该循环执行共耗时:"+time+"ms");
Date date = new Date();//当前时间
Date date2 = new Date(1507019851679L);
System.out.println(date);
System.out.println(date2);
Calendar calendar = new GregorianCalendar();
calendar.set(1999,5,20);
System.out.println(calendar.get(Calendar.YEAR));
System.out.println(calendar.get(Calendar.MONTH));
System.out.println(calendar.get(Calendar.DAY_OF_MONTH));
calendar.set(Calendar.YEAR, 1998);
}
二、集合
数组:存储一组相同类型的数据。理解为容器,装数据。里面的元素,就是存储的一坨数值。靠下标。
数组的局限:定长
要想使用,需要先创建数组。
要想创建数组,需要先指定大小。
一旦一个数组创建了,那么长度不能更改。
集合框架:也叫容器类。理解为装数据的。
概念:动态存储多个对象。
- 动态:集合的大小是随着存储的元素的个数而改变。
- 对象:集合中所存储的数据,仅限于对象。
- 引用类型,能够存储
- 基本类型,装箱----->包装类类型,可以存储。
集合和数组的对比:
作用:都是存储多个数据。相当于容器。大白话:装数据。
区别:
- 存储的数据类型
数组:可以存储任意类型:基本类型,引用类型。
集合:只能存储引用类型,对象。不能存储基本类型,但是可以存储包装类。 - 容量:长度
数组:定长,数组一旦创建,长度不能改。
集合:变长,长度随着存储的元素的数量而改变。
相同点:数组和集合本身,都是引用类型的数据。
1.Collection接口
容器的大小:
数组:arr.length,属性
字符串:str.length(),方法
集合:list.size();
集合框架的最大的父接口:规定的都是集合容器最基本的功能。
//常用方法:
add(元素);//向容器中添加元素
remove(元素);//从容器中移出某个元素
//();//容器的大小,存储的元素的个数
contains(元素);//是否包含指定的元素
clear();//清空容器
iterator();//迭代器
//其他方法
addAll(容器);//向当前容器中,添加所有了另外一个容器中的所有的元素
removeAll(容器);//从当前容器中,删除所有另一个容器的元素
isEmpty();//判断容器是否为空
retainAll();//
public static void main(String[] args) {
//step1:创建一个集合容器
Collection c1 = new ArrayList();
System.out.println(c1);
System.out.println(c1.size());//0
//step2:操作这个集合容器
//1.向容器中,添加一个元素
c1.add("abc");//String-->Object
System.out.println(c1.size());//1
c1.add("hello");
c1.add(100);//int-->Integer-->Object
//2.打印容器的时候,直接显示容器中存储的元素数据
System.out.println(c1);//[abc, hello, 100]
//3.集合的长度:集合中存储的元素的个数
System.out.println(c1.size());//3
//4.删除集合中的元素
c1.remove("abc");
System.out.println(c1);//[hello, 100]
System.out.println(c1.size());//2
//5.是否包含指定的内容:
System.out.println(c1.contains("hello"));//true
//6.清空集合
c1.clear();
System.out.println(c1);//[]
System.out.println(c1.size());//0
System.out.println("c1是空的。。"+c1.isEmpty());
c1.add("hello");
c1.add("world");
System.out.println("c1是空的。。"+c1.isEmpty());
Collection c2 = new ArrayList();
c2.add("aaa");
c2.add("bbb");
c2.add("ccc");
System.out.println(c1);
System.out.println(c2);
//7.将c2容器中的所有元素,都添加到c1中。
c1.addAll(c2);
System.out.println(c1);//[hello, world, aaa, bbb, ccc]
System.out.println(c2);//[aaa, bbb, ccc]
//8.从c1中删除所有c2的元素
// c1.removeAll(c2);
// System.out.println(c1);//[hello, world]
// System.out.println(c2);//[aaa, bbb, ccc]
c1.add(100);
c1.add("haha");
System.out.println(c1);//[hello, world, aaa, bbb, ccc, 100, haha]
//9.retainAll();对于c1容器来讲,仅保留和c2容器相同的数据。不同的其他的元素,删除。
c1.retainAll(c2);
System.out.println(c1); //[aaa, bbb, ccc]
System.out.println(c2); //[aaa, bbb, ccc]
//如何遍历集合中的所有的元素?迭代器Iterator
/*
* 数组的遍历:
* 普通for循环,下标
* for-each,增强for循环,不需要操作下标。。
* for(数据类型 变量名: 数组/集合){
* }
*/
for(Object obj:c1){
System.out.println("-->"+obj);
}
}