Java中的日历类/集合类/数学类/正则表达式/数组工具类等的常用方法与基本功能

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中的日历类/集合类/数学类/正则表达式/数组工具类等的常用方法与基本功能相关的知识,希望对你有一定的参考价值。

一、 Arrays

针对数组操作的工具类,提供了一些针对数组排序和二分搜索的方法。
常用方法:
1、public static String toString(int[] a):将int类型的数组转换成字符串。
转换成字符串后输出形式: ([元素1,元素2,元素3...]),Arrays在底层重写了toString方法。
2、public static void sort(int[] a):对指定的 int 型数组按数字升序进行排序。
3、public static int binarySearch(int[] a,int key):二分搜索法,在数组a中查找key元素的索引。例如:
技术分享图片

二、ObjectArray

对象数组,存储对象的数组。
例如:
技术分享图片

三、System类

System 类包含一些有用的类字段和方法,不能被实例化。
常用方法:
1、public static void gc():运行垃圾回收器。 实质是在执行finalize方法。
在自定的类中重写finalize()方法:
技术分享图片
在测试类中运行gc方法:
技术分享图片

2、public static void exit(int status):终止当前正在运行的 Java 虚拟机。参数为状态码,若要终止jvm,参数为0。
常见状态码:404(http状态码,表示所请求的页面不存在或已删除)、500(服务器内部错误)、200(成功,表示服务器成功完成了请求)、302(进一步请求)。
3、public static long currentTimeMillis():返回以毫秒为单位的当前时间。
该方法单独使用无意义,一般用来测试一段代码的执行效率。
4、public static void arraycopy(Object src,int srcPos, Object dest,int destPos, int length):从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。
其中src表示原数组,dest表示目标数组,srcPos 表示从原数组的哪个位置开始,destPos表示到目标数组的哪个位置结束,length表示长度。
例如:
技术分享图片

四、Calendar类

1、概述:Calendar 类,日历类,是一个抽象类。
2、功能:(1)为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供方法;(2)为操作日历字段(例如获得下星期的日期)提供方法。
3、实例化方法:public static Calendar getInstance() :通过一个静态功能来创建日历对象,该方法使用默认时区与语言环境获得一个日历,返回的Calendar基于当前时间。
4、基本方法:
(1)public int get(int field)返回给定的日历字段的值。
(2)public static final int YEAR获取年。
(3)public static final int MONTH获取月份。
(4)public static final int DATE :获取月份中的一天。
5、常用方法:
(1)public abstract void add(int field,int amount)根据日历规则,为给定的日历字段添加或减去指定的时间量 。(常用)
(2)public final void set(int year, int month,int date)设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 的值。
6、注意:在获取当前日期输出月份时,需给月份+1输出。
例如:
技术分享图片

五、Date类

1、概述:表示特定的瞬间,精确到毫秒。
2、构造方法:
(1)public Date()表示分配它的时间(精确到毫秒)。
(2)public Date(long date)创建一个日期对象,指定毫秒值。需要将long 时间毫秒值转换成Date对象。
(3)public void setTime(long time)设置毫秒值。
3、常用方法:public long getTime()将Date对象转换为long时间的毫秒值。
例如:
技术分享图片
5、(重点)Date日期格式与文本格式之间的转换
(1)格式化:日期格式(Date)→文本格式(String)。
方法:public final String format(Date date)
(2)解析:文本格式(String)→日期格式(Date)。(注意:simpleDateFormat在解析文本格式时,里面模式一定要与文本模式一致,否则会出现异常ParseException)。
方法:public Date parse(String source)
(3)中间转换类:DateFormat。DateFormat是一个抽象类,不能实例化,所以应该使用其子类SimpleDateFormat进行实例化。
(4)SimpleDateFormat ,一个以与语言环境有关的方式来格式化和解析日期的具体类,允许进行格式化、解析和规范化。其构造方法为:
public SimpleDateFormat(String pattern) :根据pattern(模式、规则)构造SimpleDateFormat对象。例如:SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd")
(5)日期与时间模式:年(yyyy)、月(MM)、日(dd)、时(hh)、分(mm)、秒(ss)。
(6)例如:
技术分享图片
(7)DateUtil:Sting与Date互相转换的工具类。
例如:
定义DateUtil功能:
技术分享图片
利用定义的DateUtil功能进行Date与String的互相转换:
技术分享图片

