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表达式的简化体验

     =====>

  • 总结

 

 

 

posted @ 2022-04-06 13:32  Ppotato3  阅读(93)  评论(0)    收藏  举报