"Java 面经手册·小博哥.pdf 是一本专注于Java技术面试的指南,涵盖了Java语言的关键知识点和面试常见问题。该手册详细介绍了Java的各种特性,包括其简单性、面向对象的设计、平台无关性、安全性、多线程支持等。此外,还深入讲解了基本数据类型及其封装类,强调了面向对象与面向过程编程的区别,并探讨了数据类型的内存管理细节。"
Java语言的特点:
1. 简单易学:Java设计时力求简洁,语法与C/C++相似但避免了一些复杂性和陷阱,使得学习曲线相对平缓。
2. 丰富的类库:Java拥有庞大的标准类库,提供了大量的API,方便开发者进行各种任务的开发。
3. 面向对象:Java是一种纯面向对象的编程语言,支持封装、继承和多态,提高了代码的可读性和可维护性。
4. 与平台无关性:Java通过JVM(Java虚拟机)实现跨平台运行,一次编写,到处运行。
5. 可靠安全:Java具有内置的安全机制,如垃圾回收和异常处理,降低了程序出现错误的可能性。
6. 支持多线程:Java内置了多线程机制,使得并发编程变得简单。
面向对象与面向过程的区别:
面向过程编程侧重于步骤的分解和函数的实现,适合于性能要求高的场景,如单片机和嵌入式开发。
面向对象编程则以对象为核心,关注对象之间的交互和行为,具备封装、继承和多态性,易于维护和扩展,但在性能上可能稍逊一筹。
基本数据类型及其封装类:
Java中共有八种基本数据类型,包括byte、short、int、long、float、double、boolean和char,它们的大小和默认值如下:
- byte:1字节,默认值(byte)0
- short:2字节,默认值(short)0
- int:4字节,默认值0
- long:8字节,默认值0L
- float:4字节,默认值0.0f
- double:8字节,默认值0.0d
- boolean:不占用字节,默认值false
- char:2字节,默认值'\u0000'(null)
封装类分别为:Byte、Short、Integer、Long、Float、Double、Boolean和Character。需要注意的是,基本数据类型是直接存储值,而封装类是对象,具有默认值的区别。例如,Integer默认值为null,int默认值为0。
关于数据类型的内存管理:
基本数据类型在声明时直接在栈中分配空间,而引用类型(如Integer)仅在栈中分配引用,实际对象存储在堆中。数组对象也是引用类型,当一个数组赋值给另一个数组时,实际上是复制了引用,因此修改一个数组会影响到另一个。
对于boolean类型,Java虚拟机并未为其提供专门的字节码指令,而是使用int来表示boolean值,boolean数组则编码为byte数组,每个元素占8位。这意味着boolean类型在内存中并不独立,而是作为int的一部分进行处理。