map扩容数据如何存放 java数据存放位置

map扩容数据如何存放?
javamap是以键值对的需要保存数据的,map中的键clientkey和值value这个可以是各种对象,如String、double、Integer、也可以自己定义的类对象,不能是普通地基本上类型如int、double等

map扩容数据如何存放 java数据存放位置


String存放在堆中还是栈中?
问题中的String指的估计是java中的String吧 。这里给出的回答是对java 。
String是一个万不可变的对象,在java中没有办法另外常量在用 。java代码中所有的显式字符串,即然后描写的那种字符串,或者abc都是String对象 。String本身另外一个对象,必然会是在堆上的,而String中的内容char[]value则是放到堆中的一个特殊能量区域中——常量区 。
因此String本身是放在旁边堆上,而依据垃圾回收情况,又这个可以两类新生代和老年代 。如果没有这个String对象刚创建不久之后,则它像是位处堆的新生代,如果没有它修改之后修真者的存在了很长时间,则它很可能会进入堆中的老年代 。再注意,String中的字符串内容即字符数组value则位处堆中的常量区 。
如果不是你先有一个字符数组,.例如uint64[]arr{a,b,c},然后把内部函数StringsfifthString(arr)创建战队的String,则字符数组不再是东南边常量区,完全是跟其他对象一般,中部堆上 。注意,就算是这个arr数组是在栈上分配的,这样的话创建家族的String中的value仍然是在堆上 。如果不是你想把这个字符串放进常量区,这个可以全局函数 。
【map扩容数据如何存放 java数据存放位置】栈上应该不会有对象,只会有基本是变量和语句变量,所以才String只可能位处堆上,不可能东南边栈上 。

    推荐阅读