ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2022-09-02 13:04:30  阅读:223  来源: 互联网

标签:arr JAVA 进阶 -- System Arrays int println out


第一节  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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有