Java 我们是否也有包装类的对象池?
我想澄清几个问题。正如我所知,包装类也是最终的,是不可变的。那个么他们是否像String类那个样拥有对象池呢?还有包装类的可变版本吗?String类具有可变版本,如StringBuilder和StringBuffer。某些包装类(例如Long和Integer)具有某些值的缓存(对于Integer和Long,缓存用于-128和127之间的值),其行为类似于字符串池,但与字符串池不同,它是常量,因此,向其中添加新对象是不可能的 至于你的第二个问题,我假设这是一个输入错误,你的意思是问包装类是否有mutable版本,比如String有StringBuilder。答案是否定的。一些包装类(例如Long和Integer)对某些值有缓存(对于Integer和Long,缓存用于-128和127之间的值),其行为类似于字符串池,但与字符串池不同,它是常量,因此无法向其中添加新对象Java 我们是否也有包装类的对象池?,java,string,class,wrapper,Java,String,Class,Wrapper,我想澄清几个问题。正如我所知,包装类也是最终的,是不可变的。那个么他们是否像String类那个样拥有对象池呢?还有包装类的可变版本吗?String类具有可变版本,如StringBuilder和StringBuffer。某些包装类(例如Long和Integer)具有某些值的缓存(对于Integer和Long,缓存用于-128和127之间的值),其行为类似于字符串池,但与字符串池不同,它是常量,因此,向其中添加新对象是不可能的 至于你的第二个问题,我假设这是一个输入错误,你的意思是问包装类是否有mu
至于你的第二个问题,我假设这是一个输入错误,你的意思是问包装类是否有mutable版本,比如String有StringBuilder。答案是否定的。我想详细说明一下Eran在回答中提到的缓存部分。这也将回答op在评论中提出的问题
Example :-
Integer i1 = new Integer(10);
Integer i2 = new Integer(10);
Integer i3 = Integer.valueOf(10);
Integer i4 = Integer.valueOf(10);
Integer i5 = 10; // Autoboxing, internally autoboxing uses valueOf() method.
Integer i6 = 10;
System.out.println(i1 == i2);
System.out.println(i3 == i4);
System.out.println(i4 == i5);
System.out.println(i5 == i6);
O/P :-
false
true - result is true because valueOf() returns a cached copy.
true
true
我想详细说明一下Eran在回答中提到的缓存部分。这也将回答op在评论中提出的问题
Example :-
Integer i1 = new Integer(10);
Integer i2 = new Integer(10);
Integer i3 = Integer.valueOf(10);
Integer i4 = Integer.valueOf(10);
Integer i5 = 10; // Autoboxing, internally autoboxing uses valueOf() method.
Integer i6 = 10;
System.out.println(i1 == i2);
System.out.println(i3 == i4);
System.out.println(i4 == i5);
System.out.println(i5 == i6);
O/P :-
false
true - result is true because valueOf() returns a cached copy.
true
true
还不太清楚您所指的是哪种包装器类。你能添加一些参考吗?@ralfstx:我是说像Integer、Double和Character@sotorios:Sry那是个打字错误。。我想问一下,是否有其他包装类的可变版本,就像String一样。不太清楚您所指的包装类是什么类型的。你能添加一些参考吗?@ralfstx:我是说像Integer、Double和Character@sotorios:Sry那是个打字错误。。我想问一下是否有其他包装类的可变版本,就像String一样。
AtomicBoolean
,AtomicInteger
,AtomicLong
可以用作包装类的可变版本,虽然这不是它们的主要用途,也没有自动装箱功能。@Eran:那么字符包装类呢?字符包装类也有缓存或常量池吗?AtomicBoolean
,AtomicInteger
,AtomicLong
可以用作包装类的可变版本,尽管这不是它们的主要用途,也没有自动装箱功能。@Eran:字符包装类呢?我们是否也有用于字符包装类的缓存或常量池?