A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

同学们,今天是我们基础阶段的最后一天,从后天开始,我们将进入WEB的新解决,做好总结,迎接新的挑战:
1.黑盒测试和白盒测试的区别?
2.什么是反射?我们为什么要会使用反射?
3.获取 Class对象有几种方式?他们的一般使用场景是什么?
4.如何获取Class对象中被私有的成员变量对象和成员方法对象?
5.注解在程序中都有哪些用途?
6.什么是元注解?
7.文件从编译到运行可以分为哪三个时期?
8.思考:想让一个类加载进内存,有几种方式?

5 个回复

倒序浏览
1.黑盒测试和白盒测试的区别?
(1) 黑盒测试:不用写代码,直接输入值,测试程序能否到达期望的值
(2) 白盒测试: 要写代码,关注程序的具体流程

2.什么是反射?我们为什么要会使用反射?
将各个类的组成部分封装成对象.
因为我们可以在运行时期来操作对象 改写代码,避免了创建对象反复改值浪费大量资源;

3.获取 Class对象有几种方式?他们的一般使用场景是什么?
获取Class对象有三种方式,第一种Class直接调用静态方法 forName(),多用于在配置文件,读取文件加载文件
第二种 通过类名直接调用Class返回 .Class字节码文件的对象  多用于参数的传递
第三种 通过类的对象名.getClass() 多用于对象的获取字节码方式

4.如何获取Class对象中被私有的成员变量对象和成员方法对象?
通过字节码文件对象调用.getDeclaredFields() 可以获取私有的成员变量
通过字节码文件对象调用.getDeclaredMethods() 可以获取私有的成员方法并返回一个数组;
5.注解在程序中都有哪些用途?
注解可以声明在包.类.字段.方法.局部变量.方法参数等的前面,用来对这些元素进行说明,注释
6.什么是元注解?
      用于描述注解的注解
7.文件从编译到运行可以分为哪三个时期?
    三个时期, 源码期,字节文件时期,运行时期
8.思考:想让一个类加载进内存,有几种方式?
   有三种方式
    1、由new关键字创建一个类的实例
    2、使用Class.forName()    通过反射加载类型,并创建对象实例
    3、使用某个ClassLoader实例的loadClass()方法
回复 使用道具 举报
1.黑盒测试和白盒测试的区别?
(1)黑盒测试不需要编写代码,直接给定输入条件,观察是否输出期望条件,不关注程序具体执行流程;
        白盒测试需要编写代码,关注程序具体执行流程;
2.什么是反射?我们为什么要会使用反射?
(1)反射:通过类加载器获取字节码文件对象,从而可以操作类中的所有属性和方法;
(2)使用反射原因:通过反射可以实现在java程序运行时期修改程序,提高程序的可拓展性,降低耦合性;
3.获取 Class对象有几种方式?他们的一般使用场景是什么?
(1)使用Class的静态方法forName(全类名)常见class对象:在只知道字节码文件路径的时候可以使用,使用较广泛;
(2)使用类名.class获取,在知道类名的情况下可以使用该方式;
(3)使用对象.getClass()方法来获取Class对象,已创建类对象可以使用,但是一般在已经获得类对象的情况不会使用反射,所以较少使用。
4.如何获取Class对象中被私有的成员变量对象和成员方法对象?
(1)使用带有Declared的获取方法可以获取;
(2)使用私有成员,需要先调用权限设置方法,开启私有成员的使用权限;
5.注解在程序中都有哪些用途?
(1)文档注释:生成API的时候可以将注解加进去
(2)编译检查:将一部分运行时期的错误在编译器检查出来;
(3)代码分析:配合反射使用,可以识别有注解的属性或方法,对其进行特定操作。
6.什么是元注解?
    用来修饰注解的注解成为元注解,常用的元注解有:
    (1)@Target:指定注释作用的位置,位置包括类,属性,方法;
    (2)@Rentention:指定注解保留的阶段,例如源文件阶段,字节码阶段和运行时阶段。
7.文件从编译到运行可以分为哪三个时期?
(1)java和class文件阶段;
(2)calss类对象阶段,被类加载器加载;
(3)虚拟机运行阶段。
8.思考:想让一个类加载进内存,有几种方式?
(1)使用Class的静态方法forName就是使用类加载器加载;
(2)使用ClassLoader(类加载器,抽象方法)的某个实例的loadClass()方法进行加载;
回复 使用道具 举报
1.        黑盒测试和白盒测试的区别?
答:1. 黑盒测试:不需要写代码,给输入值,看程序是否能够输出期望的值。
      2. 白盒测试:需要写代码的。关注程序具体的执行流程。