六、Math类

1、概述:包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数等。
2、JDK5的特性:静态导入(导入方法的级别)。
3、常用方法:
(1)public static int abs(int a):绝对值
(2)public static double ceil(double a):向上取整
(3)public static double floor(double a):向下取整
(4)public static int max(int a,int b):求最大值
(5)public static int min(int a,int b):求最小值
(6)public static double pow(double a,double b):a的b次幂
(7)public static double random()返回带正号的 随机double 值,范围[0.0,1.0)
(8)public static int round(float a):四舍五入
(9)public static double sqrt(double a):一个数的正平方根
4、位^特点:一个数据被另一个数据位^两次,其值为本身。
常见面试题:用两个变量a、b,用位^的方法,将其值互换:
技术分享图片

七、Random类

1、概述:获取随机数的类。
2、构造方法:
(1)public Random():无参构造方法。
(2)public Random(long seed) :指定long类型的数据进行构造随机数类对象。
3、常用方法:
(1)public int nextInt():获取随机数,范围:int类型范围之内。
(2)public int nextInt(int n):获取随机数,范围:[0,n)。
4、例如:
技术分享图片

八、正则表达式

1、基本语法:
(1)字符:
A、x x字符
B、\ 反斜线字符
C、\t 制表符
D、\n 换行符
E、\r 回车符
(2)字符类:
A、[abc] a、b 或 c
B、[^abc] 除了 a、b 或 c以外的任何字符(否定)
C、[a-zA-Z] a 到 z 或 A 到 Z(范围)
(3)预定义字符类:
A、. 任何字符,如果本身就是“.”,则“. ”写正则表达式时写”\.”
B、\d 数字[0-9],写正则表达式时写“\d”
C、\w 单词字符:[a-zA-Z_0-9](字母大小写、数字字符)
(4)边界匹配器:
A、^ 行的开头
B、$ 行的结尾
C、\b 单词边界/尾
(4)(重点)Greedy 数量词
A、X? X一次或一次也没有
B、X* X零次或多次
C、X+ X一次或多次
D、X{n} X字符恰好出现n次
E、X{n,} X字符至少出现n次
F、X{n,m} X字符至少出现n次,但不超过m次
2、检验方法:public static boolean matches(String regex)
检验输入数据是否和正则规则匹配,如果匹配成功则返回true。
例如:录入一个以188开头的手机号,由11个字符组成:
技术分享图片

3、替换方法:public String replaceAll(String regex,String replacement)
使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
例如:用“*”替换掉所有数字:
技术分享图片

4、字符串分割功能:public String[] split(String regex)
按照指定的格式进行分割,分割后返回的是一个字符串数组。
例如:
技术分享图片
5、模式和匹配器典型调用基本顺序
常用方法:
(1)public static Pattern compile(String regex)将给定的正则表达式编译到模式中
(2)Matcher matcher(String input)模式对象转换成匹配器对象,即通过模式对象,构造一个匹配器对象。
例如:
技术分享图片

九、Collection

1、数组与集合的区别(面试题):
(1)长度:数组长度固定,集合长度可变。
(2)内容:数组只能存储同一种类型的元素,集合可以存储多种类型的元素。
(3)存储类型:数组可以存储基本类型,也可以存储引用类型, 集合只能存储引用类型。
2、概述:Collection,层次结构中的根接口。Collection 表示一组对象,这些对象也称为 collection 的元素。一些 collection 允许有重复的元素,而另一些则不允许。一些 collection 是有序的,一些是无序的。是抽象类,不能被实例化。
3、实例化:Collection c=new ArrayList()
4、添加功能:
(1)(基本功能)boolean add(Object e)添加元素。
(2)(高级功能)boolean addAll(Collection c)添加一个集合中的所有元素。
Boolean:只要添加即返回true。
5、删除功能:
(1)(基本功能)void clear() :删除集合中所有元素(暴力删除)。
(2)(基本功能)boolean remove(Object o):删除集合中的指定元素。
(3)(高级功能)boolean removeAll(Collection c)删除一个集合中所有元素。
A、调用:c1.removeAll(c2),删除c1中所有c2集合中的元素。
B、boolean:只要删除一个元素即返回true,否则返回false。
6、包含功能:
(1)(基本功能)boolean contains(Object o)集合中是否包含指定的元素。
(2)(高级功能)boolean containsAll(Collection c)
A、调用:c1.containsAll(c2),c1集合中是否包含c2集合中的所有元素,
B、boolean:c1必须包含c2中的所有元素才能返回true。
7、获取功能:(基本功能)int size()集合中的元素数。
8、交集功能:(高级功能)boolean retainAll(Collection c)
(1)调用:c1.retainAll(c2),c1集合对c2集合取交集,交集的元素在c1集合中。
(2)boolean:c1集合是否发生变化,若发生变化,返回true,否则返回false。
例如:
技术分享图片

