JAVA基础 注解、正则和xml
注解
注解:
1) 为程序提供一些解释,标识,标志,检查…
2) 提供参数的配置,供程序使用
3) 可以用来代替配置文件的使用
定义: @注解名(参数)
位置: 根据需求定义(类,方法,属性,参数…)
注解的分类
内置注解
按照参数个数分类:
标记注解:没有参数
单值注解:只有一个参数
完整注解:多个参数
自定义注解
内置注解
内置注解:
@Override 标识检查方法是否为重写方法
@Deprecated 标记已经过时,使用的时候回提示
@SuppressWarnings 抑制警告
元注解: 注解注解的注解
@Target() 定义注解使用的位置
@Retention() 注解的声明周期
@Documented 表示使用该注解的元素应被javadoc或类似工具文档化
@Inherited 标识能被子类继承的注解
自定义注解(了解)
1.隐式的实现类 java.lang.Annotation接口
2.自定义的注解类不要显示继承其他父类|实现其他接口
3.如果使用注解传递参数时候,参数类型为数组类型,1个参数直接赋值,多个参数放在一对{}中
4.注解类中属性的设置修饰符只能为public|default
5.注解类中的属性在后面添加一对()
6.属性的数据类型: 基本数据类型 String 枚举 Annotation 或者以上类型的数组
7.如果定义一个注解类时候存在属性|字段,使用的时候必须传递实参
8.如果注解类中只存在一个属性,并且属性的名字为value,可以在使用的时候直接赋值->推荐
9.属性可以设置默认值 default
反射操作注解
public class AnnoDemo05 {
public static void main(String[] args) throws Exception {
//反射操作注解
Class<AnnoDemo04> cls = AnnoDemo04.class;
Method method = cls.getDeclaredMethod("test",int.class);
System.out.println(method);
//boolean isAnnotationPresent(类<? extends Annotation> annotationClass) 如果此元素上 存在指定类型的注释,则返回true,否则返回false。
System.out.println(method.isAnnotationPresent(Param.class));
if(method.isAnnotationPresent(Param.class)){
//获取指定注解类型的实例
/*
A getAnnotation(类<A> annotationClass) 返回该元素的,如果这样的注释 ,否则返回null指定类型的注释。
Annotation[] getAnnotations() 返回此元素上 存在的注释。
*/
Param p = method.getAnnotation(Param.class);
System.out.println(p.value());
System.out.println(p.str());
System.out.println(Arrays.toString(method.getAnnotations()));;
}
}
}
正则
正则 表达式: 具有特殊规则的特殊字符串 (了解!!!)
作用: 验证、查找、替换、分割
String 中使用正则
split("正则语法") 分隔
replaceAll("正则","新串") 替换
matches("正则") 完整匹配
Pattern 模式器表示正则的实例
Macher 匹配器用来与指定字符串 做匹配
find() 查找子串->从前到后
matches() 完整匹配
group()|group(0) 满足条件得完整子串
group(int) 当前符合的子串中指定分组的内容
groupCount 分组个数
XML
xml解析
1.构建SaxReader对象
2.读取加载xml文件
3.获取Document
4.遍历
public static void main(String[] args) throws Exception {
//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());
}
});
}
删除元素 : 父元素.remove(子元素)
修改元素的内容
修饰属性值 属性.setValue(“值”)