栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java中的日期与时间、包装类、正则表示式简述、Arrays类、Lambda表达式的使用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java中的日期与时间、包装类、正则表示式简述、Arrays类、Lambda表达式的使用

文章目录
  • 日期与时间
    • Date类
    • SimpleDateFormat类
    • Calendar类
    • JDK8开始新增的日期API
  • 包装类
  • 正则表达式
  • Arrays类
  • Lambda表达式


日期与时间 Date类

简介:Date类的对象在Java中代表的是当前所在系统的此刻日期时间;

常用方法:

方法名说明
public Date()创建一个Date对象,代表的是系统当前此刻的日期时间
public Date(long time)把时间毫秒值转化成Date日期对象
public long getTime()获取时间对象毫秒值
public void setTime(long Time)设置日期对象的时间为当前时间毫秒值对应的时间

SimpleDateFormat类

简介:

  • 可以对Date对象或时间毫秒值格式化成我们喜欢的时间形式。
  • 也可以把字符串的时间形式解析成日期格式;

常用方法:

方法名说明
public SimpleDateFormat()构造一个SimpleDateFormat,使用默认格式
public SimpleDateFormat(String pattern)构造一个SimpleDateFormat,使用指定的格式
public final String format(Date date)将日期格式化成日期/时间字符串
public final String format(Object time)将时间毫秒值格式化成日期/时间字符串
package cn.edu.njust.date;

import java.text.SimpleDateFormat;
import java.util.Date;

public class Test {
    public static void main(String[] args) {
        // 1.创建日期对象
        Date date = new Date();
        System.out.println(date);

        // 2.格式化这个日期对象(指定最终格式化形式)
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss EEE a");

        // 3.开始格式化
        String time = sdf.format(date);

        System.out.println(time);

        // 4.格式化时间毫秒值 | 假设需要当前时间+120秒
        long time1 = System.currentTimeMillis() + 120 * 1000;
        String time11 = sdf.format(time1);

        System.out.println(time11);
    }
}

package cn.edu.njust.date;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class SimpleDateFormatDemo {
    public static void main(String[] args) throws ParseException {
        // 目标:学会使用SimpleDateFormat解析字符串时间成为时间对象
        // 2021年08月06日11:11:11 往后的2填14小时49分06秒
        // 1.首先将字符串时间存储
        String startTime = "2021年08月06日 11:11:11";

        // 2.将字符串时间解析
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
        Date date = sdf.parse(startTime);

        // 3.计算
        long endTime = date.getTime() + (2L*24*60*60 + 14*60*60 + 49*60 + 6) * 1000;

        // 4.格式化时间
        System.out.println(sdf.format(endTime));

    }
}


Calendar类

概述:

  • Calendar代表了系统此刻日期对应的日历对象;
  • Calendar是一个抽象类,不能直接创建对象;

常用方法:

方法名说明
public int get(int field)取日期中的某个字段信息
public void set(int field,int value)修改日历的某个字段信息
public void add(int field,int amount)为某个字段增加/减少指定的值
public final Date getTime()拿到此刻日期对象
public long getTimeInMillis()拿到此刻时间毫秒值

JDK8开始新增的日期API

概述:从Java 8 开始,java.time包提供了新的日期和时间API,主要涉及以下:

方法名说明
LocalDate不包含具体时间的日期
LocalTime不包含具体日期的时间
LocalDateTime包含了具体日期和时间
Instant代表的是时间戳
DateTimeFormatter用于做时间的格式化和解析
Duration用于计算两个“时间”间隔
Period用于计算两个“日期”间隔

包装类

概述:其实就是8中基本数据类型对应的引用类型

基本数据类型引用数据类型
byteByte
shortShort
intInteger
longLong
charCharacter
floatFloat
doubleDouble
booleanBoolean

为什么提供包装类:Java为了实现一切皆对象,为8种基本类型提供了对应的引用类型

自动装箱:基本类型的变量可以直接赋值给对应的包装类类型变量;

自动拆箱:包装类类型的变量可以直接赋值给对应的基本类型变量;

包装类的特色功能:

  • 包装类的变量的默认值可以是null,容错率高;
  • 可以把基本类型的数据转换成字符串类型(用处不大);
  • 可以把字符串类型的变量转换成真实数据类型(十分有用)
Integer.parseInt("字符串类型的整数");
Double.parseDouble("字符串类型的小数");
// 另一种方式
int num = Integer.valueOf("123").intValue();

正则表达式

