第八课

目标

回顾Java面向对象编程思想

回顾集合排序

了解JDK新特性

掌握String字符串处理中的超级武器--正则表达式

掌握常用的日期处理

1、回顾Java面向对象编程思想

面向对象编程,就是在编程的时候把程序看成现实中的

事物,通过类把这类事物公共的属性、功能描述出来。

创建完成单独的事物个体后,通过分析实体与实体之间

的关系,来描述多个事物配合在一起完成一个任务。

类;

对象;

消息传递;

class房子{

形状立方体;

外观外墙;

门窗;

承重;

住宅(){}

商业办公室(){}

商场(){}

仓库(){}

}

2、回顾集合排序

(1)集合中存储多个对象,能够对所存储的对象进行各种排序

(2)让对象自己知道如何排序

(3)让第三个人来进行排序

3、了解JDK新特性

(1)自动装箱、拆箱

原始数据类型可以自动转换为包装类型。

inti=10;i.===>包装类包装成对象

Integerit=newInteger(i);it.方法()

(2)泛型

模仿数组的特点,让集合中存放数据前,明确存放的

数据类型,编译器能够自动的识别,存入、取出

类型名称<类型>变量名

List<Student>list=newArrayList<Student>();

Map<String,Student>mp=newHashMap<String,Student>();

(3)新的for循环

与泛型配套使用,还有迭代器也是

List<Student>list=newArrayList<Student>();

//for(Objectobj:list){}

for(Studentstu:list){

stu.getName();

}

<c:forEachitems="list"var="stu"></c:forEach>

(4)变长参数

publicCountry(Stringname,intgoldNumber,intsilverNumber){}

publicCountry(Stringname,intgoldNumber,intsilverNumber...){}

(5)静态方法导入

importstatic包名.类名.属性名;

4、掌握String字符串处理中的超级武器--正则表达式

String代表字符串的类,能够对字符串进行搜索、截取

、大小写转换等操作。

Strings="hello";

s.split(正则表达式);

s.charAt(index);//找到指定索引所在位置的字符

s.indexOf("")//找到指定字符串的位置索引

s.subString(beginIndex,endIndex)//指定长度截取字符串

booleanmatches(Stringregex)

告知此字符串是否匹配给定的正则表达式。

输出一个字符串中所有的大写字母、小写字母、数字的个数

"helloJavaILikeIt37729aadfa2323sdf";

正则表达式规则--使用符号代表一定意义的字符串:

预定义字符类

.任何字符(与行结束符可能匹配也可能不匹配)

\d数字:[0-9]

\D非数字:[^0-9]

\s空白字符:[\t\n\x0B\f\r]

\S非空白字符:[^\s]

\w单词字符:[a-zA-Z_0-9]

\W非单词字符:[^\w]

符号规则

[]代表一个字符,但是里面可以指定该字符可能出现的值

[a,4,d,f]

查找名称拼音中以liu开头的人"[l,L][i][u]*"

[0-9]从0到9

{}代表一个范围,从该范围中找一个满足条件的字符

{1}代表只有一个

{1,}代表至少有一个

{1,3}代表有1-3个

*代表多个字符,重复0到多次

+代表多个字符,重复1到多次

?代表字符,重复0或1次

^如果在"[^a-z]"一个字符,肯定不是小写,相反范围

如果在"^h.*"代表以h开头的字符串,代表一个字符串的开头

$如果在"^h*l$"代表以h开头,以l结尾的字符串

&&

"[0-9]"从0到9中找一个数字

"\\d{11}"11个数字组成的字符

用Java操作正则表达式使用到的类

如:病人去医院检查身体(病人、医生、机器)

java.lang.String病人

java.util.regex.Pattern机器

java.util.regex.Matcher医生

5、掌握常用的日期处理

1。^\d+$  //匹配非负整数(正整数+0)

2。^[0-9]*[1-9][0-9]*$  //匹配正整数

3。^((-\d+)|(0+))$  //匹配非正整数(负整数+0)

4。^-[0-9]*[1-9][0-9]*$  //匹配负整数

