Java自学小白——常用API、Lambda、常见算法
Java自学小白——常用API、Lambda、常见算法
一、常用API
1.日期与时间
- Date类
- Date类表示当前所在系统的日期时间信息
- 实现代码:
-
- 运行结果:
-
- 总结
- SimpleDateFormat类
- 作用可以去完成日期时间的格式化操作
-
- 例:
- SimpleDateFormat解析字符串时间成为日期对象
实现代码:
运行结果:
练习:
实现代码:
1 import java.text.ParseException; 2 import java.text.SimpleDateFormat; 3 import java.util.Date; 4 5 public class SimpleDateFormatTest3 { 6 public static void main(String[] args) throws ParseException { 7 //1.开始 结束 8 String startTime = "2021-11-11 00:00:00"; 9 String endTime = "2021-11-11 00:10:00"; 10 //2.小贾 小皮 11 String xiaoJia = "2021-11-11 00:03:47"; 12 String xiaoPi = "2021-11-11 00:10:11"; 13 //3.解析字符串称为日期对象 14 SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 15 16 Date d1 = s.parse(startTime); 17 Date d2 = s.parse(endTime); 18 Date d3 = s.parse(xiaoJia); 19 Date d4 = s.parse(xiaoPi); 20 21 //4.判断是否在时间之内 after before方法 22 if(d3.after(d1) && d3.before(d2)){ 23 System.out.println("小贾秒杀成功"); 24 }else{ 25 System.out.println("小贾秒杀失败"); 26 } 27 if(d4.after(d1) && d4.before(d2)){ 28 System.out.println("小皮秒杀成功"); 29 }else{ 30 System.out.println("小皮秒杀失败"); 31 } 32 } 33 }
运行结果:
- Calendar
- Calendar代表了系统此刻日期对应的日历对象
- Calendar是一个抽象类,不能直接创造对象
-
- JDK8新增日期类
二、包装类
- 包装类其实就8种基本数据类型对应的引用类型。
-
为什么提供包装类?
-
Java为了实现一切皆对象,为8种基本类型提供了对应的引用类型
-
后面的集合和泛型也只能支持包装类型,不支持基本数据类型
-
- 自动装箱:基本类型的数据和变量可以直接赋值给包装类型的变量。
- 自动拆箱:包装类型的变量可以直接赋值给基本数据的变量。
- 包装类的特有功能:
- 包装类的变量默认值可以是nul,容错率更高
- 可以把基本类型的数据转换成字符串类型(用处不大)
- 可以把字符串类型的数值转换成真实的数据类型(有用)
三、正则表达式
- 可以用一些规定的字符来定制规则,并用来校验数据格式的合法性
-
-
-
案例:
实现代码:
实现代码:
运行结果:
四、Arrays类
- Arrays是数组操作工具类,专门用于操作数组元素的
-
五、常见算法
1.冒泡排序
- 每次从数组中找到最大值放在数组后边去
- 实现冒泡排序的关键步骤
- 确定总共要作几轮:数组的长度-1。
- 每轮比较几次
-
- 当前位置大于后一个位置则交换数据
- 实现代码:
- 运行结果:
2.选择排序算法
- 每轮选择当前位置,开始找出后面的较小值与该位置交换
- 选择排序的关键:
- 确定总共要选几轮:数组的长度-1
- 控制每轮从以前的位置为基准,与后面元素选择几次。
- 实现代码:
- 运行结果:
3.二分法查找
- 二分法查找为在一个数组中利用二分法查询一个数
- 注意:这个数组必须是实现排序好的,否则会出错
- 二分法查找正常的检索条件应该为开始位置min<=结束位置max
- 实现代码:
-
1 /** 2 * 二分查找算法: 3 * 利用二分法找出一个数在数组(需要已经排好序的数组)中的位置,返回索引 4 * 没有找到则返回-1 5 */ 6 public class Demo3 { 7 public static void main(String[] args) { 8 int[] a = {11, 22, 33, 45, 55, 66, 77, 88, 99}; 9 System.out.println("请输入你要寻找的数"); 10 Scanner sc = new Scanner(System.in); 11 int number = sc.nextInt(); 12 int index = Sar(a, number); 13 if (index != -1) { 14 System.out.println(number + "在数组中的位置为" + (index +1)); //返回的位置为索引+1符合现实的计数 15 } else { 16 System.out.println("该数组中没有" + number + "这个数字"); 17 } 18 } 19 20 public static int Sar(int[] arr, int number) { 21 int left = 0; 22 int right = arr.length - 1; 23 //当左边的标志小于右边的标志时候才说明还可以找,否则说明已经找完了 24 while (left <= right) { 25 //二分法的关键,二分 26 int mid = (left + right) / 2; 27 //当找到时返回mid 28 if (number == arr[mid]) { 29 return mid; 30 } else if (number > arr[mid]) { 31 //如果取得数大于Mid,则将left取在mid的右边 32 left = mid + 1; 33 } else if (number < arr[mid]) { 34 //如果取得数小于Mid,则将right取在mid的左边 35 right = mid - 1; 36 } 37 } 38 return -1; 39 } 40 }
- 运行结果:
- 总结
六、Lambda表达式
- Lambda表达式是JDK8开始后的一种新语法形式。作用是简化匿名内部类的代码写法。
-
-
什么是函数式接口?首先必须是接口、其次接口中有且仅有一个抽象方法的形式
- Lambda表达式的简化体验
=====>
- 总结