一、架构设计基础
1. B/S与C/S架构对比
B/S(Browser/Server)架构通过浏览器访问服务端,具有跨平台特性,典型应用如Web应用;C/S(Client/Server)架构需安装客户端软件,交互性更强,常见于桌面应用。现代开发中,B/S架构因维护成本低、扩展性强成为主流选择,而C/S架构在需要高性能图形渲染的场景(如游戏开发)仍有应用。
2. Java开发平台选择
主流开发平台包括标准版Java SE(适用于桌面应用开发)、企业版Java EE(现Jakarta EE,用于分布式系统开发)和移动版Java ME(已逐渐被Android取代)。开发者应根据项目需求选择平台,例如构建微服务架构时,Spring Boot框架结合Java SE即可满足需求。
二、Java环境与核心组件
3. JDK与JRE的组成关系
JDK(Java Development Kit)包含JRE(Java Runtime Environment)和开发工具(如javac编译器),而JRE仅提供JVM、核心类库和运行支持文件。安装JDK后无需单独安装JRE,该设计体现了”开发-运行”分离的工程思想。
4. Java语言特性解析
- 跨平台性:通过JVM实现”一次编写,到处运行”
- 面向对象:支持封装、继承、多态三大特性
- 自动内存管理:垃圾回收机制减少内存泄漏风险
- 异常处理:强制要求捕获检查型异常
- 多线程支持:内置Thread类和同步机制
三、数据类型与转换机制
5. 基本数据类型分类
Java定义8种基本类型:
- 整数:byte(1B)、short(2B)、int(4B)、long(8B)
- 浮点:float(4B)、double(8B)
- 字符:char(2B,Unicode编码)
- 布尔:boolean(未明确规定大小)
6. 隐式转换与显式转换规则
自动类型转换(隐式)遵循”小容量向大容量”原则,例如:
int i = 100;double d = i; // 合法
强制类型转换(显式)需显式声明目标类型,可能造成精度丢失:
double d = 3.14;int i = (int)d; // i=3
7. 包装类与拆装箱机制
8种基本类型对应8个包装类(如Integer对应int),自动拆装箱通过编译器插入字节码实现:
Integer obj = 100; // 自动装箱int primitive = obj; // 自动拆箱
需注意数值范围检查(如Integer缓存-128~127)和空指针风险。
四、面向对象核心概念
8. 类与对象的工程实践
类是对象的模板,包含:
- 字段(成员变量)
- 方法(成员函数)
- 构造器(初始化对象)
- 代码块(静态/实例初始化)
- 内部类(嵌套类定义)
9. 访问修饰符作用域
| 修饰符 | 当前类 | 同一包 | 子类 | 其他包 |
|——————|————|————|———|————|
| public | √ | √ | √ | √ |
| protected | √ | √ | √ | × |
| default | √ | √ | × | × |
| private | √ | × | × | × |
10. 重载与重写区别
重载(Overload)发生在同一类中,要求方法名相同但参数列表不同(类型/顺序/数量),与返回值无关。重写(Override)发生在继承关系中,要求方法签名完全相同,访问权限不能更严格,抛出异常不能更宽泛。
五、常见问题深度解析
11. 浮点数精度问题解决方案
使用BigDecimal类进行精确计算:
BigDecimal a = new BigDecimal("0.1");BigDecimal b = new BigDecimal("0.2");System.out.println(a.add(b)); // 0.3
需注意字符串构造方式避免二进制误差。
12. 字符串处理最佳实践
- 字符串拼接:StringBuilder(单线程)优于StringBuffer(线程安全)
- 字符串比较:始终使用equals()而非==
- 不可变性:字符串常量存储在字符串池中,修改会产生新对象
13. 自动类型提升陷阱
表达式运算时存在类型提升规则:
short s1 = 1;s1 = s1 + 1; // 编译错误,int无法自动转shorts1 += 1; // 合法,编译器隐式处理类型转换
14. 数组初始化方式对比
// 静态初始化int[] arr1 = {1, 2, 3};// 动态初始化int[] arr2 = new int[3];arr2[0] = 1;// 匿名数组method(new int[]{1, 2, 3});
六、进阶知识要点
15. 程序结构组成要素
- 包声明(package)
- 导入语句(import)
- 类/接口定义
- 方法定义
- 变量声明
- 注释(单行/多行/文档)
16. 常用核心类库
- 集合框架:List/Set/Map接口及其实现类
- 并发工具:ExecutorService、CountDownLatch
- IO流:InputStream/OutputStream、Reader/Writer
- 网络编程:Socket、ServerSocket
- 日志系统:Log4j、SLF4J
17. 面试常见陷阱题
// 题目1:以下代码输出什么?String str1 = new StringBuilder("ja").append("va").toString();System.out.println(str1.intern() == str1); // JDK6 false, JDK7+ true// 题目2:以下代码能否编译通过?Integer a = 100, b = 100, c = 200, d = 200;System.out.println(a == b); // trueSystem.out.println(c == d); // false
本文通过系统化的知识梳理和典型案例分析,帮助开发者建立完整的Java知识体系。建议读者结合实际项目经验,深入理解每个知识点的设计原理和应用场景,在面试中展现技术深度而非简单记忆答案。掌握这些核心概念后,可进一步研究JVM原理、并发编程等高级主题,提升技术竞争力。