Java基础知识全景复习:从数组到面向对象与高级特性

233 阅读3分钟

Java基础知识全景复习:从数组到面向对象与高级特性

本文系统梳理了Java学习路线中的核心知识点,涵盖数组、排序算法、面向对象、修饰符、变量、static、代码块、final、重载与重写、this/super、三大特性、抽象类、接口、lambda表达式等内容,适合初学者和面试复习。


微信图片_20250527203923_16.jpg

一、数组基础与遍历

数组是Java中最基础的数据结构之一,存储在堆内存中,空间连续且类型一致。其优点是查询快(可通过下标定位),缺点是增删慢(长度固定,操作需移动元素)。

遍历方式:

  • 标准for循环:
    for(int n=0;n<nums.length;n++){
       System.out.println(nums[n]);
    }
    
  • 增强for循环(底层迭代器):
    for(int n:nums){
        System.out.println(n);
    }
    

二、数组排序与经典算法

  • Arrays.sort(数组): 默认升序排序。
  • 自定义Comparator实现对象排序。
  • 常见排序算法:
    • 冒泡排序
    • 选择排序
    • 插入排序
    • 快速排序(递归+基准数分区)

冒泡排序示例:

for(int i=0;i<nums.length-1;i++){
    for(int j=0;j<nums.length-1-i;j++){
        if(nums[j] > nums[j+1]){
            // 交换
            int temp = nums[j];
            nums[j] = nums[j+1];
            nums[j+1] = temp;
        }
    }
}

二分查找(前提:有序数组):

public int getIndex(int[] nums,int number){
    int begin=0, end=nums.length-1;
    while(begin<=end){
        int mid=(begin+end)/2;
        if(nums[mid]>number){
            end=mid-1;
        }else if(nums[mid]<number){
            begin=mid+1;
        }else{
            return mid;
        }
    }
    return -1;
}

复杂度对比表:

排序算法时间复杂度空间复杂度稳定性
冒泡O(n^2)O(1)稳定
选择O(n^2)O(1)不稳定
插入O(n^2)O(1)稳定
快速O(nlogn)O(nlogn)不稳定
二分查找O(logn)O(1)-

微信图片_20250527203931_17.jpg

三、面向对象核心

  • 类与对象: 类是模板,对象是实例。

  • 属性与方法: 静态属性(static)属于类,成员属性属于对象。

  • 访问修饰符:

    修饰符本类同包子类其他
    public
    protected
    默认
    private
  • 成员变量与局部变量区别: 作用范围、默认值、优先级不同。

  • static关键字: 静态变量/方法/代码块,属于类级别,所有对象共享。

  • 代码块: 静态代码块(类加载时执行)、构造代码块(对象创建时执行)、普通代码块(方法调用时执行)。

  • final关键字: 修饰常量、类、方法,分别表示不可变、不可继承、不可重写。


四、方法重载与重写、this/super

  • 重载(overload): 同类中方法名相同,参数不同。
  • 重写(override): 子类重写父类方法,要求方法签名一致,修饰符不能更严格。
  • this/super: this代表当前对象,super代表父类对象。

五、三大特性:封装、继承、多态

  • 封装: 属性私有化,提供getter/setter控制访问。
  • 继承: 子类继承父类非私有资源,Java只支持单继承。
  • 多态: 父类引用指向子类对象,方法重写实现多态性。

六、抽象类与接口

  • 抽象类: 不能实例化,可包含普通属性、方法、抽象方法、构造方法。
  • 接口: 只定义常量和抽象方法(JDK1.8支持默认方法和静态方法),支持多继承。
  • 区别: 抽象类可有普通属性/方法/构造方法,接口只能有常量和抽象方法。

微信图片_20250527203938_18.jpg

七、函数式接口与Lambda表达式

  • 函数式接口: 只包含一个抽象方法的接口,@FunctionalInterface注解。
  • Lambda表达式: 用于简化函数式接口实现,语法:(参数) -> {方法体}
@FunctionalInterface
interface A4{
    void method();
    default void test1(){}
}
A4 a4 = () -> {
    System.out.println("运行");
};

总结

本文梳理了Java基础到进阶的核心知识点,建议大家结合代码多练习,理解每个知识点背后的原理。无论是面试还是实际开发,掌握这些内容都能让你在Java之路上走得更远!


如果你觉得这篇文章对你有帮助,欢迎点赞、收藏、关注我,后续会持续分享更多Java干货!