API正则表达式

API:1.Object 2.日期与时间 3.包装类 4.Arrays类

Object

Object类的作用
  • 一个类要么默认继承了Object类,要么间接继承了Object类,Object类是Java中的祖宗类

  • Object作为所有类的父类,提供了很多常用的方法给每个子类对象拿来使用

Object类的常用方法
方法名作用存在意义
s.toString()默认是返回当前对象在堆内存中的地址信息:类的全限名@内存地址被子类重写,以便返回对象的内容信息,直接输出s.toString()时输出对象的姓名年龄之类的
s2.equals(s2)默认是比较当前对象与另一个对象的地址是否相同,相同返回true,不同返回false被子类重写,以便子类自己来定制比较规则(比如比较对象内容),比较从PC端和手机端进入系统的是否为同一个人

Objects类的常用方法
  • 使用Objects的equals方法在进行对象的比较会更安全,

  • 可以避免空指针异常,也就是可以比较null

StringBulider

概述

  • StringBuilder是一个可变的字符串的操作类,我们可以把它看成是一个对象容器

  • 操作字符串的性能比String要更高(如拼接、修改等)

常用方法

方法名作用
sb.append("a").append("b")支持链式添加
sb.reverse().append("wzy")翻转+添加;链式
sb.length()长度

注意

  • StringBulider只是手段工具,我们使用完StringBulider以后还是要把StringBulider类型的变量转换为String类型的

日期与时间

Date类
  • 获取此刻具体时间:年月日时分秒星期月份

 Date d=new Date();//括号里不填数d就是当前时间
 //填数d就是填进去的时间毫秒值所对应的日期

  • 从1970年1月1日00:00:00到此刻的总的毫秒值

 long time=d.getTime();//不用
 long time2=System.currentTimeMillis();//常用

  • 把时间毫秒值转为日期对象

 Date d2=new Date(time2);
  • 日期时间对象不转化成时间毫秒值也能判断时间的先后

SimpleDateFormat类
  • 1.格式化输出时间

    • 既可以格式化时间也可以直接格式化时间毫秒值

    • 先通过SimpleDateFormat这个类的构造器创建出一个对象sdf,在调用它的format方法

 SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日HH:mm:ss");
 String res = sdf.format(d);
  • y 年

    M 月

    d 日

    H 时

    m 分

    s 秒

  • 2.解析字符串为时间

    • 格式必须保持一致

 String dateStr="2021年08月06日11:11:11";
 SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日HH:mm:ss");
 Date d=sdf.parse(dateStr);

Calender抽象类

注意:calendar是可变日期对象,一旦修改后其对象本身表示的时间将产生变化

  • 抽象类通过类名调用静态方法创建对象cal

    •  Calendar cal=Calendar.getInstance();

      输出cal会输出它里面包含的所有信息

新增时间

1.LocalTime /LocalDate / LocalDateTime

  • 新增的API严格区分了时刻、本地日期、本地时间,并且,对日期和时间进行运算更加方便

  • 新API的类型几乎全部是不变类型(和String的使用类似),可以放心使用不必担心被修改

  • 新增日期时间可以调他们自己的API只获取年或者月或者星期

  • 他们三者构建对象和API都是通用的

    • LocalDate:不包含具体时间的日期

    • LocalTime:不含日期的时间。

    • LocalDateTime:包含了日期及时间。

  • 以下方法都一样::

  • 创建对象方式:类名.静态方法名

    • LocalDate nowDate = LocalDate.now();

  • 指定日期/时间创建对象

    • LocalDateTime localDateTime=LocalDateTime.of(2003, 9, 14, 5, 21, 34)

  • 只拿取月份

    • nowDate.getMonthValue()

  • LocalDateTime 综合了 LocalDate 和 LocalTime 里面的方法

  • 可以向下转型

    •  LocalDateTime noeDateTime=LocalDateTime.now();
       LocalTime lt=noeDateTime.toLocalTime();

