Java基础面试题解析
1、Java基本数据类型分类
Java包含四类八种基本数据类型:
- 整型:byte、short、int、long
- 浮点型:float、double
- 布尔型:boolean
- 字符型:char
2、逻辑运算符&与&&的区别
&:无论左侧表达式真假都会执行右侧运算
&&:左侧为假时直接返回false,跳过右侧运算(短路特性)
3、switch语句支持的数据类型
支持类型包括:byte、short、int、char、String以及枚举类型
4、成员变量与局部变量差异
- 存储位置
- 成员变量:类中方法外定义
- 局部变量:方法内部或方法参数中定义
- 内存分配
- 成员变量:堆内存存储
- 局部变量:栈内存存储(栈帧)
- 生命周期
- 成员变量:随对象创建/销毁
- 局部变量:随方法调用/结束
- 默认值
- 成员变量:有默认初始化值
- 局部变量:必须显式赋值
5、static关键字的四种用法
- 静态变量:类共享数据,节省内存
- 静态方法:通过类名直接调用
- 静态代码块:用于初始化静态变量
- 静态内部类:嵌套类的特殊形式
6、方法重载与重写的区别
重载(Overload):同一类中方法名相同但参数列表不同(参数数量/类型/顺序)
重写(Override):继承关系中方法名、参数列表完全相同,返回值类型需兼容,异常范围不能扩大
7、final与finally的区别
final:修饰符,可应用于类/方法/变量
- 类:禁止继承
- 方法:禁止覆盖
- 变量:常量,不可修改
finally:异常处理代码块,总是执行(除非调用System.exit())
public class ResourceHandler {
public String processResource() {
try {
System.out.println("资源加载中");
return "处理结果";
} catch (Exception e) {
return "异常处理";
} finally {
System.out.println("资源释放");
}
}
}
8、this与super的使用场景
| 功能 | this | super |
|---|---|---|
| 访问成员变量 | 本类+父类 | 仅父类 |
| 调用方法 | 本类+父类 | 仅父类 |
| 构造函数 | 同类构造 | 父类构造 |
9、接口与抽象类对比
抽象类示例:
abstract class BaseComponent {
protected int state;
public BaseComponent(int init) { this.state = init; }
public abstract void update();
public static void logStatus() { System.out.println("状态日志"); }
}
接口示例:
interface DataSource {
String fetch();
default void validate() { System.out.println("数据校验"); }
static void connect() { System.out.println("建立连接"); }
// 所有方法默认public abstract
String store();
}
10、静态变量与实例变量差异
- 存储区域:静态变量-方法区;实例变量-堆内存
- 生命周期:静态变量-类加载周期;实例变量-对象存活周期
- 访问方式:静态变量-类名/对象均可访问;实例变量-必须通过对象访问