天天看点

Java基本知识(六)一、 Arrays二、ObjectArray三、System类四、Calendar类五、Date类六、Math类七、Random类八、正则表达式九、Collection十、Iterator十一、List

针对数组操作的工具类,提供了一些针对数组排序和二分搜索的方法。

常用方法:

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元素的索引。例如:

Java基本知识(六)一、 Arrays二、ObjectArray三、System类四、Calendar类五、Date类六、Math类七、Random类八、正则表达式九、Collection十、Iterator十一、List

对象数组,存储对象的数组。

例如:

Java基本知识(六)一、 Arrays二、ObjectArray三、System类四、Calendar类五、Date类六、Math类七、Random类八、正则表达式九、Collection十、Iterator十一、List

System 类包含一些有用的类字段和方法,不能被实例化。

1、public static void gc():运行垃圾回收器。 实质是在执行finalize方法。

在自定的类中重写finalize()方法:

Java基本知识(六)一、 Arrays二、ObjectArray三、System类四、Calendar类五、Date类六、Math类七、Random类八、正则表达式九、Collection十、Iterator十一、List

在测试类中运行gc方法:

Java基本知识(六)一、 Arrays二、ObjectArray三、System类四、Calendar类五、Date类六、Math类七、Random类八、正则表达式九、Collection十、Iterator十一、List

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表示长度。

Java基本知识(六)一、 Arrays二、ObjectArray三、System类四、Calendar类五、Date类六、Math类七、Random类八、正则表达式九、Collection十、Iterator十一、List

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输出。

Java基本知识(六)一、 Arrays二、ObjectArray三、System类四、Calendar类五、Date类六、Math类七、Random类八、正则表达式九、Collection十、Iterator十一、List

1、概述:表示特定的瞬间,精确到毫秒。

2、构造方法:

(1)public Date()表示分配它的时间(精确到毫秒)。

(2)public Date(long date)创建一个日期对象,指定毫秒值。需要将long 时间毫秒值转换成Date对象。

(3)public void setTime(long time)设置毫秒值。

3、常用方法:public long getTime()将Date对象转换为long时间的毫秒值。

Java基本知识(六)一、 Arrays二、ObjectArray三、System类四、Calendar类五、Date类六、Math类七、Random类八、正则表达式九、Collection十、Iterator十一、List

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)例如:

Java基本知识(六)一、 Arrays二、ObjectArray三、System类四、Calendar类五、Date类六、Math类七、Random类八、正则表达式九、Collection十、Iterator十一、List

(7)DateUtil:Sting与Date互相转换的工具类。

定义DateUtil功能:

Java基本知识(六)一、 Arrays二、ObjectArray三、System类四、Calendar类五、Date类六、Math类七、Random类八、正则表达式九、Collection十、Iterator十一、List

利用定义的DateUtil功能进行Date与String的互相转换:

Java基本知识(六)一、 Arrays二、ObjectArray三、System类四、Calendar类五、Date类六、Math类七、Random类八、正则表达式九、Collection十、Iterator十一、List

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,用位^的方法,将其值互换:

Java基本知识(六)一、 Arrays二、ObjectArray三、System类四、Calendar类五、Date类六、Math类七、Random类八、正则表达式九、Collection十、Iterator十一、List

1、概述:获取随机数的类。

2、构造方法:

(1)public Random():无参构造方法。

(2)public Random(long seed) :指定long类型的数据进行构造随机数类对象。

(1)public int nextInt():获取随机数,范围:int类型范围之内。

(2)public int nextInt(int n):获取随机数,范围:[0,n)。

4、例如:

Java基本知识(六)一、 Arrays二、ObjectArray三、System类四、Calendar类五、Date类六、Math类七、Random类八、正则表达式九、Collection十、Iterator十一、List

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个字符组成:

Java基本知识(六)一、 Arrays二、ObjectArray三、System类四、Calendar类五、Date类六、Math类七、Random类八、正则表达式九、Collection十、Iterator十一、List

3、替换方法:public String replaceAll(String regex,String replacement)

使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。

例如:用“*”替换掉所有数字:

Java基本知识(六)一、 Arrays二、ObjectArray三、System类四、Calendar类五、Date类六、Math类七、Random类八、正则表达式九、Collection十、Iterator十一、List

4、字符串分割功能:public String[] split(String regex)

按照指定的格式进行分割,分割后返回的是一个字符串数组。

Java基本知识(六)一、 Arrays二、ObjectArray三、System类四、Calendar类五、Date类六、Math类七、Random类八、正则表达式九、Collection十、Iterator十一、List

5、模式和匹配器典型调用基本顺序

(1)public static Pattern compile(String regex)将给定的正则表达式编译到模式中

(2)Matcher matcher(String input)模式对象转换成匹配器对象,即通过模式对象,构造一个匹配器对象。

Java基本知识(六)一、 Arrays二、ObjectArray三、System类四、Calendar类五、Date类六、Math类七、Random类八、正则表达式九、Collection十、Iterator十一、List

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。

Java基本知识(六)一、 Arrays二、ObjectArray三、System类四、Calendar类五、Date类六、Math类七、Random类八、正则表达式九、Collection十、Iterator十一、List

9、转换功能:Object[] toArray() 将集合转换成数组。

Java基本知识(六)一、 Arrays二、ObjectArray三、System类四、Calendar类五、Date类六、Math类七、Random类八、正则表达式九、Collection十、Iterator十一、List

10、集合专有遍历方式:迭代器遍历,Iterator iterator()

1、集合的迭代器方法:Iterator iterator():获取集合的迭代器。

2、Iterator接口常用方法:

(1)boolean hasNext() :判断是否有下一个元素可以迭代,若有返回true,否则返回false。

(2)Object next():返回迭代的下一个元素。

Java基本知识(六)一、 Arrays二、ObjectArray三、System类四、Calendar类五、Date类六、Math类七、Random类八、正则表达式九、Collection十、Iterator十一、List

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),且元素不能重复。

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:线程安全的类,底层数据结构是数组,查询快,增删慢。内存方面,线程安全的,同步,执行效率低。

继续阅读