反射:
反射操作方法
反射操作属性
字段 getField(String name) 返回 字段对象,该对象反映此 类对象表示的类或接口的指定公共成员字段。
字段[] getFields() 返回一个包含 字段对象的数组, 字段对象反映此 类对象所表示的类或接口的所有可访问公共字段。
字段 getDeclaredField(String name) 返回 字段对象,该对象反映此 类对象表示的类或接口的指定声明字段。
字段[] getDeclaredFields() 返回 字段对象的数组, 字段对象反映由此 类对象表示的类或接口声明的所有字段。
Object get(Object obj) 返回指定对象上此 字段表示的字段的值。
void set(Object obj, Object value) 将指定对象参数上此 字段对象表示的字段设置为指定的新值。
注解:
注解: 1) 为程序提供一些解释,标识,标志,检查.. 2) 提供参数的配置,供程序使用 3) 可以用来代替配置文件的使用 定义: @注解名(参数) 位置: 根据需求定义(类,方法,属性,参数...) 注解的分类: 内置注解 按照参数个数分类: 标记注解:没有参数 单值注解:只有一个参数 完整注解:多个参数 自定义注解 内置注解: @Override 标识检查方法是否为重写方法 @Deprecated 标记已经过时,使用的时候回提示 @SuppressWarnings 抑制警告 元注解: 注解注解的注解 @Target() 定义注解使用的位置 @Retention() 注解的声明周期 @Documented 表示使用该注解的元素应被javadoc或类似工具文档化 @Inherited 标识能被子类继承的注解
自定义注解类: @interface
1.隐式的实现类 java.lang.Annotation接口
2.自定义的注解类不要显示继承其他父类|实现其他接口
3.如果使用注解传递参数时候,参数类型为数组类型,1个参数直接赋值,多个参数放在一对{}中
4.注解类中属性的设置修饰符只能为public|default
5.注解类中的属性在后面添加一对()
6.属性的数据类型: 基本数据类型 String 枚举 Annotation 或者以上类型的数组
7.如果定义一个注解类时候存在属性|字段,使用的时候必须传递实参
8.如果注解类中只存在一个属性,并且属性的名字为value,可以在使用的时候直接赋值->推荐
9.属性可以设置默认值 default
正则表达式:
正则 表达式: 具有特殊规则的特殊字符串 (了解!!!)
作用: 验证、查找、替换、分割
String 中使用正则
split("正则语法") 分隔
replaceAll("正则","新串") 替换
matches("正则") 完整匹配
Pattern 模式器表示正则的实例
Macher 匹配器用来与指定字符串 做匹配
find() 查找子串->从前到后
matches() 完整匹配
group()|group(0) 满足条件得完整子串
group(int) 当前符合的子串中指定分组的内容
groupCount 分组个数
public class Demo {
public static void main(String[] args) {
String str = "hdkj1ldjfl2jjf3jldsjfl4ljdf";
//分隔
String[] arr = str.split("\\d");
for (String s : arr) {
System.out.println(s);
}
//替换
System.out.println(str.replaceAll("\\d","_"));
System.out.println(str);
//匹配 完整匹配
String str2 = "haha123hehe";
System.out.println(str2.matches("haha\\d{3}"));;
//模式器Pattern
Pattern p = Pattern.compile("a*b");
//[匹配器Matcher
Matcher m = p.matcher("123aaaaab");
//完整匹配
boolean b = m.matches();
System.out.println(b);
String s = "haha123hehe456haha789";
Pattern pattern = Pattern.compile("(haha|hehe)(\\d{3})");
Matcher matcher = pattern.matcher(s);
System.out.println("-----------------");
//find() 从前往后一次查找满足正则语法的子串
/*System.out.println(matcher.find());
System.out.println(matcher.find());
System.out.println(matcher.find());
System.out.println(matcher.find());
System.out.println(matcher.find());
System.out.println(matcher.find());*/
while(matcher.find()){
System.out.println(matcher.groupCount()); //组的个数
System.out.println("满足条件的子串="+matcher.group()+"-->"+matcher.group(0));;
System.out.println(matcher.group(1)+"-->"+matcher.group(2));;
}
}
}
xml:
xml解析
1.构建SaxReader对象
2.读取加载xml文件
3.获取Document
4.遍历
//1.构建SaxReader对象
SAXReader reader = new SAXReader();
//2.读取加载xml文件
//3.获取Document
Document document = reader.read(new File("src/persons.xml"));
//4.遍历
Element root = document.getRootElement();
//获取所有子节点
List<Element> ls = root.elements();
ls.forEach((e)->{
System.out.println(e.getName());
//通过迭代器遍历
Iterator<Element> it = e.elementIterator();
while(it.hasNext()){
Element ele = it.next();
System.out.println(ele.getName()+"-->"+ele.getText());
}
});