我的代码中有以下声明:
String[] array1 = new String[];
Run Code Online (Sandbox Code Playgroud)
如果array1有1.000.000个元素(所有80个字符的字符串)有多重?我的意思是RAM内存.
答案是它取决于很多因素:
null,默认情况下,动态创建的字符串不会被实现.如果你实习他们,你可以节省空间,如果数据集中有许多"相等"的字符串.但是如果字符串池具有存储开销(它是一个大的哈希表)的另一面,那么如果等于不等于字符串的比率太小,那么你浪费空间而不是保存它.
关于支持阵列的观点也很复杂.背景是split方法(例如)创建共享原始String'scharacter数组的String对象.如果您创建了大量相同原始字符串的子字符串,则可以节省空间.但另一方面是,如果您创建一个大字符串的小子字符串,则小子字符串可以使原始String的整个后备数组保持可访问状态.