菜鸟的Java面试准备-javaSe
1.面向对象的特性
-
通常来说是封装、继承、多态、但是抽象也是其中的一种特性
-
封装:封装就是隐藏一切可隐藏的东西,只向外界提供最简单的编程接口。封装给对象提供了隐藏内部特性和行为的能力,对象提供一些能这被其它对象访问的方法来改变它内部的数据
-
继承:对父类的复用,通过继承子类可以无需重新编写原来的类的情况下对这些功能进行扩展
2.new对象的过程
- 首先去常量池中看是否这个类被创建,检查是否是第一次被使用
- 在Java堆中分配内存(指针碰撞、空闲列表)
- 对数据进行初始化赋值
- 对对象头进行初始化设置(哈希码、Gc的分代年龄)
- 调用init()方法,将属性值赋给对象
- 在线程栈中新建对象的引用
3.代码的执行顺序
- 通常来说:静态对象(变量)优先于非静态对象(变量)初始化,其中,静态对象
(变量)只初始化一次,而非静态对象(变量)可能会初始化多次 - 父类优先于子类进行初始化
- 按照成员变量的顺序进行初始化
4.String,StringBuffer,StringBuider区别
- String是属于字符常量、而后两者属于字符变量
- StringBuffer是属于线程安全的,因为在appen()方法上添加了 synchronized,而StringBuilder不安全
第一天写,宿舍熄灯了,明天继续。