黑马程序员技术交流社区

标题: 反射总结 [打印本页]

作者: 伊乐杰    时间: 2016-4-8 20:27
标题: 反射总结
1.什么时候加载类(类的加载时机)?
        当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化。
        (1)创建类的实例
        (2)访问类的静态变量,或者为静态变量赋值
        (3)调用类的静态方法
        (4)使用反射方式来强制创建某个类或接口对应的java.lang.Class对象
        (5)初始化某个类的子类
        (6)直接使用java.exe命令来运行某个主类
2.类加载器的分类?
        (1)Bootstrap ClassLoader 根类加载器
                * 也被称为引导类加载器,负责Java核心类的加载
                * 比如System,String等。在JDK中JRE的lib目录下rt.jar文件中
        (2)Extension ClassLoader 扩展类加载器
                * 负责JRE的扩展目录中jar包的加载。
                * 在JDK中JRE的lib目录下ext目录
        (3)Sysetm ClassLoader 系统类加载器
                * 负责在JVM启动时加载来自java命令的class文件,以及classpath环境变量所指定的jar包和类路径
3.获取字节码对象的三种方式?
        (1)Object类的getClass()方法,判断两个对象是否是同一个字节码文件
        (2)静态属性class,锁对象
        (3)Class类中静态方法forName(),读取配置文件
4.反射中所用到的方法?
        (1)构造方法
                |--获取:getConstructor()和getConstructors()
                |--执行:newInstance()
        (2)普通的成员方法
                |--获取:getMethod()和getMethods()
                |--执行:invoke()
        (3)成员变量
                |--非私有:getField()和getFields()
                |--私有:getDeclaredField
                        |--访问私有的成员变量先执行:setAccessible(true),然后执行set方法
5.泛型的擦除?
泛型只在编译期有效,在运行期会被擦除掉,生成.class文件之后泛型就没有了
6.暴力反射?
        可以获取字节码对象中的所有属性和方法,包括私有.对于私有的属性和方法要使用暴力反射,即使用getDeclaredXxx()方法获取,
        然后再设置可以访问,即调用setAccessible(true)
7.谈谈你对动态代理的理解?
8.JDK1.8的新特性?
        (1)接口中可以定义有方法体的方法,如果是非静态,必须用default修饰       
        (2)如果是静态的就不用了
9.网络编程的三要素?
        (1)IP地址
        (2)端口号
        (3)协议
10.UDP和TCP的区别?
        (1)UDP:面向无连接,数据不安全,速度快。不区分客户端与服务端。
        (2)TCP:面向连接(三次握手),数据安全,速度略低。分为客户端和服务端。
        (3)三次握手: 客户端先向服务端发起请求, 服务端响应请求, 传输数据
11.多线程中的总结?
        (1)sleep()方法?释放执行权,不释放锁?
        (2)wailt()方法?既释放锁,又释放执行权?

作者: 小海龙    时间: 2016-4-8 21:09
哇,总结的好,跟讲课的一样全面啊。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2