【java中比较容易混淆的概念解析】

目录

一:

内存泄漏与内存溢出:

迭代器与增强 for 循环:

注解与反射的结合:

事件监听机制:

阻塞队列与非阻塞队列:

二:

分布式计算与单机计算:

RPC(远程过程调用)与本地方法调用:

类加载机制中的链接与初始化:

对象序列化与反序列化:

内部类与外部类:

三:

IO 流中的字节流与字符流:

进程与线程:

反射机制中的获取类信息与动态调用方法:

构造方法与普通方法:

泛型与通配符:

四:

同步与异步:

深拷贝与浅拷贝:

堆内存与栈内存:

多态的静态多态与动态多态:

静态变量、实例变量与局部变量:

五:

异常处理中的 try-catch 和 throws:

String、StringBuilder 与 StringBuffer:

数组与集合:

**== 与 equals()**:

final、finally 和 finalize:

六:

抽象类与接口:

重写(覆盖)与重载:

继承与实现:

继承是子类继承父类的属性和方法。


一:

内存泄漏与内存溢出

  • 内存泄漏是指程序中已不再使用的对象仍占用着内存,导致可用内存逐渐减少。
  • 内存溢出是指程序申请的内存超过了系统能提供的最大内存量。

迭代器与增强 for 循环

  • 迭代器可以遍历集合,提供了对元素进行操作的方法。
  • 增强 for 循环是一种简洁的遍历方式,但不能在遍历过程中修改集合结构。

注解与反射的结合

  • 通过注解可以为代码添加元数据,然后利用反射来获取和处理这些注解信息。

事件监听机制

  • 定义事件源、事件对象和事件监听器,当特定事件发生时触发相应的处理。

阻塞队列与非阻塞队列

  • 阻塞队列在队列为空或满时,相关操作会阻塞等待。
  • 非阻塞队列则会立即返回相应的结果。

二:

分布式计算与单机计算

  • 单机计算局限于单个计算机的资源和处理能力。
  • 分布式计算通过网络将多个节点组合起来,共同完成计算任务,提高处理能力和扩展性。

RPC(远程过程调用)与本地方法调用

  • RPC 用于在不同的进程或机器之间进行方法调用。
  • 本地方法调用则是在同一进程内的方法调用。

类加载机制中的链接与初始化

  • 链接包括验证、准备和解析等步骤,主要是对类进行检查和准备工作。
  • 初始化则是执行类中的静态初始化代码。

对象序列化与反序列化

  • 序列化是将对象转换为字节流以便存储或传输。
  • 反序列化则是从字节流中恢复出对象。

内部类与外部类

  • 内部类是定义在另一个类内部的类,可以分为成员内部类、局部内部类等不同类型。
  • 外部类可以访问内部类的成员,内部类也可以访问外部类的成员(根据具体情况)。

三:

IO 流中的字节流与字符流

  • 字节流用于处理字节数据。
  • 字符流用于处理字符数据,它基于字节流进行了一定的编码处理。

进程与线程

  • 进程是程序的一次执行过程,有独立的内存空间。
  • 线程是进程中的执行单元,多个线程共享进程的资源。

反射机制中的获取类信息与动态调用方法

  • 通过反射可以获取类的各种信息,如属性、方法等。
  • 还可以动态地调用类中的方法。

构造方法与普通方法

  • 构造方法用于创建对象时初始化对象的状态,没有返回类型。
    • 比如public MyClass() {...}
  • 普通方法用于执行特定的功能,可以有返回值。

泛型与通配符

  • 泛型可以在定义类、接口、方法时指定类型参数,增加代码的类型安全性。
    • List<String>
  • 通配符?可以用于表示不确定的具体类型,比如List<?>

四:

同步与异步

  • 在多线程环境中,同步意味着执行过程按顺序进行,一个任务完成后才进行下一个。
  • 异步则是任务可以同时进行,结果可能在之后处理。

深拷贝与浅拷贝

  • 浅拷贝只是简单地复制对象的引用,原始对象和拷贝对象指向相同的内存区域。
  • 深拷贝会创建全新的对象,包括对象内部的所有引用对象也会被复制。

堆内存与栈内存

  • 基本类型的值和对象的引用通常在栈内存中。
  • 对象本身在堆内存中分配空间。

多态的静态多态与动态多态

  • 静态多态主要通过方法重载来实现。
  • 动态多态是通过继承和方法重写,在运行时根据对象实际类型来确定调用的方法。

静态变量、实例变量与局部变量

  • 静态变量属于类,被所有实例共享。
  • 实例变量属于对象。
  • 局部变量在方法内定义。

五:

异常处理中的 try-catch 和 throws

  • try-catch用于捕获并处理异常。
  • throws用于声明方法可能抛出的异常,将异常处理的责任上移。

String、StringBuilder 与 StringBuffer

  • String是不可变的,每次操作会产生新的对象。
  • StringBuilderStringBuffer是可变的,适合频繁修改字符串的操作,它们的区别在于StringBuffer是线程安全的,而StringBuilder不是。

数组与集合

  • 数组大小固定,创建后不能改变长度。
    • int[] arr = {1, 2, 3}
  • 集合可以动态添加、删除元素,有多种实现类如ArrayListHashSet等。

**== 与 equals()**:

  • == 对于基本类型比较值是否相等,对于引用类型比较引用地址是否相等。
  • equals()方法在Object类中默认也是比较引用地址,但很多类(如String)重写了该方法来比较实际内容。

final、finally 和 finalize

  • final修饰变量表示其值不能再改变,修饰类不能被继承,修饰方法不能被重写。
  • finally一般用于异常处理,保证无论是否发生异常,其中的代码都会执行。
  • finalize是 Object 类的一个方法,在垃圾回收前可能会被调用。

六:

抽象类与接口

  • 抽象类可以包含抽象方法和非抽象方法,也可以有属性。
    • 像一个Shape抽象类,具体形状类去继承它。
  • 接口主要定义行为规范,通常只有方法声明,没有方法体。
    • Serializable接口。

重写(覆盖)与重载

  • 重写是子类重新定义父类中已有的方法,方法签名(名称、参数列表)必须相同,返回类型要兼容。
    • 如父类有void show(),子类也可以有同名的void show()
  • 重载是在同一个类中,方法名相同,但参数列表不同(参数个数、类型或顺序不同)。
    • 比如可以有void doSomething(int a)void doSomething(String b)

继承与实现

  • 继承是子类继承父类的属性和方法。

    • 例如,一个Animal类,Dog类可以继承它。
  • 实现是类实现接口中定义的方法。
    • 比如一个Flyable接口,Bird类可以实现它来具备飞行的能力。
  • 16
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值