美文网首页
Java 中部分类概念的区分

Java 中部分类概念的区分

作者: 卢纪超 | 来源:发表于2020-12-02 00:40 被阅读0次

1.重载和重写的区分

重写(Override):重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和形参都不能改变。即外壳不变,核心重写!

重写的好处在于子类可以根据需要,定义特定于自己的行为。 也就是说子类能够根据需要实现父类的方法。

重载(reload):一个类中多态性的一种表现,同名方法的参数列表不同

2.equals与==的区分

==:比较的是变量在内存中存放的内存地址是否相同,即是否是同一个对象

equals:用来比较的是两个对象的内容是否相等

3.String、StringBuffer和StringBuilder的区分

String是只读字符串,并不是基本的数据类型,而是一个对象。从底层代码来看是一个final类型的字符数组。一经创建,则不能修改。每次对String的操作都会生成新的String对象

StringBuffer和StringBuilder的底层都是可变字符数组

StringBuffer对方法加了同步锁或者对调用的方法加了同步锁,所以线程是安全的。

StringBuilder并没有对方法进行加同步锁,所以是非线程安全的。

4.ArrayList和LinkedList的区别

ArrayList和LinkedList是List的两个重要实现类。

ArrayList可以看作是能够自动增长的数字。在set和get操作时比LinkedList性能更好

LinkList是一个双链表,在添加和删除元素时具有比ArrayList更好的性能

5.HashMap和HashTable的区别

5.1 两个的父类不同

HashMap和HashTable都实现map、Cloneable(可复制)、Serializable(可序列化)这三个接口

HashMap是继承自AbstMap类

HashTable是继承自Dictionary类

5.2 对外提供的端口不同

HashTable比HashMap多提供了elements()和contains()两个方法

elements()返回HashTable中的value的枚举

contains()判断HashTable是否包含传入的value。它的作用与containsValue()一致。事实上,containsValue()只是条用了一下contains()方法

5.3 对null值的支持不同

HashTable:Key和Value都不能为null

HashMap:key可以为空,但是只能由一个,因为必须保证Key的唯一性,可以有多个key的value为null

5.4 安全性不同

HashMap是线程不安全的,多线程并发可能会产生死锁等问题,需要单独处理多线程的安全问题

HashTable是线程安全的,每个方法上都有synchronized关键字,因此可直接用于多线程中。

HashMap的效率远高于HashTable。这样设计是合理性是因为大部分的使用场景都是单线程。当需要多线程操作时可以用ConcurrentHashMap。

ConcurrentHashMap虽然也是线程安全的,但是它的效率比HashTable要高好多倍,因为它使用了分段锁,并不对整个数据进行锁定。

5.5 初始化容量大小和每次扩容大小不同

HashMap的初始容量为16,Hashtable初始容量为11,两者的填充因子默认都是0.75。

HashMap扩容时是当前容量翻倍即:capacity*2,

Hashtable扩容时是容量翻倍+1即:capacity*2+1。

5.6 计算hash的方法不同

Hashtable计算hash是直接使用key的hashcode对table数组的长度直接进行取模

HashMap计算hash对key的hashcode进行了二次hash,以获得更好的散列值,然后对table数组长度取摸。

6.Collection包结构,与Collections的区别

Collection是集合类的上级接口,子接口有Set、List、LinkedList、ArrayList、Vector、Stack、Set

Collections是集合类的一个帮助类。它包含有各种有关集合操作的静态多态方法,用于实现对各种集合的搜索、排序、线程安全话等操作。此类不能实例化,就像一个工具类,服务于java的Collection框架。

相关文章

  • Java 中部分类概念的区分

    1.重载和重写的区分 重写(Override):重写是子类对父类的允许访问的方法的实现过程进行重新编写, 返回值和...

  • Java IO详解

    1 Java IO流的概念,分类 1.1 Java IO流的概念 java的IO是实现输入和输出的基础,可以方便的...

  • java IO入门笔记

    1.java IO流的概念,分类,类图 1.1. java IO 流的概念 java的io是实现输入和输出的基础,...

  • JavaScript学习笔记3—面向对象编程

    JavaScript—面向对象编程 JavaScript不区分类和实例的概念,而是通过原型(prototype)来...

  • 10.7java高级-注解

    java高级-注解 注解概念 注解分类 Andriod support annotations 总结 1.注解概念...

  • IOS开发_数组

    1、基础概念; 2、数组的定义; 3、数组的分类; 4、数组的特点; 1、基础概念; 1.1下标:用于区分...

  • 面向对象编程

    JavaScript不区分类和实例的概念,而是通过原型(prototype)来实现面向对象编程。 xiaoMing...

  • #陪老大玩数学#分类概念

    “分类是数理逻辑最基本概念之一” 分类是数理逻辑最基本的概念之一。把它分解为两个部分:区分(sorting)和合并...

  • Java异常二三事

    概念与分类 Java异常基本概念   Java的基本理念是"结构不佳的代码不能运行"。发现错误的理想时机是在编译阶...

  • 10.2-全栈Java笔记:最全面的IO技术(二)

    上节我们聊到「IO技术概念及入门」这节我们继续聊一下IO技术的分类。 Java中流的概念细分 按流的方向分类: 输...

网友评论

      本文标题:Java 中部分类概念的区分

      本文链接:https://www.haomeiwen.com/subject/zrgkvktx.html