概述:正则表达式可以用一些规定的字符来指定规则,并用来检验数据格式的合法性;

匹配规则:

实用案例 – 信息爬取:

package cn.edu.njust.regex;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexDemo02 {
    public static void main(String[] args) {
        String s = "来黑马程序学习Java,电话020-43422424,或者联系邮箱" +
                "itcast@itcast.cn,电话18762832633,0203232323" +
                "邮箱bozai@itcast.cn,400-100-3233 ,4001003232";
        // 爬取电话号码和邮箱
        // 1.定义爬取规则
        String regex = "(\w{1,30}@\w{2,10}(\.\w{2,10}){1,2})|" +
                "(1[3-9]\d{9})|(0\d{2,5}-?\d{5,15})|400-?\d{3,8}-?\d{3,8}";
        // 2.编译规则成一个匹配对象
        Pattern pattern = Pattern.compile(regex);
        
        // 3.得到内容 --> 匹配器对象
        Matcher matcher = pattern.matcher(s);

        // 4.开始查找
        while (matcher.find()){
            String str = matcher.group();
            System.out.println(str);
        }
    }
}


Arrays类

概述:数组操作工具类,专门用于操作数组元素的。

常用API:

方法名说明
public static String toString(类型[] a)对数组进行排序
public static void sort(类型[] a)对数组进行默认升序排列
public static void sort(类型[] a, Comparator c)使用比较器对象自定义排序
public static int binarySearch(int[], int key)二分搜索数组中的数据,存在返回索引,不存在返回【-(应插入位置)-1】

自定义排序规则:

  • 如果认为左边数据>右边数据 --> 返回正整数;降序
  • 如果认为左边数据<右边数据 --> 返回负整数;升序
  • 如果相等,返回0;
package cn.edu.njust.arrays;

import java.util.*;

public class Demo01 {
    public static void main(String[] args) {
        // 自定义排序规则
        int[] arr = {3, 5, 1, 2, 7, 9, 6, 8};

        // 默认升序
        Arrays.sort(arr);
        System.out.println(Arrays.toString(arr));

        // 降序 -- 需要自定义比较规则,即比较器;特别注意:只能支持引用类型
        Integer[] arr1 = {3, 5, 1, 2, 7, 9, 6, 8};
        Arrays.sort(arr1, new Comparator() {
            @Override
            public int compare(Integer integer, Integer t1) {
                // 指定比较规则
                // return integer - t1; 升序
                return t1 - integer; // 降序
            }
        });
        System.out.println(Arrays.toString(arr1));
    }
}


Lambda表达式

概述:JDK8以后的新语法格式,用于简化匿名内部类的代码写法;

简化格式:

(匿名内部类被重写方法的形参列表)->{
	被重写的方法体;
}

特别注意:Lambda表达式只能简化函数式接口的匿名内部类写法形式;

package cn.edu.njust.lambda;

public class Demo01 {
    public static void main(String[] args) {
        // 学会使用Lambda表达式简化匿名内部类
        Animal a = new Animal(){
            @Override
            public void cry() {
                System.out.println("动物发出叫声!!!");
            }
        };
        a.cry();

        // 使用Lambda表达式
        

    }

    abstract static class Animal{
        public abstract void cry();
    }
}

package cn.edu.njust.lambda;

public class Demo02 {
    public static void main(String[] args) {
        Animal a1 = new Animal() {
            @Override
            public void eat() {
                System.out.println("动物正在进食!");
            }
        };
        have(a1);

        System.out.println("----------Lambda表达式----------");
        // 使用Lambda表达式
        Animal a2 = () -> System.out.println("动物正在进食!");
        have(a2);

        //进一步,调用方法时:
        System.out.println("----------再次简化----------");
        have(()->System.out.println("动物正在进食!"));
    }


    public static void have(Animal animal){
        System.out.println("准备觅食");
        animal.eat();
        System.out.println("用餐完毕");
    }

    //函数式接口的标志,表明内部只能有一个方法
    @FunctionalInterface
    interface Animal{
        void eat();
    }
}

简化总结:

  • 参数类型可以省略不写。
  • 如果只有一个参数,参数类型可以省略,同时()也可以省略。
  • 如果Lambda表达式的方法体代码只有一行代码。可以省略大括号不写,同时要省略分号!
  • 如果Lambda表达式的方法体代码只有一行代码。可以省略大括号不写。此时,如果这行代码是return语句,必须省略return不写,同时也必须省略";"不写
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/988263.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号