1、什么是面向对象?
面向过程注重事情的每一个步骤及顺序,面向对象更注重事情有哪些参与者(对象)、以及各自需要做什么。
面向过程比较直接高效,而面向对象更易于复用、扩展和维护。
再谈谈面向对象的三大特性:封装,继承,多态
- 封装:在于明确标识出允许外部使用的所有成员函数和数据项
1、javabean的属性私有,提供getset对外访问,因为属性的赋值或者获取逻辑只能由javabean本身决定。
2、例如orm框架
操作数据库,我们不需要关心连接时如何建立的、sql是如何执行的,只需要引入mybatis,调用方法即可 - 继承:继承基类的方法,并作出自己的改变或扩展
- 多态:基于对象所属类的不同,外部对同一个方法的调用,实际执行逻辑不同。
父类类型 变量名=new 子类对象()
2、JDK、JRE、JVM三者区别和联系
jdk:java开发工具
jre:java运行时环境
jvm:java虚拟机
jdk包含jre和jvm
3、==和equals
==对比的是栈中的值,基本数据类型是变量值,引用类型是堆中内存对象的地址
equals:object中默认也是采用==比较,不过通常会重写
String.equals():比较两个字符串的内容
3、简述final作用
修饰类:类不可以被继承
修饰方法:表示方法不可被子类覆盖,但是可以重载
修饰变量:表示遍历一旦被复制就不可以更改它的值
4、为什么局部内部类和匿名内部类只能访问局部final变量?
5、String、StringBuffer、StringBuilder区别及使用场景
String是final修饰的,不可变,每次操作都会产生新的String对象
StringBuffer和StringBuilder都是在原对象上操作
StringBuilder线程不安全,StringBuffer是线程安全的(被synchronized修饰)
性能:StringBuilder>StringBuffer>String
如果需要经常改变字符串就用后两个,优先使用StringBuilder,如果多线程共享则使用StringBuffer