1. Object类
Object类:java.lang.ObjectObject类为所有类的父类int HashCode():返回对象的哈希码值Class<?> getClass():返回对象的运行时类(字节码文件),可以用getName()方法获取字节码文件的类名String toString():返回对象的字符表示;打印对象时自动调用对象的toString()方法;若不重写,默认使用Object的toString()方法,返回格式:类名@hashcodeboolean equals(Object obj): 判断两对象是否相等,默认Object的equals()方法比较对象的地址值(底层使用==),可进行重写比较对象属性;String类的equals()方法比较字符串内容;==比较基本数据类型时,比较的是值;==比较引用数据类型时,比较的是地址值
2. System类
System类:java.lang.SystemSystem类所有方法都为静态System.err:标准错误输出流System.in:标准输入流,为InputStream类型;可通过System.setIn()修改System.out:标准输出流,为PrintStream类型;可通过System.setOut()修改static void gc():运行垃圾回收器,只是提醒系统进行垃圾回收,不一定会立即调用- 回收时会调用对象的
finalize()方法,该方法继承于Object类
- 回收时会调用对象的
static void exit(int status):终止当前的java虚拟机0表示正常终止,非0表示非正常终止
static long currentTimeMillis():获取以毫秒为单位的当前时间static void arraycopy(Object src, int srcPos, Object dest, int desPos, int length):从src中的srcPos位置开始复制length个元素到dest中的desPos位置
3. Scanner类
Scanner类:java.util.Scannerint nextInt():读取下一个int数boolean hasNextInt():判断下一个值是否可以转为int数;类似有Double等或hasNext()`判断是否还有字符串String nextLine():读取输入的字符串到回车换行为止;若上一次调用nextInt()方法,则nextLine()会取到空字符串,因为nextLine()会遇到数字后的\r\n,此时终止
4. 异常
Throwable类:java.lang.ThrowableString getMessage():获取异常信息String toString():获取异常类名和信息void printStrackTrace():打印异常信息及位置- 所有异常都是由
Throwble类派生Error:错误Exception:异常,又分为运行时异常与编译时异常RuntimeException:运行时异常- 编译时异常:
java程序必须显示处理,否则报错无法通过编译
JVM默认异常处理方式:打印异常信息,同时停止程序运行try...catch语句形式try...catchtry...catch...finallytry...finally
- 多个异常可以使用多个
catch语句;JDK7后多个异常可以在类型之间使用|隔开 throw关键字可以抛出异常;如果throw的异常不是RuntimeException则必须在方法上用throws声明,表示抛出的异常由调用者处理;throw只能抛出一个异常对象,throws后面可声明多个异常finally语句一定会执行,除非执行前JVM退出(System.exit()),可以用于释放资源- 自定义异常:继承
Exception或RuntimeException(如果需要传入异常信息,则要重写子类的构造方法),然后用throw抛出 - 子类重写父类的方法是,只能抛出与父类相同的异常或异常的子类;父类方法有多个异常抛出时,子类不能抛出父类没有的异常;父类方法没有抛异常,则子类重写的方法也不能抛异常
try后程序会继续执行;throw后程序会停止执行后面的语句,将异常抛给调用者处理
5. Arrays类
Arrays类:java.util.Arrays- 用于处理数组,方法都为静态
static String toString(int[] arr):数组转成字符串;类似有boolean、char、long等static void sort(int[] arr):从小到大排序;类似有byte、char、double等static int binarySearch(int[] a, int key):使用二分法查找key;若元素无序,则返回(-插入点-1)
6. String类
String类:java.lang.String- 字符串字面值(如:
"abc")都是该类的实例 String():空参构造String(byte[] bytes):将字节数组转成字符串;类似有char[]参数String(byte[] bytes,int index,int length):将字节数组的一部分转成字符串;类似有char[]参数String(String original):将字面值转成字符串boolean equals(Object obj):比较字符串内容- 通常用常量作为调用对象,防止空指针异常
- 字面值常量存放在常量池,若两个字符串变量的初始化常量相同,则这两个地址指向常量池中同一个对象
- java常量优化:将初始化时的常量先进行运算再编译
- 字符串串联底层通过
StringBuffer或StringBuilder实现,串联后再调用toString()方法
boolean equalsIgnoreCase(String str):比较字符串内容,忽略大小写boolean contains(String str):判断是否包含strboolean startsWith(String str):判断是否以str开头boolean endsWith(String str):判断是否以str开头boolean isEmpty():判断是否为空""是String对象null是空常量,可以给任何引用类型对象赋值null不能调用对象的方法,否则会出现空指针异常
int length():获取长度char charAt(int index):获取指定索引的字符int indexOf(int ch):获取字符在该字符串中第一次出现的索引,若没有则返回-1;类似有String参数int indexOf(int ch,int fromIndex):从指定位置开始,获取字符在该字符串中第一次出现的索引,若没有则返回-1;类似有String参数String subString(int start):获取从指定位置开始到结尾的子串;调用subString()方法会返回一个新的字符串,不会改变原有字符串String subString(int start, int end):获取从[start,end)的子串int lastIndexOf(int ch):从后向前,获取字符串中第一次出现的索引,若没有则返回-1int lastIndexOf(int ch,int fromIndex):从指定位置开始向前,获取字符串中第一次出现的索引,若没有则返回-1String toLowerCase():将字符串转成小写String toUpperCase():将字符串转成大写String concat(String str):拼接字符串byte[] getBytes():将字符串转成字节数组char[] getCharArray():将字符串转成字符数组static String valueOf(Char[] chs):将字符数组转成字符串static String valueOf(int i):将int转成字符串String replace(char old,char new):使用new替换old字符,返回新字符串String trim():去除字符串首尾空字符,包含:\r、\n、\t等int compareTo(String str):按顺序比较字符串;长度一致时比较字符值;长度不一致时比较长度值int compareToIgnoreCase(String str):按顺序比较字符串,不区分大小写
7. StringBuffer类
StringBuffer类:java.lang.StringBufferStringBuffer是线程安全的可变字符序列StringBuffer():空参构造,初始容量为16个字符StringBuffer(CharSequence seq):构造内容为seq的缓冲区,容量为seq的长度加16StringBuffer(int capacity):构造容量为cepacity的缓冲区int capacity():获取缓冲区当前容量int lenght():获取缓冲区的字符数量StringBuffer append(String str):将str添加到缓冲区,返回缓冲区本身;类似有char、long、boolean参数- 调用方法添加或修改时,不会创建新的
StringBuffer对象,直接修改原有对象
- 调用方法添加或修改时,不会创建新的
StringBuffer insert(int offset, String str):将str插入到offset位置,返回缓冲区本身;类似有char、long、boolean参数- 删除或插入式,若没有索引,会引起索引越界异常
StringBuffer deleteCharAt(int index):删除指定位置字符,返回缓冲区本身StringBuffer delete(int start, int end):删除从start到end的字符- 清空:
delete(0, sb.length())
- 清空:
StringBuffer replace(int start, int end, String str):将[start,end)的字符用str替换StringBuffer reverse():将字符串反转,返回缓冲区本身String subString(int start):从start到末尾截取字符串,返回新的字符串String subString(int start, int end):截取[start,end)的字符,返回新的字符串String作为参数传递时,修改后不影响之前的值,因为修改后会产生一个新的String对象;StringBuffer作为参数传递时,修改后影响之前的值,因为修改是对原对象进行的
8. StringBuilder类
StringBuilder类:java.lang.StringBuilder- 方法与
StringBuffer基本一致 - 区别:
StringBuffer为线程安全的,效率低;StringBuilder为线程不安全的,效率高
9. 正则表达式
-
用来描述或匹配字符串语法规则的字符串
-
基本语法
[abc]:单个字符,a、b、c中的其中一个[^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或d~z;等价于[ad-z][a-z&&[^m-p]]:单个字符,可为a~l或q~z;等价于[a-lq-z]
-
预定义字符
.:任意字符;如果要匹配.,正则表达式使用\.,则Java中需要写为\\.(Java转义一次变为\.,正则转义一次)\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{n}:n次X{n,}:至少n次X{n,m}:至少n次,不超过m次
-
捕获组:从左到右按括号编号,
0组表示整个表达式,\n表示第n个捕获组- 如:
((A)(B(C)))- 1组:
((A)(B(C))) - 2组:
(A) - 3组:
(B(C)) - 4组:
(C)
- 1组:
replaceAll()方法中第二个参数可用$n获取第一个参数中的第n个捕获组
- 如:
-
String类中的split()、replaceAll()、replaceFirst()、matches()方法使用正则表达式 -
Pattern类与Matcher类典型使用/* 应用一:判断字符串是否满足正则表达式规则 */ Pattern p = Pattern.compile("a*b"); //编译正则表达式 Matcher m = p.matcher("aaaab"); //创建匹配器 boolean b = m.matches(); //匹配整个区域 /* 以上代码功能与以下代码相同 */ boolean b = "aaaab".matches("a*b"); /* 应用二:查找匹配的子序列 */ Pattern p = Pattern.compile("a*b"); //编译正则表达式 Matcher m = p.matcher("aaaab"); //创建匹配器 boolean b = m.find(); //匹配整个区域 if (b) String s = m.group(); //返回上次find()匹配的子序列