Java基础全面解析:面向对象、JVM等核心知识点

0 下载量 176 浏览量 更新于2024-08-03 收藏 19KB MD 举报
Java是一种广泛应用于企业级应用开发的高级编程语言,以其强大的面向对象特性、平台无关性以及垃圾回收机制而著称。本资源概述了Java的一些核心基础知识点,包括: 1. **面向对象和面向过程的区别**: 面向对象编程(OOP)强调将问题分解为具有特定属性和行为的对象,而面向过程编程则更侧重于函数和算法。OOP的优势在于复用、封装和继承,而过程编程则更注重逻辑流程。 2. **Oracle JDK与OpenJDK的区别**: Oracle JDK是Oracle公司提供的官方版本,包含JDK和JRE;OpenJDK是由开放社区维护,遵循Java开源协议的版本,虽然功能相似,但可能在性能和新特性上有所差异。 3. **Java与C的异同**: Java与C有相似之处,如都是面向对象语言,但Java是纯面向对象的,有自动内存管理,而C则需要手动管理内存。此外,Java是平台无关的,C则依赖特定平台。 4. **JVM、JDK和JRE的区别**: JVM(Java Virtual Machine)是运行Java代码的虚拟环境;JDK(Java Development Kit)包含了编译器和工具集,用于开发Java程序;JRE(Java Runtime Environment)则是运行时环境,不含编译器。 5. **Java语言特点**: - 静态类型、强类型 - 自动内存管理(垃圾回收) - 安全性 - 跨平台 6. **面向对象的特征**: - 封装、继承、多态 - 类和对象的概念 - 抽象类和接口 7. **重载和重写**: - 重载(Overloading)是指在同一类中,方法名相同但参数列表不同的行为 - 重写(Override)是子类方法覆盖父类同名方法的行为,发生在继承关系中 8. **接口与抽象类的区别**: - 接口仅定义方法,不提供实现;抽象类可以包含抽象方法和具体方法 - 一个类可以实现多个接口,但只能继承一个抽象类 9. **Object类的方法**: Object类是所有类的根,包含了众多基本操作方法,如toString(), equals(), clone()等。 10. **静态属性方法与成员属性方法区别**: - 静态方法属于类,不依赖实例;成员方法属于对象,通过实例调用 - 静态变量属于类,所有对象共享同一份 11. **子类属性与父类属性初始化顺序**: 子类属性在父类属性之后初始化,但在构造函数内部可以先初始化父类属性。 12. **自动拆箱和装箱**: Java自动进行基本类型到其包装类(如Integer到Integer对象)的转换,反之亦然。 13. **String的不可变性**: String类是不可变的,一旦创建,内容就不能改变,这是为了确保线程安全和高效性能。 14. **final关键字的作用**: final用于声明常量、方法或类,分别表示不能修改值、不能被重写和不能被实例化。 15. **StringBuilder和StringBuffer区别**: 前者线程不安全,后者线程安全,但性能略低。 16. **equals()知识点**: 用于比较对象是否相等,String类的equals()默认是值比较,而Object的equals()是引用比较。 17. **深拷贝与浅拷贝**: 深拷贝创建对象副本,所有数据完全独立;浅拷贝只复制引用,可能导致数据共享。 18. **IO流分类**: 根据处理数据类型,分为字节流(InputStream/OutputStream)和字符流(Reader/Writer)。 19. **选择字节流还是字符流**: 字节流适合处理二进制数据,字符流处理文本数据,根据具体需求选择。 20. **BigDecimal**: 大数类,用于精确浮点数运算,避免浮点误差。 21. **Java异常体系结构**: 异常处理通过try-catch-finally块进行,包括异常抛出、捕获和处理。 22. **Comparable和Comparator**: Comparable用于自定义类实现排序,Comparator用于外部比较器,提供自定义排序规则。 23. **泛型和类型擦除**: 泛型是参数化类型,编译时创建类型擦除版本,提高代码的灵活性和可移植性。 24. **泛型通配符**: ?和T是泛型中的占位符,用于表示未知类型或通用类型。 25. **数组List的慎用**: Arrays.asList()返回的是固定大小的列表,不适合动态添加或删除元素。 26. **Java中引用**: 了解引用类型(如对象、数组)的生命周期和引用传递方式,有助于理解内存管理和效率。 这些知识点涵盖了Java编程的基础架构,对于理解和使用Java语言至关重要。学习和掌握它们将有助于构建高效、可维护的Java应用程序。