Java
文章平均质量分 73
Java学习笔记及思考
Ashe616
int a = *new int;
展开
-
HashSet源码分析
HashSet是Set接口的一个实现类,它是一个容器类,里面的每个元素都是一个对象,且具有无序性和唯一性,无序性:容器中的元素是无序的,不能通过类似于数组索引的方式获得。唯一性:容器中不存在两个或多个元素具有完全一致的属性。而equals()和hashCode()方法是保证这两个性质的前提,接下来通过分析源码来进行探究如何保证HashSet的这两个性质。无序性首先,从HashSet.java源文件中可以知道,HashSet底层实际上是通过HashMap存储数据,默认情况下这个哈希表的容量为16,负原创 2021-01-24 23:12:21 · 455 阅读 · 0 评论 -
Java字符串的内存结构
问题提出若是问到String s = new String(“abc”);这条语句执行过程中Java虚拟机JVM创建了几个对象,想必很多人都知道,两个。但是如果是这样String s = “abc”;那么JVM又创建了几个对象呢?问题延申近期学习Java字符串过程中遇到这个问题,愈想愈发觉得有趣。首先Java中String的存储是通过一个char[]类型的成员变量value进行存储的,所以String s = “abc”;这个过程中JVM也应该创建了两个对象,不过一个是s指向的String对象,另一个原创 2021-01-21 11:43:16 · 889 阅读 · 4 评论 -
Java多线程中关于原子操作的思考
在多线程编程中,当存在多个线程同时访问修改一个数据时,就需要考虑到线程安全的问题,这时就需要使用synchronized关键字来修饰关键代码或方法,以实现线程同步。如果synchronized修饰的代码块或者方法中只包含一个原子操作,那么是否还需要使用synchronized关键字?明显这种情况下是可以不需要synchronized关键字的。因为原子操作是一组操作集合,CPU在执行该操作集合时,不能中止,只有在操作集合中的所有操作都执行完成之后才能结束。因此即使在多线程情况下也不会存产生线程安全问题,所原创 2021-01-17 19:13:19 · 201 阅读 · 0 评论