2.Instant

  • 代表的是时间戳

3.DaeTimeFormatter

  • JDK8引入的一个新的日期时间格式化器,

  • 功能与SimpleDateFormat一样

  • 用法与SimpleDateFormat也一样

4.Duration/Period

  • Duration

    • 计算时间间隔

    • Duration duration=Duration.between(brithday,toady);

  • Period

    • 计算日期间隔,只能精确到日

    • Period period1=Period.between(brithday,today);

包装类

  • 集合和泛型其实也只能支持包装类型,不支持基本数据类型

  • 其实就是8种基本数据类型对应的引用类型

    • char Character

    • int Integer

    • 其他都大写首字母

自动装箱 /拆箱
  • 基本类型的数据和变量可以直接赋值给包装类型的变量

  • 包装类型的变量可以直接赋值给基本数据类型的变量。

包装类特有功能
  • 可以把字符串类型的数值转换成真实的数据类型

    • Integer.parseInt(“字符串类型的整数”)

    • Double.parseDouble(“字符串类型的小数”)

Arrays类

  • 数组操作工具类,专门用于操作数组元素的

    常用方法

方法名使用示例说明
public static String toString(类型[] a)Arrays.toString(arr)返回数组的内容(字符串形式)
public static void sort(类型[] a)Arrays.sort(arr);对数组进行默认升序排序
public static int binarySearch(int[] a, int key)Arrays.binarySearch(a,1);二分搜索数组中的数据,存在返回索引,不存在返回-1

自定义排序方式
  • 降序排序

    • Arrays.sort(arr, (o1,o2) ->  o1<o2?1:-1);
  • 排结构体

    • Arrays.sort(arr, (Student o1, Student o2) ->{
              return o1.getAge()>o1.getAge()?1:-1;
              /**
               * 比较小数
               * return Double.compare(o1.height,o2.height)
               */
      });

#

正则表达式

  • 正则表达式可以用一些规定的字符来制定规则,并用来校验数据格式的合法性。

  • public boolean matches(String regex): 判断是否匹配正则表达式,匹配返回true,不匹配返回false。

字符类

只能校验单个字符

表达式说明示例
[abc]只能是a, b, 或c"a".matches("[abc]")
[^abc]除了a, b, c之外的任何字符
[a-zA-Z]a到z A到Z,包括(范围)
[a-d[m-p]]a到d,或m通过p:([a-dm-p]联合)
[a-z&&[def]]d, e, 或f(交集)
a-z&&[ ^[bc] ]a到z,除了b和c
[a-z&&[ ^m-p ] ]a到z,除了m到p

预定义的字符串类

默认只能校验一个字符

表达式说明示例
\d一个数字[0-9]"1".matches("\\d")
\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 {n}X,正好n次
X {n, }X,至少n次,(就是必须n位以上)"123sdf".matches("\\w{6,}")
X {n,m}X,至少n但不超过m次
X?X,一次或者根本不

Lambda表达式

Lambda概述
  • 作用:简化匿名内部类的代码写法

    • 如果不简化,我们需要创建一个实现类来实现接口的,并重写这个实现类里面的抽象方法,最后创建这个实现类的对象来调用这个方法

    • 一旦重写:不用创建实现类,直接重写方法,不用创建实现类的对象,直接创建接口的”对象“,通过这个对象,反过来调用重写的方法

  • 格式

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

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

    • 函数式接口:l首先必须是接口、其次接口中有且仅有一个抽象方法的形式

    • 函数式接口上都有一个@FunctionalInterface注解

省略规则
  • 参数类型可以省略不写

  • 如果只有一个参数,参数类型可以省略,同时()也可以省略

  • l方法体代码只有一行代码。可以省略大括号不写,同时要省略分号!

  • 方法体代码只有一行代码。可以省略大括号不写。此时,如果这行代码是return语句,必须省略return不写,同时也必须省略";"不写

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值