1.面向对象的三大特征
封装、继承、多态
2.JDK、JRE、JVM都是什么,有什么区别
JDK Java Development kit 软件开发工具包 JRE+Java的开发工具
JRE Java Runtime Environment Java运行时环境 JVM+Java核心类库
JVM Java Virtual Machine Java虚拟机
3.static关键字
static 关键字主要有以下四种使用场景
-
修饰成员变量和成员方法 被修饰的静态变量存放在 Java 内存区域的方法区
-
静态代码块 静态代码块定义在类中方法外, 静态代码块在非静态代码块之前执行(静态代码块—非静态代码块—构造方法)。 该类不管创建多少对象,静态代码块只执行一次.
-
修饰类(只能修饰内部类)
-
静态导包(用来导入类中的静态资源,1.5之后的新特性)
4.final关键字
final 关键字主要有以下三种使用场景
1.修饰变量 必须初始化 如果是基本数据类型的变量,则其数值一旦初始化就不能再更改,如果是引用数据类型则在初始化后就不能再指向另一个对象。
2.修饰类时,类不能被继承,类中的所有成员默认是final修饰的
3.修饰方法,把方法锁定不允许修改。
5.Java的基本数据类型
byte 、short、 int、 long、 float、 double、 boolean、 char
6.方法重写(
Overeiding)和方法重载(Overloading)的区别
方法重写是同名,同参,同返回值通常用在继承父类重写父类方法
方法重载时同名不同参,其中参数是不同的参数的类型或参数的个数
7.Java不支持多继承,每个类只能继承一个类,但是可以实现多个接口
8.接口和抽象类的区别
(1)接口中所有的方法都是抽象的,抽象类可以包含抽象方法和非抽象方法
(2)类可以实现很多个接口,但是只能继承一个抽象类
(3)类如果要实现一个接口就必须实现接口声明的所有方法,类可以不实现抽象类中声明的所有方法,但是,这种情况下该类必须也得声明成抽象的
(4)Java接口中声明的变量默认都是final的,抽象类可以包含非final的变量
(5)Java接口中的成员函数默认是public 的,抽象类可以是private,protected,public的
(6)JDK8后,接口中可以包含default方法,抽象类中不可以
9.值传递和引用传递
值传递意味着传递了对象的一个副本,即使改变对象副本也不会影响原对象
引用传递意味着传递的是对象的引用,外部对对象所做的变化会反映到所有的对象上
10.==和equals的区别
==:判断两个字符串在内存中首地址是否相同,即判断两者是否是同一个字符串对象
equles():如果没有重写equals()方法比较的是对象的地址.而如果重写equals()方法时两者比较的是内容.
11.String、StringBuffer 、StringBuilder的区别
String:不可变字符串,
如果要操作少量的数据用 String。
StringBuffer:可变字符串、效率低、线程安全,
多线程操作字符串缓冲区下操作大量数据 StringBuffer。
StringBuilder:可变字符序列、效率高、线程不安全,单线程操作字符串缓冲区下操作大量数据StringBuilder(推荐使用)
12.&和&& | 和 || 的区别
与 &会把整个逻辑算式运行完返回结果,而&&会先执行前面的表达式如果为假直接返回假不再运算后面的表达式 或 || 同理
自己整理的常见面试题后续还会继续更新虚拟机,多线程,集合方面面试题,有问题一起交流.