A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 薛灵云 中级黑马   /  2015-8-27 10:07  /  511 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

1. 正则表达式

        Pattern类。正则表达式的编译表示形式。定义的是规则。
       
        (1):特殊字符
                x :字符 x ,任意字符代表其本身
                \\:反斜线
                \t:制表符
                \r:回车
                \n:换行

        (2):字符类
                [abc]:a,b或者c的任意一个。
                [^abc]:除了a,b,c以外的字符。
                [a-zA-Z]:包括了26个英文字母。
                [0-9]:包括了0-9这个10个数字字符。

        (3):预定义字符类
                .        任意字符
                \d        数字[0-9]
                \D        非数字[^0-9]
                \w        单词字符:[a-zA-Z_0-9]
                \W        非单词字符:[^\w]

        (4):边界匹配器
                ^        行的开头
                $        行的结尾
                \b        单词边界
                        单词边界匹配的是一个位置。这个位置是零宽度的。表示这个位置的一边是单词字符,另一边不是单词字符。字符串的开头或结尾。

        (5):Greedy 数量词
                x?        0次或1次
                x*        0次或多次
                x+        1次或多次
                x{n} 恰好n次
                x{n,} 至少n次
                x{m,n} 至少m次,但不能超过n次

2. 正则表达的功能:       
        1) 判断:
                public boolean matches(String regex)
                        -- 告知此字符串是否匹配给定的正则表达式。
                       
        2) 切割:
                public String[] split(String regex)
                        根据给定正则表达式的匹配拆分此字符串
                       
                记住:
                        (1)按任意个空格切割:
                                String regex = " +";       
                       
                        (2) 切割路径:
                                String path = "D:\\aaa\\bbb\\ccc.txt";
                                String regex = "\\\\";
               
                        (3) 叠词切割
                                String regex = "(.)\\1+";
                               
        3) 替换:
                String replaceAll(String regex, String newString)
                        -- 可以在newString参数中使用$对regex参数中的组进行引用。
                       
        4) 获取功能:
               
                a.通过Pattern类的静态方法compile(String regex),把正则表达式编译成模式对象。
                b.通过Pattern类的matcher(String str) 方法获得匹配器对象 Matcher
                c.调用匹配器对象 Matcher的方法:
                        判断 matchers() -- 整体匹配
                        获取:
                                boolean find() -- 判断是否有匹配的子串
                                String group() -- 获取匹配的子串
       
       
反射: reflect
       
        1) 获取字节码文件对象的三种方式:
                1) Object类中的getClass()
                2) 数据类型的静态属性。
                3) Class.forName(String className) -- 必须是全路径类名
               
        2) 获取构造方法并使用:Constructor
                获取方式:
                        获取公共的:
                                Constructor getConstructor(Class... parameterTypes)  // (String.class, int.class)
                                        -- 获取公共构造中指定参数类型的(公共构造中的一个)
                                Constructor[] getConstructors()
                                        -- 获取所有公共构造
                        获取所有的:
                                Constructor getDeclaredConstructor(Class... parameterTypes)
                                        -- 获取所有构造中指定参数类型的(所有构造中的一个)
                                Constructor[] getDeclaredConstructors()
                                        -- 获取所有构造
                               
                操作步骤:
                        获取字节码文件对象:
                                Class class = Class.forName(String className);
                       
                        通过构造器对象创建对象:
                                Object newInstance(Object... initargs)  // ("林青霞", 26)
               
                可变参数:
                        (数据类型... 变量名) -- 参数类型确定,但参数个数不确定的情况(当成数组来使用即可,不过长度可变了)
       
        3) 获取成员变量:Field
                获取方式:
                        获取公共的:
                                Field getField(String name)  
                                        -- 根据成员变量名称,获取指定的公共成员变量(公共成员变量中的一个)
                                Field[] getFields()  
                                        -- 获取所有的公共成员变量
                       
                        获取所有的:
                                Field getDeclaredField(String name)
                                        -- 根据成员变量名称,获取指定的成员变量(所有成员变量中的一个)
                                Field[] getDeclaredFields()
                                        -- 获取所有的成员变量
               
                操作步骤:
                        获取字节码文件对象:
                                Class class = Class.forName(String className);
                       
                        获取构造方法对象:
                                Constructor con = class.getConstructor(Class... parameterTypes)
                               
                        创建对象:
                                Object obj = con.newInstance();
               
                        获取成员变量对象:
                                Field f = class.getDeclaredField("name");
                       
                        取消java语言访问检查:
                                setAccessible(boolean flag)
                       
                        通过成员变量对象对成员变量赋值       
                                f.set(Object obj, Object value)
               
        4) 获取成员方法并使用:
                获取方式:
                        Method[] getMethods()
                                -- 获取所有公共方法,包括父类的。
                        Method getMethod(String name, Class<?>... parameterTypes)
                                -- 根据方法名和参数列表,获取指定的公共的方法。(公共的方法中的一个)
                               
                        Method[] getDeclaredMethods()
                                -- 获取所有本类的方法。
                        Method getDeclaredMethod(String name, Class<?>... parameterTypes)
                                -- 根据方法名和参数列表,获取指定的方法。(所有方法中的一个)
               
                操作步骤:
                        获取成员方法对象:
                        Method getDeclaredMethod("add", Object.class)
                       
                        // 设置访问权限
                        setAccessible(true);
                       
                        // 通过成员方法对象调用方法:
                        Object obj = m.invoke(obj, null);
       
       
       
       
       
       
       

2 个回复

倒序浏览
赞一个支持,也攒攒HMB!!!
回复 使用道具 举报
王鲁悦 来自手机 中级黑马 2015-9-17 23:30:25
藤椅
支持支持
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马