5。^-?\d+$    //匹配整数

6。^\d+(\.\d+)?$  //匹配非负浮点数(正浮点数+0)

7。^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$  //匹配正浮点数

8。^((-\d+(\.\d+)?)|(0+(\.0+)?))$  //匹配非正浮点数(负浮点数+0)

9。^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$  //匹配负浮点数

10。^(-?\d+)(\.\d+)?$  //匹配浮点数

11。^[A-Za-z]+$  //匹配由26个英文字母组成的字符串

12。^[A-Z]+$  //匹配由26个英文字母的大写组成的字符串

13。^[a-z]+$  //匹配由26个英文字母的小写组成的字符串

14。^[A-Za-z0-9]+$  //匹配由数字和26个英文字母组成的字符串

15。^\w+$  //匹配由数字、26个英文字母或者下划线组成的字符串

16。^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$    //匹配email地址

17。^[a-zA-z]+://匹配(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$  //匹配url

18。匹配中文字符的正则表达式:[\u4e00-\u9fa5]

19。匹配双字节字符(包括汉字在内):[^\x00-\xff]

20。应用:计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)

String.prototype.len=function(){returnthis.replace([^\x00-\xff]/g,"aa").length;}

21。匹配空行的正则表达式:\n[\s|]*\r

22。匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*)\/>/

23。匹配首尾空格的正则表达式:(^\s*)|(\s*$)

*正则表达式用例

*1、^\S+[a-zA-Z]$不能为空不能有空格只能是英文字母

*2、\S{6,}不能为空六位以上

*3、^\d+$不能有空格不能非数字

*4、(.*)(\.jpg|\.bmp)$只能是jpg和bmp格式

*5、^\d{4}\-\d{1,2}-\d{1,2}$只能是2004-10-22格式

*6、^0$至少选一项

*7、^0{2,}$至少选两项

*8、^[\s|\S]{20,}$不能为空二十字以上

*9、^\+?[a-z0-9](([-+.]|[_]+)?[a-z0-9]+)*@([a-z0-9]+(\.|\-))+[a-z]{2,6}$邮件

*10、\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*([,;]\s*\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)*输入多个地址用逗号或空格分隔邮件

*11、^(\([0-9]+\))?[0-9]{7,8}$电话号码7位或8位或前面有区号例如(022)87341628

*12、^[a-zA-Z0-9_]+@[a-zA-Z0-9_]+(\.[a-zA-Z0-9_]+)+(\,[a-zA-Z0-9_]+@[a-zA-Z0-9_]+(\.[a-zA-Z0-9_]+)+)*$

*只能是字母、数字、下划线;必须有@和.同时格式要规范邮件

*13^\w+@\w+(\.\w+)+(\,\w+@\w+(\.\w+)+)*$上面表达式也可以写成这样子,更精练。

14^\w+((-\w+)|(\.\w+))*\@\w+((\.|-)\w+)*\.\w+$[/size]

-------------------------------

要更加准确的匹配手机号码只匹配11位数字是不够的,

比如说就没有以144开始的号码段,

故先要整清楚现在已经开放了多少个号码段,国家号码段

分配如下:

移动:134、135、136、137、138、139、150、151、152、

157(TD)、158、159、187、188

联通:130、131、132、155、156、185、186

电信:133、153、180、189、(1349卫通)

详见:http://blog.myspace.cn/e/405268924.htm那么现在就可以正则匹配测试了,

Java代码

importjava.io.IOException;

importjava.util.regex.Matcher;

importjava.util.regex.Pattern;

publicclassClassPathResource{

publicstaticbooleanisMobileNO(Stringmobiles){

Patternp=Pattern.compile("^((13[0-9])|(15[^4,\\D])|(18[0,5-9]))\\d{8}$");

Matcherm=p.matcher(mobiles);

System.out.println(m.matches()+"---");

returnm.matches();

}

publicstaticvoidmain(String[]args)throwsIOException{

System.out.println(ClassPathResource.isMobileNO("18616155153"));

}

}

5、

相关推荐