多语言展示
当前在线:622今日阅读:19今日分享:20

android学习札记第5章之正则、数字包装javaapi3

这节将要讲述android开发中又一重要的JAVA API知识,正则表达式、数字包装类Number及其子类和java.math包下针对超出长整型数字和精确浮点数的包装类,还有,数字格式化工具和java.lang.Math基本数据运算类的使用方法。
工具/原料

JDK、eclipse、android SDK、ADT

一、JAVA API之正则表达式java.util.regex
1

一种字符串格式匹配规则,一般用来验证用户输入的格式是否符合要求。[ ]:字符集,匹配任意一个字符。更多正则表达式匹配规则参照JDK手册,以下列举一些常用规则: [abc]: a,b,c [a-z]: 任意小写英文字母 [a-zA-Z0-9]:任意字母数字 [a-zA-Z_0-9]:任意字母数字加下划线 [^a-zA-Z]: 除了字母 \d: 数字[0-9] \D: 排除数字[^0-9] \w: 单词字符[a-zA-Z_0-9] \W: 排除单词字符[^a-zA-Z_0-9] \s: 空白字符(空格、回车、换行符) \S: 排除空白字符 .: 任意字符 [\u4e00-\u9fa5]:中文字符[abc] ?:0或1次 [abc]* *:0到多次 [abc]+ +:1到多次 [abc]{3}: 3次(如:aaa、bbb) [abc]{3,5}: 3到5次 [abc]{3,}: 3到多次 |:左侧或右侧

2

方法: matches(正则):判断当前字符串,能否与正则表达式匹配。 replaceAll(正则,子串):将找到的匹配子串,替换为新的子串。 split(正则):用匹配的子串,拆分字符串,返回字符串数组。下面以①用正则表达式邮箱验证②屏蔽不良言论③分割字符串为例。

3

java.util.regex.Pattern java.util.regex.Matcher① Pattern是对正则表达式的封装对象 Matcher是对正则表达式和要匹配的字符串的封装对象 ②创建对象 Pattern p=Pattern.compile(正则表达式); Matcher m=p.matcher(要匹配的字符串); ③方法 boolean find():寻找下一段匹配子串,找到返回true,找不到返回false。 boolean find(int from):从指定位置寻找下一段匹配子串,找到返回true,找不到返回false。 String group():获取刚刚找到的子串。 int start():获取刚刚找到的子串的起始位置。 int end():获取刚刚找到的子串的结束位置+1。

二、JAVA API之数字包装类java.lang.Number和Double
1

数字基本类型/包装类: byte/ Byte short/Short int/Integer long/Long float/Float double/Double char/Character boolean/Boolean①数字包装类的“抽象”父类:Number ②子类:Byte、Short、Integer、Long、Float、Double ③方法:从包装对象内取值的方法。 byteValue() shortValue() intValue() longValue() floatValue() doubleValue() ④创建对象方法一:Integer a=new Integer(10);//直接新建对象,将10封装成Integer类型。方法二: Integer a=Integer.valueOf(10);//在Integer类内部,缓存了-128~127的封装对象,如果指定的是范围内的值,直接获取缓存中存在的对象,提高了效率;如果指定的值是范围外的值,会新建对象。 ⑤Integer的方法(其他包装类和Integer类似) Integer.parseInt('255');//255将字符串解析成整数。 Integer.parseInt('11111111',2);//255将字符串按二进制解析成整数 Integer.toBinaryString(255);//11111111Integer.toOctalString(255);//377 将数字转换成不同进制的字符串 ⑥、自动装箱 Integer a=10;被程序编译成:Integer a=Integer.valueOf(10);->先创建对象,把引用赋给a再给a赋值10。 ⑦、自动拆箱 Integer a=10;int i=a;被编译成:int i=a.intValue; a=a+1;被编译成:a=Integer.valueOf(a.intVlue()+1);->先从包装类中取值,再赋给i。 注意:要判断a是否为空(null),防止造成空指针。

2

java.lang.Double是Number其中一个子类:①创建对象 Double d=new Double(3.14); Double d=Double.valueOf(3.14);->没有缓存,直接创建对象。 ②方法 对特殊值进行判断的方法 boolean Double.isInfinite(double d)->判断是否是特殊值infinity无穷大 boolean Double.isNaN(double d)->判断是否是特殊值NaN非数字

三、JAVA API之大数字包装类java.math.BigDecimal和BigInteger
1

①BigDecimal:大数字对象,做精确的浮点数运算。BigInteger:做超出长整型范围的整数运算②创建对象BigDecimal bd=BigDecimal.valueOf(3.14);BigInteger x=BigInteger.valueOf(0);(创建对象的方式)

2

BigDecimal的方法: add(BigDecimal bd):加法 subtract(BigDecimal bd):减法 multiply(BigDecimal bd):乘法 divide(BigDecimal bd):除法 divide(BigDecimal bd,保留小数位数,保留方式):除法(默认保留1位小数) 以上计算结果都返回一个BigDecimal对象 取值方法: byteValue() shortValue() intValue() longValue() floatValue() doubleValue() 转换成字符串显示: toString() 四舍五入方法: setScale(保留小数位数,保留方式): BigDecimal bd1=BigDecimal.valueOf(3.1415926); BigDecimal bd2=bd.setScale(2,BigDecimal.Round_HALF_UP);//保留小数两位四舍五入 double d=bd2.doubleValue();System.out.println(d);

3

java.math.BigIntegerBigInteger和BigDecimal类似,参考BigDecimal即可。

四、JAVA API之数字格式工具java.text.DecimalFormat
1

①数字格式工具:将数字和字符串相互转化(数字格式化) ②创建对象: DecimalFormat df=new DecimalFormat(格式字符串); '$###,###.000':#表示有数字显示数字,没有数字不显示;0表示没有数字显示0。

2

DecimalFormat的方法: format(数字):把数字格式化成字符串 Number parse(字符串):字符串解析成数字,返回Number对象。 applyPattern(格式字符串):修改格式字符串注:解析字符串方法parse()会产生异常,需要捕获。

五、JAVA API之基本数学运算类java.lang.Math
1

Math是抽象类,无法创建对象,但它有许多静态方法,可以调用这些静态方法进行基本的数据运算。

2

Math的方法:System.out.println(Math.E); System.out.println(Math.PI); System.out.println(Math.sqrt(4)); System.out.println(Math.pow(2, 3)); System.out.println(Math.round(5.6)); System.out.println(Math.min(3, 4)); System.out.println(Math.abs(-1)); System.out.println(Math.floor(9.9));

注意事项
2

在使用数字包装类时,要注意自动装箱和自动拆箱时的隐藏操作,尤其自动拆箱时要判断包装类型的数字是否为空,否则容易造成空指针异常。

推荐信息