黑马程序员--Java高新技术--JDK1.5新特性(下)
来源:互联网 发布:淘宝退货率太高 编辑:程序博客网 时间:2024/05/29 15:25
1.正则表达式
概念:符合某些规则的字符串.
a.字符:
X字符 X 例: A就表示A
\\反斜线字符
\r回车
\n换行
b.字符类
[abc] 表示a,或者b,或者c
[^abc] 表示除了abc以外的其他23个任意字符
[a-zA-Z] 表示52个英文字符的任何一个字符
[0-9] 表示0-9之间的任意一个字符
c.预定义字符类
. 任何字符(与行结束符可能匹配也可能不匹配)
\d 数字:[0-9]
\D 非数字: [^0-9]
\s 空白字符:[ \t\n\x0B\f\r]
\S 非空白字符:[^\s]
\w 单词字符:[a-zA-Z_0-9]
\W 非单词字符:[^\w]
d.边界匹配器
^ 行的开头
$ 行的结尾
\b 单词边界
\B 非单词边界
\A 输入的开头
\G 上一个匹配的结尾
\Z 输入的结尾,仅用于最后的结束符(如果有的话)
\z 输入的结尾
e. 数量词
X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次
f.组和捕获
按照()括起来的内容就可以看成是分组了
例:((A)(B(C)) 4组
第一组 ((A)(B(C))1
第二组 (A) 2
第三组 (B(C) 3
第四组 (C) 4
右边引用左边组的内容,是通过编号,必须前面加一个转义符(\\).
(1)匹配功能(JDK 1.4以后出现)
public boolean matches(String regex)
(2)替换功能
public String replaceAll(regex,"")
(3)获取功能
使用的是正则对象Pattern和匹配器Matcher
boolean find(); 查找
String group(); 获取
概念:符合某些规则的字符串.
a.字符:
X字符 X 例: A就表示A
\\反斜线字符
\r回车
\n换行
b.字符类
[abc] 表示a,或者b,或者c
[^abc] 表示除了abc以外的其他23个任意字符
[a-zA-Z] 表示52个英文字符的任何一个字符
[0-9] 表示0-9之间的任意一个字符
c.预定义字符类
. 任何字符(与行结束符可能匹配也可能不匹配)
\d 数字:[0-9]
\D 非数字: [^0-9]
\s 空白字符:[ \t\n\x0B\f\r]
\S 非空白字符:[^\s]
\w 单词字符:[a-zA-Z_0-9]
\W 非单词字符:[^\w]
d.边界匹配器
^ 行的开头
$ 行的结尾
\b 单词边界
\B 非单词边界
\A 输入的开头
\G 上一个匹配的结尾
\Z 输入的结尾,仅用于最后的结束符(如果有的话)
\z 输入的结尾
e. 数量词
X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次
f.组和捕获
按照()括起来的内容就可以看成是分组了
例:((A)(B(C)) 4组
第一组 ((A)(B(C))1
第二组 (A) 2
第三组 (B(C) 3
第四组 (C) 4
右边引用左边组的内容,是通过编号,必须前面加一个转义符(\\).
(1)匹配功能(JDK 1.4以后出现)
public boolean matches(String regex)
(2)替换功能
public String replaceAll(regex,"")
(3)获取功能
使用的是正则对象Pattern和匹配器Matcher
代码示例:
<span style="white-space:pre"></span>//典型使用顺序:Pattern p = Pattern.compile("a*b"); //正则表达式Matcher m = P.matcher("aaaaab");//被判断的字符串boolean b = m.matches();//调用的是判断功能等价于String st = "aaaaab";String regex = "a*b";boolean flag = st.matches(regex);System.out.println(flag); // true
boolean find(); 查找
String group(); 获取
2.反射
概念:
JAVA你反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所以属性和方法;
对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态
调用对象的方法的功能称为Java语言的反射机制.
要想解剖一个类,必须先要获取到该类的字节码文件对象,而解剖使用的就是Class类中的
方法,所以先要获取到每一个字节码文件对应的Class类型的对象.
获取Class类的对象
方式1:使用类的getClass()方法
方式2:数据类型的.Class静态属性
方式3:使用的是Class类按的forName() 静态方法 类的全路径.
使用哪一种呢
自己写代码完后测试用第二种,开发用第三种.
因为第三种可以使用配置文件配置类的路径(扩展性好,更灵活).
步骤:
1.获取字节码文件对象
2.获取构造器对象,并创建实例
3.获取成员变量或者成员方法对象
4.通过成员变量或者成员方法对象的方法接收2步骤创建的实例
代码示例:
创建类的对象
String name="com.dsa.类名";//寻找该名称类文件,并加载进内存,并非产生class对象Class clazz=Class.forName(name);//产生该类的对象Object obj=clazz.newInstance();//得到某一个指定构造方法Constructor constructor= Class.forName("").getConstructor(String.class);//创建实例对象Object obj=constructor.newInstance("abc");//Constructor 构造方法:代表某个类中的一个构造方法。//得到某个类中所有的构造方法Constructor constructors[]= Class.forName("").getConstructors();; //得到某一个构造方法Constructor constructor= Class.forName("").getConstructor(StringBuffer.class);Constructor constructor= Class.getConstructor(StringBuffer.class);//创建实例对象String str=(String) constructor.newInstance(new StringBUffer("abc"));//调用获得的方法时要用到上面相同类型的实例对象//Class.newInstance()方法:String obj=(String)Class.forName("java.lang.String").newInstance();//先得到默认的构造方法,然后用该构造方法创建实例对象。//成员变量 Filed类 代表某个类中的一个成员变量//对一个类进行反射。ReflectPoint pt1=new ReflectPoint(3,5);Filed filedy=pt1.getclsss().getFiled("Y");//只代表哪个对象Filed filedy=pt1.getclsss().getDeclaredField("x")//获取对象不管是私有还是被保护的filedy.setAccessible(true);//设置可以访问,暴力反射filedy.get(pt1)//取出Y的值//将字段中的b全变成aField[] fields=obj.getClass().getFields();//获取全部对象 for(Field field :fields){if(field.getType()==String.class){//如果是字符串String oldValue = (String)field.get(obj);//获取字符串内容String newValue = oldValue.replace('b','a');//将字符串内容替换field.set(obj,newValue);//将新值赋给对象 //Method类 成员方法的反射。 //获取成员方法 //反射形式:Method methodCharAt = String.class.getMethod("charAt"--方法名,int.class--这是参数类型,如果是空参函数则是 null);Object obj=clazz.newInstance();methodCharAt.invoke(str1,1); //数组的反射Class clazz=obj.getClass();if(clazz.isArray()){int len=array.getLength(obj);for(int i=0;i<len;I==){sopArray.get(obj,i))} }
0 0
- 黑马程序员--Java高新技术--JDK1.5新特性(下)
- 黑马程序员--Java高新技术--JDK1.5新特性(下)
- 黑马程序员-高新技术-jdk1.5新特性
- 黑马程序员:Java高新技术1--JDK1.5 新特性
- 黑马程序员-Java高新技术-jdk1.5简单的新特性
- 黑马程序员--Java高新技术--JDK1.5新特性(上)
- 黑马程序员--Java高新技术--JDK1.5新特性(上)
- 黑马程序员---java基础加强---高新技术JDK1.5新特性
- 黑马程序员_高新技术之Java-JDK1.5新特性
- 黑马程序员--java高新技术--jdk1.5新特性
- 黑马程序员-JDK1.5新特性(高新技术)
- 黑马程序员-高新技术-JDK1.5新特性之注解
- 黑马程序员_高新技术-JDK1.5新特性之注解
- 黑马程序员_java高新技术-jdk1.5新特性
- 黑马程序员_高新技术:JDK1.5新特性
- 黑马程序员——高新技术--jdk1.5新特性
- 黑马程序员--JAVA高新技术之eclipse开发工具相关知识、JDK1.5新特性
- 黑马程序员 Java高新技术-jdk1.5新特性和反射基础
- codeforces 231 A Team(水题)
- Java线程join示例详解
- 怎样在设计中添加FIFO宏模块
- linux基础
- android之scroller类
- 黑马程序员--Java高新技术--JDK1.5新特性(下)
- ini_set的用法介绍
- crtmpserver组网部署方案
- HDU 2546 饭卡(01背包)
- 【LeetCode】Largest Rectangle in Histogram
- jQuery 实现交换元素位置(移动节点)
- 2014百度之星资格赛解题报告:Disk Schedule
- 网络基础
- a20 和imx6q