一,日期与时间
Date类
当前所在系统的此刻日期和时间
Date d = new Date();sout(d);
- 1获取对象毫秒值 getTime()
- 2获取当前时间毫秒值currentTimeMillis()
SimpleDateFormat类
可以把Date对象或时间毫秒值格式化成我们喜欢的时间格式
可以把字符串的时间形式解析成日期对象
2020-11-11 13.27.06 ----yyyy-MM-dd HH:mm:ss
SimpleDateFormat sdf = new SimpleDateFormat(yyyy-MM-dd HH:mm:ss);
String rs = sdf.format(d);
将字符串解析成日期对象
parse ()
- before()是否在日期前
- after() 是否在日期后
Calendar类
代表了此刻日期对应的日历对象
是一个抽象类,不能直接创建对象
//1.拿到日历对象
Calendar cal = Calendar.getInstance();
//2获取日历信息 拿年
int year = cal.get(Calendar .YEAR);
//修改日历中的某个字段
cal.set(Calendar.HOUR,4);//将小时设置为4
//添加值,如64天后是什么时间
cal.add(Calendar.DAY_OF_YEAR,64);
//拿到此刻日期对象
Date d = cal.getTime();
LocateDate LocalTime,LocateDateTime,分别表示日期,时间,日期时间对象
LocateDate ld = new LocateDate();
int year = newDate.getYear();
instant 时间戳
Instant u = new Instant();
sout(u.atZone(ZoneId.systemDefault()));//拿到当前系统时间戳
Date d = Date.from(u);//将时间戳转换为日期对象
DateTimeFormatter 日期时间格式器
DateTimeFormatter dtf = new DateTimeFormatter.ofpattern("yyyy-MM-dd HH:mm:ss");
String ldtStr = ldt.format(dtf);
Duration/Period 计算日期间隔差异
比如我们用当前时间减去生日
LocalDate today = LocalDate.now();
LocalDate birthday = LocalDate.of(2001,5,31);
Period p = Period.between(birthday,today) ;//第二个参数减去第一个参数
sout(period.getYears());
而Duration算的是比较清楚的,能算两个时间差真正隔多少天多少分多少秒
toDays() toHours() toMinutes()
二,包装类
其实就是八种基本类似所对应的引用类型
基本数据类型 | 引用数据类型 |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | long |
char | Character |
double | Double |
boolean | Boolean |
为什么提供包装类?
java为了实现一切皆对象,所以提供了对应的引用类型
集合和泛型也只能支持包装类,不支持基本数据类型
- 自动装箱 就是将基本数据类型赋值给引用数据类型
int a = 1;
Integer b = a; - 自动拆箱 就是将引用数据类型赋值给基本数据类型
Integer a = 1;
int a = b;
结果毫不影响
包装类的容错率更好 他可以被null赋值
可以把基本数据类型转换为字符串类型
1调用toString方法
2调用integer.toString(基本数据类型)
**可以把字符串类型的数值转换成真实的数据类型
1 integer.parseInt("字符串类型的整数")
2 Double.parseDouble("字符串类型的小数")
三,正则表达式
- 可以用一些规定的字符来制定规则,并用来检验数据格式的合法性
如6-20位数字
qq.matches("\\d{6,20}")//\d表示全部都是数字 //转义为/
[abc] 只能是abc
[^abc] 除了abc以外的字符
[a-zA-Z] 范围
\D 非数字
\w 英文,数字,下划线
字符串对象提供了匹配正则表达式规则的API
"a".matches("[abc]")//true 只能匹配一个字符
*0次或多次 +1次或多次 {n}正好n次 x{n,}至少n次 x{n,m}n-m之间次
正则表达式早字符串方法的使用
replaceAll(regex,String str);按照正则表达式替换
split(String regex);//按照正则分割字符串,返回字符数组
四,Array类
toString()
打印数组内容
sort 对数组进行排序 升序
sort(arr);
二分搜索Arrays.binarySearch(arr,55);
必须数组先排好序,否则出bug
找到了返回索引,找不到返回-1 -(应该插入的位置)+-1
使用比较器对象进行自定义排序
使用比较器对象只支持引用类型的排序,所以使用包装类
sort(arr,new Comparator) 参数1被排序数组(引用) 参数2匿名内部类对象
左边数据>右边数据 返回正整数
左边数据<右边数据 返回负整数
等于 返回 0
如果是比较浮点型数据 用Double.compare(a,b);
二分查找底层
binarySearch(int[]arr,data){
//定义左右索引的位置
int left = 0;
int right = arr.length-1;
//开始循环,对半查询
while(left<=right){
//取中间的索引值
int middle = (left+right)/2;
if(data>arr[middle]){
//左边位置更新为 中间索引+1
left = middle+1;
}else if(data<arr[middle]){
//右边位置等于中间位置-1
right = middle-1;
}else{
return middle;
}
}
retunr -1;//查无此数
}
五,Lambda表达式
jdk8开始后的一种新语法格式
主要就是简化匿名内部类的代码写法
(匿名内部类被重写方法的形参列表)->{
被重写方法的方法体代码
}
必须是接口,而且只能有一个抽象方法
在接口上面加上@FunctionInterface
这个注解.表示只能有一个抽象方法
简化Comparator
lambda表达式的省略写法
- 参数类型可以不写
- 如果只有一个参数 ()可以省略
网友评论