反射定义
在程序运行时期,是通过class文件对象,去使用构造方法,成员变量,成员方法。
获取class文件对象的三种方式
1:Object类的getClass()方法
2:数据类型的静态的class属性
3:Class类forName()静态方法
反射的应用(练习代码太多,这里只写的方法)
1:通过反射获取构造方法并使用
//获取字节码文件对象
Classc = Class.forName("cn.itcast.Person");
//获取构造器对象
Constructorcon = c.getDeclearedConstrator(String.class,int.class);
//通过构造器对象获取Person对象
Objectobj = con.newInstance("刘意老师",29);
2:通过反射获取成员变量并使用
//获取字节码文件对象
Classc = Class.forName("cn.itcast.Person");
//获取构造器对象
Constructorcon = c.getDeclearedConstrator(String.class,int.class);
//通过构造器对象获取Person对象
Objectobj = con.newInstance("刘意老师",29);
//获取成员变量
Fieldfield = c.getDeclaredField("name");
field.setAccessiable(true);
field.set(obj,"刘大意");
3:通过反射获取成员方法并使用
//获取字节码文件对象
Classc = Class.forName("cn.itcast.Person");
//获取构造器对象
Constructorcon = c.getDeclearedConstrator(String.class,int.class);
//通过构造器对象获取Person对象
Objectobj = con.newInstance("刘意",29);
//获取所有公共方法对象,包括从父类继承的
//(获取本类所有方法的时候,不包括从父类继承的)
Method[]methods = c.getDeclaredMethods();
for(Methodm : methods){
m.setAccessiable(true);
m.invoke(obj,null);
}
下面是正则表达式(理解)
正则表达式:就是符合一定规则的字符串。
常用功能:
1:判断功能
String-- matches
2:切割功能
String-- split
3:替换功能
String-- replaceAll
4:获取功能
Pattern
Matcher
compile()
find()
group()
正则规则(试着掌握这些规则)
(1):特殊字符
\\:反斜线
\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次