假设我有一个String类型的ArrayList,只存储数字。我在浪费资源吗? String大于int还是short?我无法在任何地方找到字符串的大小,并想出了这个引起我兴趣的愚蠢问题。
是否是存储5位数字的最有效数据类型?
答案 0 :(得分:3)
String对象的大小非常灵活。字符串中的每个字符都需要一个或两个字节,因此存储一个5位数字至少需要5个字节。此外,String
对象还有一些开销。另一方面,int是32位,只有4个字节。
更重要的一个问题是难以使用存储为字符串的数字执行算术运算。您必须实现添加,减去,乘法和除法的方法。使用int
,您已内置运算符。
答案 1 :(得分:2)
在Java 8中,String
只是char[]
的实习生,其中包含String
中使用的所有字符。在这种情况下,具有32位的int
大于具有16位的1 char
。
在Java 9中,byte[]
有一个char[]
而不是String
现在,您可以找出哪种类型更适合您使用。
答案 2 :(得分:2)
String和Integer是对象,int是原始类型。对象使用了更多的内存,而原始类型则没有。 例如,如果您有一个基本类型:
int i = 5;
例如在存储器地址10中,将保存值5并且我知道地址10
但对象为:
Integer i = new Integer(5):
值5将保存在例如地址2中,地址10(i变量)将引用地址2,这将占用更多内存。创建新对象时,会创建一个由一系列连续块组成的复合内存块,每个实例变量对应一个块,这会占用更多内存。
String是一个对象,一个特殊对象,但仍然是一个对象。它很特别,因为例如它不需要new