学习小结
工具实用类
a) java.util.Arrays
实用类Arrays: 完成各种对数组的操作,如排序、查找、复制元素、填充元素等。
b) 数字格式化: java.text.NumberFormat和DecimalFormat
i. java.text.NumberFormat和DecimalFormate类。NumberFormat 是所有数值格式的抽象基类。此类提供格式化和解析数值的接口。NumberFormat 还提供了一些方法来确定哪些语言环境具有数值格式,以及它们的名称是什么。
ii. 对数值进行格式化使用:String formate(number),Number parse(String)方法。
iii. 具体参看:
public static void main(String[] args) {
//创建一个数字格式对象,会对小数自动四会五入
DecimalFormat format = new DecimalFormat("#,##0.00");
//设置舍入模式
format.setRoundingMode(RoundingMode.HALF_UP);
//3,703.7271
System.out.println(“数字格式化:” + format.format(3703.7271));
c) java.math.BigDecimal和java.math.BigInteger
大数值数据(例如精度要求较高时)的运算时可使用java.math.BigDecimal和java.math.BigInteger类。
下表是枚举类型:java.math.RoundingMode定义的的每种舍入模式:
public static void main(String[] args) {
// 大数值任意精度的数学运算
//1234.31 / 3.132 结果保留3位小数
BigDecimal decimal = new BigDecimal(“6789.7777”);
BigDecimal divisor = new BigDecimal(33333.123456);
//BigDecimal resultDecimal = decimal.divide(divisor, RoundingMode.HALF_UP);
BigDecimal resultDecimal = decimal.divide(divisor, BigDecimal.ROUND_HALF_UP);
//默认结果的小数位取决除数的小数位数
System.out.println(“默认保留小数位:” + resultDecimal);
//设置结果小位数(精度)
resultDecimal = resultDecimal.setScale(3, RoundingMode.HALF_UP);
double result = resultDecimal.doubleValue();
System.out.println(“保留3位小数:” + result);
}
d) 正则表达式:java.util.regex.Pattern
什么是正则表达式:
正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符")。
正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串。
参考API java.util.regex.Pattern类的说明。
i. 常用方法:
-
Pattern compile(String regex):将给定的正则表达式编译到模式中。
Pattern p = Pattern.compile(“a*b”); //指定匹配模式
Matcher m = p.matcher(“aaaaab”); //指定需要与模式匹配的字符串
boolean b = m.matches(); //指定的字符串是否与模式匹配
// \{表示对花括号转义
Pattern pattern = Pattern.compile("#\{\w+\}"); -
Matcher matcher(CharSequence input):创建匹配给定输入与此模式的匹配器。
-
boolean matches(String regex, CharSequence input):编译给定正则表达式并尝试将给定输入与其匹配。
ii. 正则表达式模式符号:
例如:
- ((19[7-9]\d)|(20[0-9]\d))可以匹配: 1970~2099年,也可以写成:
((19[7-9]\d{1})|(20[0-9]\d{1})) - [a-zA-Z]{1, 5}:表示字母可出现1-5个字母
在正则表式中()表示分组, \1在本正则表达式中表示向后引用组,$1表示引用组
示例:
// ()在正则表达式表示分组;(.)把每一个字符看成一个组
// \1 在正则表达式中表示向后引用
// (.)\1+表示后面的1个或多个字符与分组中的字符相同
// $1表示引用分组字符
// 字符的replaceAll() 和 split()方法的参数实际是正则表达式
String string = s.replaceAll("(.)\1+", “$1”);
String[] strings = s.split("\.");
iii. 常用的正则表达式
4. 匹配中文字符:[\u4e00-\u9fa5]
5. 匹配双字节字符(包括汉字在内):[^\x00-\xff]
6. 匹配空白行:\n\s*\r
7. 匹配Email地址:[\w!#
%&'*+/=?^_`{|}~-]+(?:\.[\w!#
%&’+/=?^_`{|}~-]+)@(?:\w?.)+\w?
8. 匹配网址URL:[a-zA-z]+://[^\s]*
9. 匹配国内电话号码:\d{3}-\d{8}|\d{4}-\d{7,8} 0898-88888888,
10. 匹配腾讯QQ号:[1-9] [0-9]{4,}
11. 匹配中国邮政编码:[1-9]\d{5}(?!\d)
12. 匹配18位身份证号:^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$
13. 匹配(年-月-日)格式日期:([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8])))
14. 匹配正整数:1\d*$
15. 匹配负整数:^-[1-9]\d*$
16. 匹配整数:^-?[1-9]\d*$
17. 匹配非负整数(正整数 + 0):2\d*|0$
18. 匹配非正整数(负整数 + 0):^-[1-9]\d*|0$
19. 匹配正浮点数:3\d*.\d*|0.\d*[1-9]\d*$
20. 匹配负浮点数:^-[1-9]\d*.\d*|-0.\d*[1-9]\d*$
21. 匹配重复字母:(.)\1+
示例:
//一个正则表达式,可匹配由字母abc,组成的两个字母
String regex = “[abc]{2}”;
//编译一个正则表达式字符串为模式对象:Pattern.compile(“正则表达式”)。用于检查输入的字符串是否满足此模式
Pattern p = Pattern.compile(“a*b”);
// 检查输入的字符串是否满足模式
Matcher m = p.matcher(“aaaaab”);
boolean b = m.matches();
System.out.println(b);
//使用静态方法 matches()直接测试输入字符串是否满足模式
if (Pattern.matches("[A-Z]{3}-\d{3}",“XAN-123”)) {
System.out.println(“XAN-123是合法的字符串格式”);
}
e) java.lang.System
- arraycopy(Object src, int srcPos, Object dest, int destPos, int length);
src: 源数组
srcPos: 开始复制元素的下标
dest: 复制到的目标数组
destPos:复制过来的元素从该下标开始放入到目标数组中
length:复制多少个元素 - getProperties() : 得到系统属性
- getEvn() : 得到系统环境属性
f) java.lang.Runtime
每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接。可以通过 getRuntime 方法获取当前运行时。
应用程序不能创建自己的 Runtime 类实例。
方法:
- getRuntime()
- exec(“命令|外部程序”);
如:exec(“C:\Windows\System32\notepad.exe”);
打开浏览器:exec(“C:\Program Files\Internet Explorer\iexplore.exe”);