02 2022 档案

摘要:1、HashMap是通过hash值进行快速查找的;HashMap中的元素是没有顺序的;TreeMap中所有的元素都是有某一固定顺序的,如果需要得到一个有序的结果,就应该使用TreeMap。 2、HashMap和TreeMap都是线程不安全的; 3、HashMap继承AbstractMap类;覆盖了h 阅读全文
posted @ 2022-02-28 19:19 路人假helloWorld 阅读(1354) 评论(0) 推荐(0) 编辑
摘要:(1)线程是否安全: HashMap 是非线程安全的,HashTable 是线程安全的,因为HashTable 内部的方法基本都经过synchronized修饰。(如果你要保证线程安全的话使用ConcurrentHashMap比较好)。 2)对 Null key 和 Null value 的支持: 阅读全文
posted @ 2022-02-28 19:17 路人假helloWorld 阅读(48) 评论(0) 推荐(0) 编辑
摘要:在jdk1.7是分段的数组+链表 ,jdk1.8的时候跟HashMap1.8的时候一样都是基于数组+链表/红黑树。 (1)在jdk1.7的时候是使用分段所segment,每一把锁只锁容器其中一部分数据,多线程访问容器里不同数据段的数据,就不会存在锁竞争,提高并发访问率。 (2)在jdk1.8的时候摒 阅读全文
posted @ 2022-02-28 19:12 路人假helloWorld 阅读(198) 评论(0) 推荐(0) 编辑
摘要:1.Vector:就比Arraylist多了个同步化机制(线程安全)。 2.Hashtable:就比Hashmap多了个线程安全。 3.ConcurrentHashMap:是一种高效但是线程安全的集合。 4.Stack:栈,也是线程安全的,继承于Vector。 阅读全文
posted @ 2022-02-28 19:09 路人假helloWorld 阅读(5487) 评论(0) 推荐(1) 编辑
摘要:### 1.HashMap的底层原理。 在jdk1.7之前HashMap是基于数组和链表实现的,而且采用头插法。 而jdk1.8 之后在解决哈希冲突时有了较大的变化,当链表长度大于阈值(默认为 8)(将链表转换成红黑树前会判断,如果当前数组的长度小于 64,那么会选择先进行数组扩容,而不是转换为红黑 阅读全文
posted @ 2022-02-28 19:05 路人假helloWorld 阅读(404) 评论(0) 推荐(0) 编辑
摘要:当以无参数构造方法创建 ArrayList 时,实际上初始化赋值的是一个空数组。当真正对数组进行添加元素操作时,才真正分配容量。即向数组中添加第一个元素时,数组容量扩为 10。当插入的元素个数大于当前容量时,就需要进行扩容了, ArrayList 每次扩容之后容量都会变为原来的 1.5 倍左右。 阅读全文
posted @ 2022-02-28 18:54 路人假helloWorld 阅读(53) 评论(0) 推荐(0) 编辑
摘要:ArrayList底层使用的是 Object数组;LinkedList底层使用的是 双向链表。 ArrayList:增删慢、查询快,线程不安全,对元素必须连续存储。 LinkedList:增删快,查询慢,线程不安全。 阅读全文
posted @ 2022-02-28 18:53 路人假helloWorld 阅读(86) 评论(0) 推荐(0) 编辑
摘要:深拷贝和浅拷贝都是对象拷贝 浅拷贝:按位拷贝对象,它会创建一个新对象,这个对象有着原始对象属性值的一份精确拷贝。如果属性是基本类型,拷贝的就是基本类型的值;如果属性是内存地址(引用类型),拷贝的就是内存地址 ,因此如果其中一个对象改变了这个地址,就会影响到另一个对象。(浅拷贝仅仅复制所考虑的对象,而 阅读全文
posted @ 2022-02-27 19:48 路人假helloWorld 阅读(537) 评论(0) 推荐(0) 编辑
摘要:1.Java中的异常分类: Error: 指Java程序运行错误,如果程序在启动时出现Error,则启动失败;如果程序运行过程中出现Error,则系统将退出程序。出现Error是系统的内部错误或资源耗尽,Error不能在程序运行过程中被动态处理,一旦出现Error,系统能做的只有记录错误的原因和安全 阅读全文
posted @ 2022-02-27 19:43 路人假helloWorld 阅读(180) 评论(0) 推荐(0) 编辑
摘要:== : 它的作用是判断两个对象的地址是不是相等。即,判断两个对象是不是同一个对象(基本数据类型比较的是值,引用数据类型比较的是内存地址)。 eaquels: 情况 1:类没有重写 equals() 方法。则通过 equals() 比较该类的两个对象时,等价于通过“==”比较这两个对象。 情况 2: 阅读全文
posted @ 2022-02-27 19:35 路人假helloWorld 阅读(73) 评论(0) 推荐(0) 编辑
摘要:String 类中使用 final 关键字修饰字符数组来保存字符串,private final char value[],所以String 对象是不可变的。 StringBuilder 与 StringBuffer 都继承自 AbstractStringBuilder 类,在AbstractStri 阅读全文
posted @ 2022-02-27 19:34 路人假helloWorld 阅读(33) 评论(0) 推荐(0) 编辑
摘要:final关键字可以修饰类、方法和属性。 当final修饰类的时候,表明这个类不能被继承。final 类中的所有成员方法都会被隐式地指定为 final 方法。 当final修饰方法的时候,表明这个方法不能被重写。 当final修饰属性的时候,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更 阅读全文
posted @ 2022-02-27 19:33 路人假helloWorld 阅读(194) 评论(0) 推荐(0) 编辑
摘要:java中有四种内部类,分别是静态内部类、局部内部类、匿名内部和成员内部类。 ### 1.静态内部类:常见的main函数就是静态内部类,调用静态内部类通过“外部类.静态内部类”。 ### 2.局部内部类:定义在方法中的类叫做局部内部类。 ### 3.匿名内部类:是指继承一个父类或者实现一个接口的方式 阅读全文
posted @ 2022-02-27 19:30 路人假helloWorld 阅读(47) 评论(0) 推荐(0) 编辑
摘要:接口(interface)和抽象类(abstract class)是支持抽象类定义的两种机制。 接口是公开的,不能有私有的方法或变量,接口中的所有方法都没有方法体,通过关键字interface实现。抽象类是可以有私有方法或私有变量的,通过把类或者类中的方法声明为abstract来表示一个类是抽象类, 阅读全文
posted @ 2022-02-27 19:26 路人假helloWorld 阅读(100) 评论(0) 推荐(0) 编辑
摘要:重载是发生在同一个类中,具有相同的方法名,但是有不同的参数,参数的个数不一样、参数的位置不一样,这就叫重载,常见的就比如构造方法,有有参构造和无参构造。(是否有返回值不能作为重载的依据) 重写是发生在当子类继承父类时,对父类中的一些方法根据自己的需求进行重写操作。 阅读全文
posted @ 2022-02-27 19:22 路人假helloWorld 阅读(40) 评论(0) 推荐(0) 编辑
摘要:封装,继承,多态。 1.封装: 封装是指对象属性的私有化,提供一些可以访问属性的方法,我们通过访问这些方法得到对象的属性。 2.继承(Java不支持多继承): 继承是指某新类继承已经存在的类,该新类拥有被继承的类的所有属性和方法,并且新类可以根据自己的情况拓展属性或方法。其中新类被称为子类,被继承的 阅读全文
posted @ 2022-02-26 15:27 路人假helloWorld 阅读(92) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示