java定义static final_JAVA中的static和final区别&JAVA中集合类的区别

本文介绍了Java中final和static的关键区别:final用于定义不可变变量、方法和类,而static则标识共享的类级别变量和独立于对象的方法。此外,还详细阐述了List、Set和Map的区别,如List按插入顺序保存对象,Set不允许重复元素,Map基于键值对,各有不同的实现如ArrayList、HashSet、HashMap等,适合不同场景使用。
摘要由CSDN通过智能技术生成

同样的一个面试火热的问题。以前的笔记,挖出来整理下

1 java中final和static的区别

final定义的变量不能被更改,定义的方法不能被覆盖,定义的类不能被继承。

static定义的变量所有的对象都可以都共享这个值,static定义的方法不与任何类关联,不用创建类也可以调用方法。static不修饰类。

更详细的内容可以参考这里:

2 java中list,set和map的区别

List按对象进入的顺序保存对象,不做排序或编辑操作。Set对每个对象只接受一次,并使用自己内部的排序方法(通常,你只关心某个元素是否属于Set,而不关心它的顺序--否则应该使用List)。Map同样对每个元素保存一份,但这是基于"键"的,Map也有内置的排序,因而不关心元素添加的顺序。如果添加元素的顺序对你很重要,应该使用 LinkedHashSet或者LinkedHashMap.

List有两种,一种是arrayList,优点在于随机访问元素,另一种是linkedlist,对顺序访问支持较好。

set不保存重复元素,hashset优点在于快于查找,其中的值必须要定义hashcode。treeset是保存顺序的set,底层是树结构,linkedhashset内部是按照链表维护元素的顺序,并且按照插入的顺序维护。

map是保存键和值的结构。hashmap是基于散列实现的。LinkedHashMap类似于hashmap,内部通过链表维护熟悉。treemap是基于红黑树数据结构的

另外下面还有两种很少用的map

WeakHashMap : 弱键(weak key)Map,Map中使用的对象也被允许释放: 这是为解决特殊问题设计的。如果没有map之外的引用指向某个“键”,则此“键”可以被垃圾收集器回收。

IdentifyHashMap : 使用==代替equals()对“键”作比较的hash map。专为解决特殊问题而设计。 更多的内容可以参考:

总结一下,本文内容很简单,主要是以前面试时常被问到的问题。这里总结一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值