美文网首页
面经笔记

面经笔记

作者: 倾情123 | 来源:发表于2017-07-12 19:38 被阅读0次

    String为什么是final?

    1.安全性:因为final修饰的类是不可被继承和更改的,被final修饰的累的方法也是不可被覆盖的,所以使用final来修饰String会比较安全。java不是操作系统语言,所以java需要借助操作系统来做事。JDK中提供的很多核心类,比如String等,这些类的内部方法实现都不是使用java来完成的,好多都是调用的操作系统的API,这就是著名的“本地方法调用”,这种类是很底层的,和操作系统的交流是很频繁的。如果这些类可以被继承,内部方法被重写,且内部方法被写为一些具有恶意攻击的代码,这是很危险的。

    2. 效率:如果指定一个类为final,则该类所有的方法都是final。Java编译器会寻找机会内联(inline)所有的final方法(这和具体的编译器实现有关)。此举能够使性能平均提高50%。

    反射中class.forName()与classLoader的区别?

           共同点:Java中的class.forName()和classLoader都可以对类进行加载。

          区别:class.forName()除了会将.class加载到JVM中去,还会对类进行解释,执行类中的static块。class.forName(name, initialize, loader)带参函数也可控制是否加载static块,并且只能使用new instance来创建新的对象。

                     classLoader只会将.class文件加载到JVM中,而不会执行static块,只有在newInstance时才会执行static块。

    总结:目前只看到这两点,希望大家可以补充(本人菜鸟,大家勿喷)

    相关文章

      网友评论

          本文标题:面经笔记

          本文链接:https://www.haomeiwen.com/subject/gcavpttx.html