2.什么是反射?我们为什么要会使用反射?
答:(1)反射:将类的各个组成部分封装为其他对象,这就是反射机制。
(2)使用反射原因:在不改变该类的任何代码的前提下,帮我们创建任意类的对象,并且执行其中任意方法。                       
好处:1. 可以在程序运行过程中,操作这些对象。
2. 可以解耦,提高程序的可扩展性。
3.获取 Class对象有几种方式?他们的一般使用场景是什么?
答:1. Class.forName("全类名"):将字节码文件加载进内存,返回Class对象。
* 多用于配置文件,将类名定义在配置文件中。读取文件,加载类。
2. 类名.class:通过类名的属性class获取。
* 多用于参数的传递
3. 对象.getClass():getClass()方法在Object类中定义着。
* 多用于对象的获取字节码的方式。
4.如何获取Class对象中被私有的成员变量对象和成员方法对象?
答:访问私有的构造方法(getDeclaredConstructor)来创建对象实例,并访问私有成员方法(setAcessible(true));
5.注解在程序中都有哪些用途?
答:它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。
作用分类:
        ①编写文档:通过代码里标识的注解生成文档【生成文档doc文档】
        ②代码分析:通过代码里标识的注解对代码进行分析【使用反射】
                ③编译检查:通过代码里标识的注解让编译器能够实现基本的编译检查【Override】
注解给谁用?
                        1. 编译器
                        2. 给解析程序用
                        3. 注解不是程序的一部分,可以理解为注解就是一个标签
6.什么是元注解?
   元注解:用于描述注解的注解
7.文件从编译到运行可以分为哪三个时期?
(1)java和class文件阶段;
(2)calss类对象阶段,被类加载器加载;
(3)虚拟机运行阶段。
8.思考:想让一个类加载进内存,有几种方式?
答:类加载器分为动态加载器和静态加载器。动态加载是从外存储器中加载类,并对字节码进行解析生成对应的Class对象。而静态加载本质上是从内存中创建类的实例对象,此时类已经被加载到内存中。
①由new 关键字创建一个类的实例,在运行时刻用new方法载入。
例:Person person=new Person();
②使用Class.forName()
通过反射加载类型,并创建对象实例
例:Class claze=Class.forName(“Person”);
Object person=Clazz.newInstance();
③使用某个ClassLoader实例的loadClass()方法。应用程序可以通过继承ClassLoader实现自己的类装载器。
例:Class clazz=classLoader.loadClass(“Person);
Object person =clazz.newInstance();
回复 使用道具 举报
1.黑盒测试和白盒测试的区别?
(1)黑盒测试不需要写代码,看程序是否能达到要求。
(2)白盒测试需要写代码,程序员用来测试程序执行流程是否有问题。
2.什么是反射?我们为什么要会使用反射?
(1)将类的组成部分封装为多个对象。
(2)可以在运行时改变代码以及功能,提高解耦性,增加可拓展性
3.获取 Class对象有几种方式?他们的一般使用场景是什么?
(1)三种方式:
        class对象的forName方法获取:一般用于获取配置文件
        类名.class 获取:用于参数的传递
        对象名.getClass获取:获取字节码文件时使用
4.如何获取Class对象中被私有的成员变量对象和成员方法对象?
(1)成员变量对象.setAccessible(true);成员方法对象.setAccessible(true).
5.注解在程序中都有哪些用途?
(1)编写文档: 代码上标识的注解生成文档
(2)代码分析: 代码上标识的注解进行代码分析
(3)编译检查: 通过标识的注解对代码进行编译检查
6.什么是元注解?
(1)作用在注解上的注解称为元注解
@Target: 描述能够作用的位置,ElementType(TYPE(作用在类上),METHOD(作用在方法上,FIELD(作用在成员变量上)))
@Retention: 注解被保留时间 etention(RetentionPolicy.RUNTIME)
@Documented: 会被抽取到API文档上
@Inherited: 是否被继承
7.文件从编译到运行可以分为哪三个时期?
(1)source源代码阶段,class类文件阶段,runtime运行时阶段
8.思考:想让一个类加载进内存,有几种方式?
在一次运行过程中只会被加载一次
(1)创建对象,new 的方式进行加载;
(2)Class.forName(),通过反射进行加载
(3)类名称.class.getClassLoader(),通过类的字节码文件对象获取类的加载器进行加载
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马