java学习笔记6.04正则表达式和反射机制

时间:2021-09-08 11:48:11

[TOC]
今天学习简单的用户界面遇到了invalid param in a LinerLayout :layout_weight;问题
java学习笔记6.04正则表达式和反射机制
解决方法:应该是LinearLayout
另外一种布局RelativeLayout没有layout_weight属性

正则表达式

  • 匹配”\”时候需要四个“\”
    “\”.matches(“\\”);

Pattern p = Pattern.compile(“[a-z]{3}”);
//字符串是否匹配p的模式
Matcher m = p.matcher(“das”);
//打印出结果
p(m.matches());
//等同于p(“das”.matches(“[a-z]{3}”));
正则表达式引擎不回退,matches()会从开始匹配影响到m.find()方法。需要使用m.reset()回退消除影响。另外m.lookingAt()每次都会从最开始查找。

start()和end()方法输出找到字符串的开始和结束位置。

反射机制

一个class文件通过ClassLoader加载到内存中的CodeSegment区域中,运行环境找到main方法开始执行,运行过程中会有其他的class文件不但的load到内存中

加载机制

  • 动态加载,并非全部加载,用到才加载
  • 静态语句块:只能调用一次用static修饰
    class C {
    static {
    }
    }
  • 动态语句块:可以调用多次
    class D {
    {
    }
    }

ClassLoader

ClassLoader主要对类的请求提供服务,当JVM需要某类时,它根据名称向ClassLoader要求这个类,然后由ClassLoader返回这个类的class对象。
1.1 几个相关概念ClassLoader负责载入系统的所有Resources(Class,文件,来自网络的字节流等),通过ClassLoader从而将资源载入JVM
每个class都有一个reference,指向自己的ClassLoader。Class.getClassLoader()

  • JDK内置的ClassLoader
    1.bootstrap classLoader:引导程序类,最先启动用本地化语言编写
    加载核心core类。没有名字
    2.extesion class loader:扩展类
    加载lib/ext目录下的jar包中的类
    3.application class loader
    加载自定义的类
    4.other class loader

得到加载类的名字
类名.class.getClassLoader().getClass().getName();
ClassLoader 的层次关系:下层classLoader中有指向上层classLoder的引用,两者间不是继承关系使用getParent()方法可以得到上一层的classLoader

反射