JAVA进阶--常用时间API、包装类、正则表达式、Array类、Lambda表达式、常见算法--2022年9月1日
作者:互联网
第一节 Date日期对象
1、日期对象如何创建,如何获取时间毫秒值
Date date = new Date();
Long time = date.getTime();
2、时间毫秒值怎么恢复成日期对象
Date d = new Date(time);
d.setTime(time);
第二节 SimpleDateFormat对象
1、SimpleDateFormat可以格式化哪些时间形式?
SimpleDateFormat sdf = new SimpleDateFormat();
String rs1 = sdf.format(date); //date是Date类型的对象
String rs2 = sdf.format(time); //time是long型的毫秒数
2、SimpleDateFormat如何进行字符串时间的解析的
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date d = sdf.parse("2021-08-04 11:11:11");//上面的格式要和下面的格式一样
第三节 Calendar概述
1、Calendar类
第四节 JDK8新增日期类
1、概述、LocalTime /LocalDate / LocalDateTime
2、instant时间戳
3、DateTimeFormatter
4、Period:用于计算两个日期间隔
5、Duration:用于计算两个时间间隔
6、ChronoUnit
第五节 包装类:8种基本数据类型对应的引用类型
上面把字符串类型的数值转换成真实的数据类型,还有这些方法: int age = Integer.valueOf(number);
double age = Double.valueOf(number);
1、包装类是什么?作用是什么
基本数据类型对应的引用类型,实现了一切皆对象
后期集合和泛型不支持基本类型,只能使用包装类
2、包装类有哪些特殊功能
可以把基本类型的数据转换成字符串类型(用处不大)
可以吧字符串类型的数值转换成真实的数据类型(真的很有用)
第六节 正则表达式
1、正则表达式初体验,校验qq号
package com.maofugui.regex; public class RegexDemo1 { public static void main(String[] args){ //需求:校验qq号码,必须全部数字6-20位 System.out.println(checkQQ("21434545")); System.out.println(checkQQ("23dfdsdsaf")); System.out.println(checkQQ("12")); System.out.println(checkQQ(null)); System.out.println("---------------------------"); //正则表达式初体验 System.out.println(checkQQ2("21434545")); System.out.println(checkQQ2("23dfdsdsaf")); System.out.println(checkQQ2("12")); System.out.println(checkQQ2(null)); } public static boolean checkQQ2(String qq){ return qq != null && qq.matches("\\d{6,20}"); } public static boolean checkQQ(String qq){ if(qq == null || qq.length()<6 || qq.length()>20){ return false; } for (int i = 0; i < qq.length(); i++) { char ch = qq.charAt(i); if(ch < '0' || ch > '9'){ return false; } } return true; } }
2、正则表达式的匹配规则 API文档找Pattern
注意:正则表达式最好不要加空格,和官方写一样就行,加空格可能会报错。
3、正则表达式在方法中的应用
4、正则表达式支持爬取信息
第七节 Arrays类:数组操作工具类,专门用于操作数组元素的
1、Arrays类概述
二分搜索数组中的数据这个方法在使用前,数组一定得先排好序!!
2、Arrays类对于Comparator比较器的支持
package com.maofugui.Arrays; import java.util.Arrays; import java.util.Comparator; public class ArraysDemo { public static void main(String[] args){ Integer[] arr = {12,23,67,34,23}; Arrays.sort(arr); System.out.println(Arrays.toString(arr)); Arrays.sort(arr, new Comparator<Integer>() { @Override public int compare(Integer o1, Integer o2) { if(o2 > o1) return 1;//如果o2>o1 返回1,o1写前面,o2写后面 else if(o2 < o1) return -1; return 0; } }); System.out.println(Arrays.toString(arr)); } }
第八节 选择排序和二分查找
1.选择排序:找出最小的放在最前面(增加知识:冒泡排序,找出最大的放在最后)
package com.maofugui.Arrays; public class choseSort { public static void main(String[] args){ int[] arr= {5,2,1,3}; //选择排序 for (int i = 0; i < arr.length-1; i++) { //int[] arr= {5,2,1,3}; // 0 1 2 3 // i=0 1,2,3 // i=1 2,3 // i=2 3 for (int j = i+1; j < arr.length; j++) { if(arr[j] < arr[i]){ int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } } } }
2、二分查找(前提:必须要排好序)
package com.maofugui.Arrays; import java.util.Arrays; public class BinarySearch { public static void main(String[] args){ int[] arr = {12,54,23,65,34}; Arrays.sort(arr); System.out.println(Arrays.toString(arr)); System.out.println(binarySearch(arr,23)); } public static int binarySearch(int[] arr,int num){ int left = 0; int right = arr.length - 1; while (left <= right) { int middle = (right+left)/2; if(num > arr[middle]){ //比中间数大 往右边找 left为middle+1 left = middle + 1; }else if(num < arr[middle]){ //比中间数小 往左边找 right变为middle-1 right = middle - 1; }else{ return middle; } } return -1; } }
第九节 Lambda表达式:匿名内部类的简化
1、只能简化接口中只有一个抽象方法的匿名内部类形式
2、Lambda表达式的基本作用
简化函数式接口的匿名内部类的写法
3、Lambda表达式有什么使用前提
必须是接口的匿名内部类,接口中只能有一个抽象方法
4、lambda的好处
lambda是一个匿名函数,我们可以把lambda表达式理解为是一段可以传递的代码,它可以写出更简洁、更灵活的代码,作为一种更紧凑的代码风格,使Java语言表达能力得到了提升。
5、Lambda-简化常见函数式接口
6、Lambda表达式的更加省略写法
标签:arr,JAVA,进阶,--,System,Arrays,int,println,out 来源: https://www.cnblogs.com/Flower--Dance/p/16646335.html