什么是面向对象
面向对象注重事情的每个步骤和顺序,与面向过程相比,面向对象更注重事情有哪些参与者(对象),即各自需要做什么
面向对象分为封装,继承,和多态
封装:内部细节对外部调用透明,外部调用无需修改或者关系内部实现
有两个经典 的封装场景,JavaBean的属性私有,提供getset对外访问,以及orm框架,不需要关心链接如何建立,只需要引入mybatis,调用方法即可
继承:继承基类的方法,并作出自己的改变或者扩展
多态:基于对象所属类的不同,外部对同一个方法的调用,实际执行的逻辑不同,方法重写,父类引用指向子类对象。
jdk,jre,jvm三者区别和联系
jdk:Java开发工具
jre:Java运行时环境
jvm: Java虚拟机
jdk包含jre,jre又包含jvm
==和equals
==对比的是栈中的值,基本数据类型是变量值,引用类型是堆中内存对象的地址
equals:object中默认也是采用==比较,但是,equals通常会重写,在string中重写的equals()方法比较的是两个字符串的内容
简述final作用
修饰类表示类不可被继承
修饰方法表示方法不可被子类覆盖,但是可以重载
修饰变量表示变量一旦被复制就不能更改值
修饰成员变量可以在非静态初始化块中,声明该变量或者构造器中执行初始值.
修饰局部变量可以在定义时指定默认值
为什么局部内部类和匿名内部类只能访问局部final变量
为了保证内部类的成员变量和方法的局部变量的一致性,使局部变量与内部类内建立的拷贝保持一致
string,stringBuffer,stringBuilder区别和使用场景
string是final修饰的不可变
stringBuffer和stringBuilder都是在原对象上操作
stringBuffer是线程安全的,stringBuilder线程不安全
stringBuffer方法都是synchronized修饰的
经常需要改变字符串内容时使用后两个,多线程使用共享变量时使用stringBuffer