[转]CoreJava第七章:常用类
1. 基本数据类型的包装类:为了方便以对象方式操作基本类型的数据,Java SE API中提供了针对8种基本数据类型的包装类
byte --> java.lang.Byte
short --> java.lang.Short
int --> java.lang.Integer
long --> java.lang.Long
float --> java.lang.Float
double --> java.lang.Double
boolean --> java.lang.Boolean
char --> java.lang.Character
掌握各种基本类型的数据与对应包装类对象,与字符串之间的相互转换
2. 自动装箱和自动拆箱:Java SE 5.0以上版本提供的新功能
基本类型的数据可以直接当作对应的包装类对象使用
包装类对象可以直接当作对应的基本类型的数据使用
建议谨慎使用。
3. java.lang.String类:不可变的字符序列。
1) 创建方式:String str = "xxxx";
String str2 = new String("sdfasd");
2) 字符串连接:用+号做字符串的连接操作。
3) 获取字符串的长度:pubic int length()方法
4) 字符串比较:
== 比较两个字符串变量是否引用自同一个对象
boolean equals(Object obj) 比较内容,最安全的。
boolean euqalsIgnoreCase(String str);
int compareTo(String str) 字典顺序比较
boolean startsWith(String str);
boolean endsWith(String str);
5) 搜索相关:
int indexOf(int ch);
int indexOf(String key);
int indexOf(int ch, int start);
int indexOf(String key, int start);
int lastIndexOf(int ch);
int lastIndexOf(String key);
int lastIndexOf(int ch, int start);
int lastIndexOf(String key, int start);
6) 截取子串:
char charAt(int i);
String substring(int start);
String substring(int start, int end); 不包括end位置
String concat(String str); 相当于+, 不建议使用
String replace(char oldChar, char newChar); 把旧字符替换成新字符
String trim(); 去除前后空格
7) 更改大小写
String toUpperCase();
String toLowerCase();
8) 把字符串解析成基本类型的数据:对应包装类的静态方法parseXxx();
例如:int i = Integer.parseInt("1234");
Integer integer = Integer.valueOf("1234");
4. 正则表达式:就是一种字符串匹配模式。
1) 做字符串的查找、替换等。
2) 正则表达式是一个字符串表达式,其中包括普通字符和特殊字符(元字符)
3) 元字符:
a) 限定符:* 0~n次、+ 1~n次、? 0~1次、{n} 指定次数、{n,} 至少n次、{n,m} n~m次
b) 选择匹配符:a|b
c) 特殊字符:普通字符可以使用ASCII或Unicode符表示
Unicode码:中文范围[/u4e00-/u9fa5]
元字符要用/来进行转译。
d) 字符匹配符:匹配指定集合中的任意一个字符
[abc]:abc中的任意一个字符
[^abc]:非abc中的任意一个字符
[a-z]:a到z之间的任意一个字符。[0-9]
[^a-z]:非a到z之间的任意一个字符
. :除/n之外的任意一个字符
/d:任何一个0-9的数字
/D:任何一个非数字
/w:任何一个英文字符。等效于[a-zA-Z0-9_]
/W:任何一个非英文字符。等效于[^a-zA-Z0-9_]
/s:匹配空白字符。
/S:匹配非空白字符。
e) 定位符:
^:匹配开始
$:匹配结束
/b:匹配单词边界
/B:非边界
f) ()用来对正则表达式进行分组。可重用。用“/组编号”来引用。
还可以“$组编号”来获取指定分组所匹配到的字符串。
4) 贪心匹配,默认情况的元字符都是尽量多的匹配字符串。可以在元字符后面跟上?来表示最少匹配(非贪心匹配)。
5. Java对正则表达式的支持:jdk1.4开始提供了java.util.regex包来支持正则表达式的操作。
1) Pattern:正则表达式的编译器,把正则表达式编译成Pattern实例。
a) public static Pattern compile(String regex):编译指定的正则表达式返回一个Pattern实例。
b) public static boolean matches(String regex, CharSequence input): 编译给定正则表达式并尝试将给定输入与其匹配。适合只使用一次的情况。
c) public Matcher matcher(CharSequence input):创建匹配给定输入与此模式的匹配器。
2) Matcher:正则表达式的匹配器,通过匹配器把编译器编译好的正则表达式与指定的字符串进行匹配。
a) public boolean find(): 尝试查找与该模式匹配的输入序列的下一个子序列。
b) public String group():返回由以前匹配操作所匹配的输入子序列。
c) public String group(int group):返回在以前匹配操作期间由给定组捕获的输入子序列。
d) public String replaceAll(String replacement): 替换模式与给定替换字符串相匹配的输入序列的每个子序列
e) public boolean matches():尝试将整个区域与模式匹配。用得不多。
3) 使用方式:
a) boolean flag = Pattern.matches("正则表达式", "源字符串");
b) Pattern pattern = Pattern.compile("正则表达式");
Matcher matcher = pattern.matcher("源字符串");
while(matcher.find()){
String str = matcher.group();
}
4) String类与正则表达式相关的方法:
a) public boolean matches(String regex): 告知此字符串是否匹配给定的正则表达式。
b) public String replaceAll(String regex, String replacement): 使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。
c) public String[] split(String regex) 根据给定正则表达式的匹配拆分此字符串。
5. StringBuilder和StringBuffer类:当需要频繁修改字符串的内容时建议使用。
1) 用于高效的更改字符串的内容。
2) 常用的方法:
public StringBuilder append(String str); //方法链的调用方式
public String toString();
3) StringBuilder和StringBuffer类提供的方法完全一样,只是StringBuilder是线程不安全的。StringBuffer是线程安全的。在非多线程环境下,使用StringBuilder类效率更高。
6. java.lang.Math类,它提供数字中的常用运算方法,全部是静态的。
7. 静态导入:jdk5.0以上版本,可以使用 import static 包名.类名.*; 把指定类中的所有静态成员导入到当前类中。当前类就可以直接访问。不需要通过类名了。
8. java.util.Random类,随机数工具类。
1) 构造方法:Random();
2) 常用方法:public int nextInt(int max); //产生[0,max)之间的一个随机整数
9. 日期和时间类
1) System类currentMillis(); 获取系统当前时间的毫秒值.(从1970-01-01 00:00:00开始的)
2) java.util.Date类。对国际化的支持不太好,大部分方法已过时。但格式化类却使用它。
3) java.util.Calendar类。日历类,它提供了丰富的方法,用来操作日历的指定字段。
a) 日历字段:YEAR 年; MONTH 月; DAY_OF_MONTH 日; HOUR MINUTE SECOND
b) 更改或获取日历字段值的方法:
void set(int field, int value);
void add(int field, int value);
int get(int field);
c) 和Date实例之间的转换
//c -> d
Date getTime();
//d --> c
Calendar c = Calendar.getInstance();
c.setTime(date);
10. SimpleDateFormat类。使用指定的模式串完成Date--> String和String --> Date的操作。
1) 模式字母:y,M,d,H,m,s
2) String format(Date date);
3) Date parse(String str) throws ParseException;
11. DecimalFormat类。使用指定的模式串完成数值的格式化工作。
1) 模式字符:0 , # . % ¤ -
2) String format(double d);
12. MessageFormat类。对指定的字符串中的点位符进行替换。
1) 点位符的形式: {编号} 。编号从0开始
2) String format(String 要格式化的字符串, Object... params);
13. java.lang.System类。
14. java.lang.Runtime类。