9、转换功能:Object[] toArray() 将集合转换成数组。
例如:
技术分享图片
10、集合专有遍历方式:迭代器遍历,Iterator iterator()

十、Iterator

1、集合的迭代器方法:Iterator iterator():获取集合的迭代器。
2、Iterator接口常用方法:
(1)boolean hasNext() :判断是否有下一个元素可以迭代,若有返回true,否则返回false。
(2)Object next():返回迭代的下一个元素。
例如:
技术分享图片
3、常见异常:java.util.NoSuchElementException 在没有元素还继续获取的情况下出现该异常。
4、注意事项:
(1)it.next()一般情况下只使用一次即可,若使用多次,容易出现问题,it.next(),每使用一次都会返回一个对象。
(2)利用迭代器遍历时,既可使用while循环,也可以使用for循环,其中while循环为模板代码,经常使用,for循环很少使用。
5、Itr:Iterator的子实现类,一种匿名的内部类。
6、替代迭代器:增强for循环。
7、Collection两个子接口:List,Set
(1)List集合特点:有序(存储与取出一致),允许有重复元素。
(2)Set集合特点:无序(不能保证基于迭代的顺序,基于HashMap),且元素不能重复。

十一、List

1、特点:有序(存储与取出一致),允许有重复元素。
2、特有功能:
(1)添加功能:void add(int index,Object element)在指定位置处添加指定元素。
(2)获取功能:A、Object get(int index)返回列表中指定位置的元素。
B、ListIterator listIterator():列表迭代器。
(3)删除功能:Object remove(int index):删除指定位置处的元素。
(4)修改功能:Object set(int index, Object element):用指定element元素替换掉指定位置处的元素。
3、List集合专有迭代遍历:列表迭代器ListIterator listIterator()
4、ListIterator接口常用方法:
(1)boolean hasNext()判断是否有下一个可以迭代的元素(正向遍历)。
(2)Object next()获取下一个元素。
(3)boolean hasPrevious()判断是否有上一个可以迭代元素(逆向遍历)。
(逆向遍历前提:已存在正向遍历,单独使用无意义)。
(4)Object previous()返回上一个元素。
5、List集合的子实现类:
(1)ArrayList:底层数据结构式数组结构,查询块,增删慢。内存方面,线程不安全的,不同步的,执行效率高。
(2)LinkedList:底层数据结构式链表结构,查询慢,增删块。内存方面,线程不安全,不同步,执行效率高。
(3)Vector:线程安全的类,底层数据结构是数组,查询快,增删慢。内存方面,线程安全的,同步,执行效率低。

以上是关于Java中的日历类/集合类/数学类/正则表达式/数组工具类等的常用方法与基本功能的主要内容,如果未能解决你的问题,请参考以下文章

学习java正则与集合框架小总结

Arrays类,包装类,正则表达式,集合

java -- MathBigIntegerBigDecimal类和基本类型的包装类正则表达式

JavaAPI常用类超详细笔记——基本数据类型包装类Object类Arrays类String类StringBuffer和StringBuilder类正则表达式数学类日期类大数据类

java正则表达式中的POSIX 字符类和Unicode 块和类别的类介绍

Java semver 正则表达式中的未封闭字符类