第五周周报

周报

日期:2023/08/14 ~ 2023/08/20

一、本周回顾

本周我学习了两个主要的知识点,分别是快速排序算法和Java面向对象编程。以下是我对这两个知识点的详细总结:

1. 快速排序算法

  • 快速排序是一种高效的排序算法,它基于分治思想。将一个大问题分解为若干个小问题,通过递归地处理每个小问题,最终得到整体的解决方案。
  • 快速排序的基本思想是选择一个元素作为基准,将其放置在正确的位置,使得基准左边的元素都小于它,右边的元素都大于它。然后递归地对基准左右两边的子数组进行排序,直到整个数组有序。
  • 快速排序的时间复杂度为 O(nlogn),在平均情况下具有很好的性能表现,并且不需要额外的空间。

2. Java面向对象编程

  • 面向对象编程(OOP)是一种编程范式,它将数据和操作封装在对象中,并通过对象之间的交互来实现程序的功能。
  • 封装是OOP的一项重要特性,它将数据和方法封装在类中,通过定义公共接口来控制对内部数据的访问。封装提供了数据的隐藏和保护,提高了代码的安全性和可维护性。
  • 继承是OOP中实现代码重用和扩展的机制,它允许一个类继承另一个类的属性和方法。子类可以通过继承获得父类的功能,并且可以在其基础上进行扩展和修改。
  • 多态是OOP中的一项强大特性,它允许使用不同类型的对象来调用相同的方法,并根据实际对象的类型来执行不同的行为。多态提高了代码的灵活性和可扩展性。
  • 抽象类是一种不能实例化的类,它用于定义一组相关的具体类的共同特征和行为。抽象类可以包含抽象方法和具体方法,子类必须实现抽象方法才能被实例化。
  • 其他知识点:
    • this关键字:用于表示当前对象的引用。
    • 包:用于组织和管理Java程序的类,可以通过package关键字声明包名。
    • 访问修饰符:用于控制类、成员变量和方法的访问权限,包括public、protected、private和默认(不写访问修饰符)。
    • 包装类:用于表示基本数据类型的对象形式,如Boolean、Character等。
    • 方法重写:子类可以重写父类的方法,提供自己的实现。
    • instanceof操作符:用于判断一个对象是否是某个类的实例或子类的实例。
    • Object类:所有类的直接或间接父类,定义了一些通用方法如equals()和toString()。
    • final关键字:用于修饰类、方法和变量,可用于限制继承、重写或赋值操作。
    • 实例化过程:创建对象的过程,包括内存分配、调用构造方法和初始化成员变量。

二、感受

通过学习快速排序算法,我深刻体会到了分治思想的威力。将一个大问题分解成若干个小问题,并通过递归的方式解决每个小问题,最终得到整体的解决方案。这种思想在算法设计和解决实际问题时非常有用,能够提高效率和简化代码。

在学习Java面向对象编程的过程中,我对这门语言有了更深刻的理解。封装、继承和多态是Java编程的核心概念,通过合理运用它们,我们可以设计出灵活、可扩展且易于维护的代码。但这周练习的比较少,尤其是对于多态,感觉怎么在代码中应用还是不太熟练。

三、问题

在本周学习过程中,我发现以下问题:

  • 前面学习的 SQL 有些知识点忘记了,需要即使回顾。【已解决】。
  • 概念不熟悉,有些地方知道应该怎么写代码,但不清楚具体概念【已解决】

你可能感兴趣的:(Java,java)