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