B2B|Java干货|带你真正了解Java(下)

B2B|Java干货|带你真正了解Java(下)

文章图片

B2B|Java干货|带你真正了解Java(下)

文章图片


本文内容接上周Java干货分享哦 , 建议大家一起阅览 , 莫要迷路哦~
进入主题之前还是先问一下大家:
你是处于这样的迷茫期嘛?
1.迫切想要入门IT行业挑战高薪
2.学会知识点但不知道如何使用
3.很多知识点都不理解 , 或理解有偏差
4.想要毫不费力的了解Java入门知识点
那么 , 就在今天机会来啦!小编为大家带来了关于java的最新知识 。 分享给想学习java的朋友!

魔据教育
干货分享
5、运行时类型信息(RTTI + 反射)
概念—RTTI
运行时类型信息使得你可以在程序运行时发现和使用类型信息 。
使用方式
Java是如何让我们在运行时识别对象和类的信息的 , 主要有两种方式(还有辅助的第三种方式 , 见下描述):一种是“传统的”RTTI , 它假定我们在编译时已经知道了所有的类型 , 比如Shape s = (Shape)s1;另一种是“反射”机制 , 它运行我们在运行时发现和使用类的信息 , 即使用Class.forName 。 其实还有第三种形式 , 就是关键字instanceof , 它返回一个bool值 , 它保持了类型的概念 , 它指的是“你是这个类吗?或者你是这个类的派生类吗?” 。 而如果用==或equals比较实际的Class对象 , 就没有考虑继承—它或者是这个确切的类型 , 或者不是 。
工作原理
要理解RTTI在Java中的工作原理 , 首先必须知道类型信息在运行时是如何表示的 , 这项工作是由称为Class对象的特殊对象完成的 , 它包含了与类有关的信息 。 Java送Class对象来执行其RTTI , 使用类加载器的子系统实现 。
无论何时 , 只要你想在运行时使用类型信息 , 就必须首先获得对恰当的Class对象的引用
反射与RTTI的区别
RTTI与反射之间真正的区别只在于:对RTTI来说 , 编译器在编译时打开和检查.class文件(也就是可以用普通方法调用对象的所有方法);而对于反射机制来说 , .class文件在编译时是不可获取的 , 所以是在运行时打开和检查.class文件 。

魔据教育
6、即时编译器技术 — JIT
Java虚拟机中有许多附加技术用以提升速度 , 尤其是与加载器操作相关的 , 被称为“即时”(Just-In-Time , JIT)编译器的技术 。 这种技术可以把程序全部或部分翻译成本地机器码(这本来是JVM的工作) , 程序运行速度因此得以提升 。 当需要装载某个类时 , 编译器会先找到其.class文件 , 然后将该类的字节码装入内存 。
此时 , 有两种方案可供选择:
一种就是让即时编译器编译所有代码 。
另一种做法称为惰性评估(lazy evaluation) , 意思是即时编译器只在必要的时候才编译代码 , 这样 , 从不会被执行的代码也许就压根不会被JIT所编译 。

魔据教育
7、final关键字
对final关键字的误解
当final修饰的是基本数据类型时 , 它指的是数值恒定不变(就是编译期常量 , 如果是static final修饰 , 则强调只有一份) , 而对对象引用而不是基本类型运用final时 , 其含义会有一点令人迷惑 , 因为用于对象引用时 , final使引用恒定不变 , 一旦引用被初始化指向一个对象 , 就无法再把它指向另一个对象 。
然而 , 对象其自身却是可以被修改的 , Java并未提供使任何对象恒定不变的途径(但可以自己编写类以取得使对象恒定不变的效果) , 这一限制同样适用数组 , 它也是对象 。 以上是我们在学习Java时需要掌握的基本点和一些关键的重难点 。 了解他们对我们学习Java很重要 。