[Java总结] 一些概念问题(在更新...)

目录

抽象类和接口的区别

equals和==的区别

for和增强for的区别

list和set区别

数组和集合的区别

ArrayList和LinkedList的区别


抽象类和接口的区别

相同点:

1. 抽象类和接口都可以定义抽象方法, 强制子类/实现类实现

2. 抽象类和接口本身都不能被实例化(不能创建对象)

不同点:

1. 组成方面:

        抽象类(成员变量 / get / set / 构造方法 / 成员方法 / 抽象方法)

        接口(抽象方法 / 默认方法 / 静态方法 / 常量)

2. 思想方面:

        抽象类是对一类事物的抽象,将相同的属性和行为提取出来

        接口是对不同事物能力的抽象, 实现类可以按照自己的方式来实现这个能力

equals和==的区别

1. ==是运算符, 比较基本数据类型时比较的是值, 比较引用数据类型时比较的是地址

2. equals是Object类中的方法, 基本数据不能调用方法,引用数据类型调用时比较的是地址, 但String重写了equals的逻辑比较字符串中的内容

3. 并不是所有重写了equals方法就能完成比较指定内容, 比如BigDecimal中使用equals方法比较的是字面值, 而不是具体数值, 因此equals方法有时并不适用

BigDecimal中CompareTo方法比较的是具体数值,返回0相同, 返回非0则不同.                      int result = biOne.compareTo(biTwo); 

for和增强for的区别

1. 增强for循环是基于迭代器的, 可以应用所有单列集合+数组的遍历,省略了元素的获取

2. 而for循环只能针对有索引的数组和list实现类进行遍历

3. 增强for循环底层是迭代器, 但由于没有迭代器对象, 则不能进行数组长度的操作 (增删)

4. 普通for循环可以限制循环次数, 而增强for循环只能从头遍历(可用break)

list和set区别

1. List和Set都是Collection接口的实现接口

2. List是有序的, 有索引的概念, 内容可重复

3. Set没有索引概念, 内容不能重复(依赖hashcode和equals判断)

数组和集合的区别

1. 数组的长度是固定的, 集合的长度是可扩展的

2. 数组中既能存储基本数据类型,又能存储引用数据类型;  集合只能存储引用数据类型

3. 数组中没有什么方法可以使用   集合中的方法更丰富

ArrayList和LinkedList的区别

1. ArrayList 和 LinkedList都是List的实现类, 元素有序, 有索引, 可重复

2. ArrayList底层基于数组, LinkedList底层基于双层链表

3. ArrayList查询快, 内存连续, 增删慢        LinkedList增删快, 内存不连续, 查询慢

4. 线程不同步, 不安全, 效率高

方法重写和方法重载的区别

1. 方法重载是将功能相似的代码取用相同的方法名, 降低了程序员的调用成本

方法重载要求同一类中, 方法名相同, 参数列表不同 的多个方法构成重载关系 与返回值无关

2. 方法重写存在子父类中, 当子类不满足父类方法的需求, 需要加强逻辑或者使用完全不同的逻辑时, 使用方法重写

方法重写要求方法名相同, 参数列表相同, 返回值小于等于父类返回值, 方法权限大于等于父类方法权限, 子类方法不能抛出大于父类方法声明的异常

多态的向上转型和向下转型是什么

向上转型 : 本身就是多态的宏观体现, 父类引用(接口引用)指向子类对象(实现类对象)

向下转型 : 将父类引用/接口引用向下转型具体的子类对象 为了让子类(实现类)调用其特有方法, 可以使用 子类对象(实现类对象) instanceof 父类(接口) 先判断

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值