1. Date:日期对象与毫秒值之间的互转
1.1. 日期对象---->毫秒值:
//创建日期对象
Date date =new Date();
//调用getTime()方法获取当前日期的毫秒值(long型)
long time =date.getTime();
System.out.println(time);
结果:1510535762500
1.2. 毫秒值---->日期对象:
//方法一:创建对象时通过构造方法传递毫秒值
Date date =new Date(151000000000L);
//打印日期格式
System.out.println(date);
结果:Tue Oct 15 00:26:40 CST 1974
//方法二:通过setTime()方法传毫秒值
Date date =new Date();
date.setTime(151000000000L);
//打印日期格式
System.out.println(date);
结果:Tue Oct 15 00:26:40 CST 1974
1.3. 总结:
(1) Date类主要用于进行日期与毫秒值之间的互换
(2) 通过无参构造获取的Date表示系统的当前时间
(3) 毫秒值的价值在于可以使日期进行数学计算
(4) Java的时间原点 1970-1-1 0:0:0时刻称为0毫秒值
2. DateFormat&SimpleDateFormat:
2.1. 概念:日期对象转换成自定义的格式
2.2. 使用方式:
DateFormat 是抽象类,所以不能直接创建对象,需要通过子类重写父类的方法
2.2.1. 将日期对象按照自定义的格式输出
1: 创建子类SimpleDateFormat对象
在子类的构造方法中,写自定义的格式
SimpleDateFormat(String 格式)
2: 子类的对象调用父类方法,格式化
String format(Date date)
例:
//通过多态,子类向上转型,传入自定义日期格式
DateFormat df =new SimpleDateFormat("yyyy年MM月dd日");
//创建当前日期对象
Date date =new Date();
//通过format()方法将日期转成自定义格式,String变量接收
String time =df.format(date);
//打印结果
System.out.println(time);
结果:2017年11月13日
2.2.2. 将字符串转换成日期对象
1: 创建子类SimpleDateFormat对象
在子类的构造方法中,写自定义的格式 SimpleDateFormat(String 格式)
2: 子类对象,调用父类方法 parse
Date parse(String s) 字符串转成日期对象
注意:需要转换的字符串日期格式需要与子类构造方法中的日期格式一致
例:
//创建子类SimpleDateFormat对象并指定日期格式
DateFormat df =new SimpleDateFormat("yyyy-MM-ddHH:mm:ss");
//调用父类方法parse()传入日期字符串将其转成日期格式,用Date对 象接收
Date date =df.parse("2017-11-13 10:05:40");
//打印结果(Date格式)
System.out.println(date);
结果:Mon Nov 13 10:05:40 CST 2017
2.2.3. 总结:
2.2.3.1. SimpleDateFormat(子类)主要用于:
(1) format方法:将Date类型的日期转换成自定义格式的字符串
(2) parse方法将字符串形式的日期(自定义日期格式)转换为Date类型的日期
(3) 时间字符匹配含义:
y 年
M 月
d 日
H 时
m 分
s 秒
3. Calendar类:(日历)
3.1. 概念:对日历进行操作
3.2. 使用:
3.2.1. 创建对象:
Calendar类为抽象类,不能创建对象,通过该类的静态方法getInstance()方法返回一个该类对象
例:
//Calendar类的静态方法 getInstance()获取他的子类对象
Calendar cal = Calendar.getInstance();
3.2.2. Calendar类的方法:
3.2.2.1. int get ( int )方法:获取指定日历字段(年,月,日...)
例:
//创建日历对象
Calendar cal = Calendar.getInstance();
//获取当前日历(系统日历)的年份
int year =cal.get(Calendar.YEAR);
//打印结果
System.out.println(year);
结果:2017
3.2.2.2. set(int,int):设置日历(要修改的日历字段,修改后的数据)
例:
//创建日历对象
Calendar cal = Calendar.getInstance();
//将当前年份改为2019年(当前2017年)
cal.set(Calendar.YEAR, 2019);
//打印当前日期
System.out.println(new Date());
//打印日历年份值
System.out.println(cal.get(Calendar.YEAR));
结果:Mon Nov 13 10:43:17 CST 2017
2019
3.2.2.3. set(int,int,int): 修改日历,直接传递年,月,日
例:
// 创建日历对象
Calendar cal = Calendar.getInstance();
// 将当前年份改为2019年3月18日(当前2017年11月13日)
cal.set(2019, 3, 18);
// 打印当前日期
System.out.println(new Date());
// 打印日历年份值
System.out.println(
cal.get(Calendar.YEAR) +"年" + cal.get(Calendar.MONTH) +"月" +
cal.get(Calendar.DAY_OF_MONTH) +"日");
结果:Mon Nov 13 10:49:03 CST 2017
2019年3月18日
3.2.2.4. add(int,int) 日历的偏移:(要偏移字段,偏移量)
例:
// 创建日历对象
Calendar cal = Calendar.getInstance();
// 将当前年份向后偏移3年(当前2017年)
cal.add(Calendar.YEAR,3);
// 打印当前日期
System.out.println(new Date());
// 打印日历年份值
System.out.println(cal.get(Calendar.YEAR));
结果:Mon Nov 13 10:54:16 CST 2017
2020
4. 基本数据类型的包装类
4.1. 概念及意义:
将基本数据类型进行封装,为基本数据类型提供更多的方法,主要用于基本数据类型与字符串直接进行互相转换
基本数据类型包装类
byte Byte
short Short
int Integer
long Long
float Float
double Double
boolean Boolean
char Character
4.2. 使用方式: parse数据类型(字符串)
例:
//Integer是int类型的包装类,int,String互转
//Integer类静态方法 static int parseInt(String 必须数字格 式)
int i = Integer.parseInt("123");
System.out.println(i+1);
//String转成double
double d = Double.parseDouble("1.1");
System.out.println(d+1);
结果:124
2.1
转换原理:包装类对象的方法inValue()
Integer i =new Integer("123");
//非静态方法inValue() 字符串转成int
int m =i.intValue();
System.out.println(m+1);
注意:包装类具有自动装箱与拆箱的功能,不用可以手动装拆箱\
5. Math类:
5.1. 概念及意义:数学运算的方法工具类
例:
// static int abs(int a)返回参数a的绝对值
System.out.println( Math.abs(-5));
//static double ceil(double d)向上取整, 结果可以大于或者等于参数
//返回大于或者等于参数的最小整数
System.out.println( Math.ceil(-11.56));
//static double floor(double d)向下取整, 结果可以小于或者等于参数
System.out.println( Math.floor(-11.56));
//static int round(double d)四舍五入 取整数
System.out.println( Math.round(11.499999));
//static double pow(double a,double b) a的b次幂
System.out.println( Math.pow(2, 5));
//static double random() 返回随机数 范围0.0-1.0之间, 可能是0.0,不会到1.0
for(int x = 0 ;x < 5 ; x++){
System.out.println(Math.random());
}
结果:5
-11.0
-12.0
11
32.0
0.4817543383305478
0.055070916625842514
0.5840883015395422
0.23682037352906393
0.2871072197703177
6. System类中的静态方法
例:
/*
* static void arraycopy(Objectsrc,int srcPos, Objectdest,int destPos,int length)复制数组
* src: 要复制的数据源
* srcPos: 数据源的开始索引
* dest: 复制后的目标数组
* destPost: 目标数组的开始下标
* length: 复制几个
*/
public static void method_3(){
int[]src = {1,2,3,4};
int[]dest = {5,6,7,8,9,0};
System.arraycopy(src, 1,dest, 2, 2);
for(int x = 0 ;x < dest.length;x++){
System.out.print(dest[x] +" ");
}
}
结果:5 6 2 3 9 0
/*
* static String getProperty(String s)
* 获取当前的操作系统属性
*/
public static void method_2(){
String str = System.getProperty("os.version");
System.out.println(str);
}
结果:6.1 (win7)
/*
* static void exit()
* 结束JVM
*/
public static void method_1(){
while(true){
System.exit(0);
}
}
/*
* static long currentTimeMillis()
* 返回当前系统日期的毫秒值
*/
public static void method(){
long time = System.currentTimeMillis();
System.out.println(time);
}
结果:1510543841326
7. 正则表达式
7.1. 概念及意义:
制定字符串形式的数据验证规则 String regex = “ 正则表达式(规则)” ;
7.2. 使用: str.matches(regex) 返回boolean
规则写法:常用
[abc] 字符匹配abc任意一个
[^abc] 字符匹配不是abc
[a-z] 字符匹配多有小写字母
[a-zA-Z] 字符匹配任意字母
[0-9] 字符匹配所有的数字
[a-zA-Z0-9] 字符匹配所有字母数字
. 匹配所有字符
\d 匹配所有数字 [0-9]
\D 匹配所有非数字 [^0-9]
\w 匹配所有字符文字 [a-zA-Z0-9_]
\W 匹配所有字非符文字 [^a-zA-Z0-9_]
X X字符出现零次或者多次
X? X字符出现一次或者一次也没有
X+ X字符出现一次或者多次
X{n} X字符出现正好n次
X{n,} X字符出现至少n次
X{n,m} X字符出现至少n次,不超过m次