- 博客(5)
- 收藏
- 关注
原创 字符串原理(String,StringBulider,StringBuffer)
不可变字符串,是final修饰的java类对象,一旦修改就会创建新的对象,原来的对象引用会指向新创建的对象string字符串存放在常量池中,当要创建的字符串在常量池中已经存在,就会引用这个字符串对象,而不会再创建。
2024-07-23 16:27:32
260
原创 int和Integer的区别
1.int是基本数据类型,创建时只需要直接赋值即可,Integer是对象类型,创建时要通过new关键字创建。java是一门面向对象的编程语言,对象是基本的操作单元,ArrayList、HashMap等只能存储对象类型。4.Integer作为对象类型,里面封装了一些属性和方法,可以用来操作数据,使用更加灵活、更安全。2.int存储在栈空间,Integer存储在堆空间。3.int默认值是0,Integer默认值是null。
2024-07-12 09:35:58
148
1
原创 对java中HashMap扩容机制和转红黑树机制的理解
我们首先看到HashMap定义了一些属性的源码。在HasMap源码中定义了一个,然后我们看到HashMap的添加元素的put方法,即可追溯到底层是如何扩容的。
2024-03-15 22:13:20
2019
5
原创 对java中ArrayList无参构造器扩容机制的理解
再判断,如果newCapacity比minCapacity小的话,将minCapacity赋值给newCapacity,所以第一次扩容时,0 - 10 < 0, 所以将10赋值给了newCapacity,所以第一次扩容不是按1.5倍扩容,而是直接扩容为10.如果为空就取DEFAULT_CAPACITY和minCapacity之间的最大值,DEFAULT_CAPACITY是一开始定义的整形变量为10,minCapacity对于size + 1,就是要添加下一个数据所需的最小容量。所以第一次扩容容量为10.
2024-03-11 20:05:41
707
1
原创 对java中String对象不可变的理解
由源代码我们看到String类是final修饰的,并且该类中用于储存字符的value属性也是final修饰的,所以String类不能被继承也不能修改。所以我们可以理解为,原String对象没有被修改,而是在堆中开辟一个新的空间用来存储"abcd", 然后原String对象指向该地址。从结果可以看到,str的哈希值已经改变,即str已经不是指向"abc"所储存的地址,而是指向了一个新的地址。但是当我们创建一个String对象,再去修改它的值是可以的,所以该怎样理解不能被修改?
2024-03-06 15:10:40
353
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人