【JAVA】包装类、正则表达式、Arrays类、Lambda表达式

这篇具有很好参考价值的文章主要介绍了【JAVA】包装类、正则表达式、Arrays类、Lambda表达式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 包装类

包装类是8种基本数据类型对应的引用类型

作用:后期的集合和泛型不支持基本类型,只能使用包装类

基本数据类型和其对应的引用数据类型的变量可以互相赋值

基本数据类型 引用数据类型

byte

Byte

short

Short

int

Integer

long

Long

char

Character

float

Float

double

Double

boolean Boolean
  • 包装类的变量默认值可以是null,容错率更高
  • 可以把基本类型的数据转换成字符串类型(调用 基本数据类型的变量.toString()或Integer.toString(基本数据类型的变量)得到字符串)
  • 可以把字符串类型的数值转换成真实的数据类型
//将字符串类型的整数转为int型
int a = Integer.parseInt(“字符串类型的整数”);
int a2 = Integer.valueOf(“字符串类型的整数”);
//将字符串类型的小数转为double型
double b = Double.parseDouble(“字符串类型的小数”);
double b2 = Double.valueOf(“字符串类型的小数”);

2 正则表达式

字符类(默认匹配一个字符)

[abc] 只能是a, b, c
[^abc 除了a, b, c之外的任何字符
[a-zA-Z]  az AZ,包括(范围)
[a-d[m-p]] ad,或m通过p:([a-dm-p]联合)
[a-z&&[def]]  d, e, f(交集)
[a-z&&[^bc]] az,除了bc:([ad-z]减法)
System.out.println("a".matches("[abc]")); // true
System.out.println("z".matches("[abc]")); // false
System.out.println("ab".matches("[abc]")); // false
System.out.println("ab".matches("[abc]+")); //true

预定义的字符类(默认匹配一个字符) 

任何字符

\d 

一个数字: [0-9]

\D 

非数字: [^0-9]

\s 

一个空白字符: [ \t\n\x0B\f\r]

\S 

非空白字符: [^\s]

\w 或 [a-zA-Z_0-9]

英文、数字、下划线
\W 或 [^\w] 一个非单词字符

量词(多个字符)

X?  

X一次或根本没有

X*

X零次或多次

X+ 

X一次或多次

X {n} 

X正好n

X {n, } 

X至少n
X {n,m}  X至少n但不超过m
// 验证手机号
boolean p = phoneNumber.matches("1[3-9]\\d{9}");

 public String replaceAll(String regex,String newStr)

按照正则表达式匹配的内容进行替换

public String[] split(String regex)

按照正则表达式匹配的内容进行分割字符串,反回一个字符串数组。

// 将字符串里的字母替换成a
String name = "昨天lllll再见bye";
String na = name.split("\\w+", 'a')  // 昨天a再见a
// 遇见字符串里的字母分割
String[] naArr = name.split("\\w+") // [昨天,再见]
/* 正则表达式获取信息 */

String rs = "明天你好,我是今天电话123-12322424,邮箱" +
        "123@qq.com,电话13512345678,0203232323" +
        "邮箱123@qq.com,123-123-1234 ,1231231234";

// 需求:从上面的内容中获取电话号码和邮箱。

// 1.规则
String regex = "(\\w{1,}@\\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(rs);

// 4.通过匹配器去内容中爬取出信息
while(matcher.find()){
    System.out.println(matcher.group());
}

3 Arrays类

数组操作工具类,操作数组元素

public static String toString​(类型[] a)

返回数组内容的字符串字符串,形状还是数组形状,类型是字符串

public static void sort​(类型[] a)

对数组进行默认升序排序,无返回值

public static <T> void sort​(类型[] a, Comparator<? super T> c)

使用比较器对象自定义排序

public static int binarySearch​(int[] a, int key)

二分搜索数组中的数据,在排好序的数组a种查找key,存在返回索引,不存在返回-1

排序

public static void sort​(类型[] a)

对数组进行默认升序排序

public static <T> void sort​(类型[] a, Comparator<? super T> c)

使用比较器对象自定义排序

// 自定义数组降序排,仅支持引用数据类型
Integer[] a = [1,3,5,9]
Arrays.sort(a, new Comparator<Integer>(){
    @Override
    public int compare(Integer a1, Integer a2){
        return a2 - a1;
        // 因为返回值必须是整数,若比较的值是浮点型,可以下面这个写法
        // return Double.compare(a2, a1)
    }
});

4 Lambda表达式

简化函数式接口的匿名内部类的写法

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

函数式接口:

  • 必须是接口,并且接口中有且仅有一个抽象方法
  • 通常我们会在接口上加上一个@FunctionalInterface注解,标记该接口必须是满足函数式接口。
public class LambdaDemo1 {
    public static void main(String[] args) {
        goSwimming( new Swimming() {
            @Override
            public void swim() {
                System.out.println("游泳");
            }
        } );
    }
    public static void goSwimming(Swimming swimming) {
        swimming.swim();
    }
}

简化后 swim()

public class LambdaDemo1 {
    public static void main(String[] args) {
        goSwimming( () -> {
	System.out.println("游泳") } );
        
    }
    public static void goSwimming(Swimming swimming) {
        swimming.swim();
    }
}
// 自定义数组降序排,仅支持引用数据类型
Integer[] a = [1,3,5,9]
/**
Arrays.sort(a, new Comparator<Integer>(){   
    @Override
    public int compare(Integer a1, Integer a2){
        return a2 - a1;    
});
**/
// 简化后
Arrays.sort(a,(Integer a1, Integer a2) -> {
        return a2 - a1;    
});

表达式的省略写法文章来源地址https://www.toymoban.com/news/detail-647248.html

  • 参数类型可以省略不写。
  • 如果只有一个参数,参数类型可以省略,同时()也可以省略。
  • 如果Lambda表达式的方法体代码只有一行代码。可以省略大括号不写,同时要省略分号
  • 如果Lambda表达式的方法体代码只有一行代码。可以省略大括号不写。此时,如果这行代码是return语句,必须省略return不写,同时也必须省略runturn语句的分号
// 简化后
Arrays.sort(a,(a1, a2) -> a2 - a1);

到了这里,关于【JAVA】包装类、正则表达式、Arrays类、Lambda表达式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C++干货铺】C++11新特性——lambda表达式 | 包装器

    ========================================================================= 个人主页点击直达:小白不是程序媛 C++系列专栏:C++干货铺 代码仓库:Gitee ========================================================================= 目录 C++98中的排序 lambda表达式 lambda表达式语法 表达式中的各部分说明 lambda表达式的使

    2024年01月21日
    浏览(34)
  • 进阶JAVA篇- Lambda 表达式与 Lambda 表达式的省略规则

    目录         1.0 什么是 Lambda 表达式?         1.1 既然跟匿名内部类相关,先来回顾匿名内部类。          1.2 Lambda 表达式与匿名内部类之间的关系。         1.3 函数式接口         1.4 在具体代码中来操作一下         2.0 Lambda 表达式省略规则          Lambda 表达

    2024年02月08日
    浏览(43)
  • 【C++进阶】C++11(下)可变参数模板&lambda表达式&包装器

    我们紧接着上一节的讲解来进行 C++11的新特性可变参数模板能够让您创建可以接受可变参数的函数模板和类模板,相比C++98/03,类模版和函数模版中只能含固定数量的模版参数,可变模版参数无疑是一个巨大的改进。然而由于可变模版参数比较抽象,使用起来需要一定的技巧

    2024年04月11日
    浏览(69)
  • Java Lambda 表达式

    💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! Java Lambda 表达式是 Java 8 引入的一种函数式编程特性,它是一种轻量级的匿名函数,允许我们将函数作为方法的参数进行传递。Lambda 表达式可以理解为是一种简洁的方式来表示可传递的代码块,它可以替代传统的匿名内

    2024年02月08日
    浏览(45)
  • Lambda表达式(JAVA)

    注:如果没有学过 匿名内部类 和 接口 不推荐往下看。 (parameters) - expression 或 (parameters) -{ statements; } parameters:表示参数列表; -:可理解为“被用于”的意思; expression:表示一条语句; statements:表示多条语句。 Lambda可以理解为:Lambda就是匿名内部类的简化。 lambda表达式

    2024年02月08日
    浏览(45)
  • Java Lambda表达式

    1.1 函数式编程思想概括 在数学中,函数就是有输入量、输出量的一套计算方案,也就是“拿数据做操作” 面向对象思想强调“必须通过对象的形式来做事情” 函数式思想则尽量忽略面

    2024年02月07日
    浏览(47)
  • Java- Lambda表达式

    目录 一、Lambda简介 二、Lambda使用前提 三、Lambda语法 1.操作符 a.\\\"-\\\"  b.\\\"::\\\" 2.格式  a.无参数 b.有参数 四、Lambda演化过程 五、Lambda实现排序 Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性。Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)

    2024年02月03日
    浏览(65)
  • Java学习——lambda表达式

    什么是Lambda表达式? 可以将Lambda表达式理解为一个匿名函数; Lambda表达式允许将一个函数作为另外一个函数的参数; 我们可以把 Lambda 表达式理解为是一段可以传递的代码(将代码作为实参),也可以理解为函数式编程, 将一个函数作为参数进行传递 。 为什么要引入Lambda表

    2024年02月04日
    浏览(48)
  • Java中的lambda表达式

    目录 一、背景 二、lambada表达式的基本使用 三、变量捕获 四、lambda在集合中的使用(map和set) 五、优缺点 一、背景 (1)、lambda表达式的定义: (2)、lambda表达式的语法: (3)、函数式接口 二、lambada表达式的基本使用 (1)没有使用lambda表达式,简单调用函数式接口展

    2024年02月08日
    浏览(41)
  • java lambda表达式详解

    我们知道,在Java中,接口是不能实例化的,但是接口对象可以指向它的实现类对象。如果接口连实现对象都没有呢?那还可以使用匿名类的方式,如下: 复制 但是,使用匿名内部的方式,代码量其实并不是非常简洁,而为了使代码更加的简洁,Java引进了 Lambda 表达式的写法,

    2024年02月03日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包