java反射机制与String.equal方法等知识点强化

直接定义的类型的值 是存在常量区域中的
  例如:
  int a="1";

String str="hello"; 与 String str=new String("str");的区别:

  前者的值hello是存在常量区域中的 后者会先去静态区域查看是否有"hello"这个变量

  如果有则直接将hello拿到堆里来指向str 如果没有这个值 则会自己定义一个在常量区域中 然后再拿到

  堆里面来再指向str

 

String.equals():

  Object中的equals方法是比较两者的内存地址 但是 String类中重写了equals 方法 String 类中的

  equals 方法 会将两个字符串变成 两个char类型的数组 然后再去对比两个char类型数组的值是否相等

  所以说 Object中的equals方法等价于==,String的equals方法比较的是值是否相等


java反射机制主要功能:

  1.在运行时判断任意一个对象所属的类
  2.在运行时构造任意一个类的对象?
  3.在运行时判断任意一个类所具有的成员变量和方法(通过反射甚至可以调用private方法)
  4.在运行时调用任意一个对象的方法

 

获取Class类对象的方法 源码:

public class Demo1 {
    public static void main(String[] args) throws ClassNotFoundException {
        //获取Class类对象的四种方法
        //1、
        Object obj=new String();
        System.out.println("obj.getClass():"+obj.getClass());
        //2、
        System.out.println("String.class:"+ String.class);
        //3、
        System.out.println("Class.forName(\"java.lang.String\"):"+(Class.forName("java.lang.String")));
        //4、
        System.out.println("ClassLoader.getSystemClassLoader():"+ClassLoader.getSystemClassLoader().loadClass("java.util.ArrayList"));
    }
}

随意输入一个类 输出他的父类 源码:

  BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        try {
            System.out.print("输入任意类的名字:");
            String className = br.readLine();
            String xx= className.getClass().getName();
            Class cls = Class.forName(xx);
            // 循环打印父类信息,直到没有父类
            while (cls != null) {
                System.out.println(cls);
                cls = cls.getSuperclass();
            }
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException cnfe) {
            cnfe.printStackTrace();
        }

 

心得:三个小训练的痛苦远远没有失败的那一刻难受

上一篇:python, 私有属性详解


下一篇:接口自动化测试:apiAutoTest使用re 处理数据依赖