编程语言
首页 > 编程语言> > JAVA进阶--常用时间API、包装类、正则表达式、Array类、Lambda表达式、常见算法--2022年9月1日

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