我刚开始学习Java,不太清楚String[]和ListString的区别,所以总结一下这个问题。
典型的区别是存储在String[]数组中的String值和存储在ListString中的String对象。
数组的容量是固定的,一次只能获取或设置一个元素的值,但是可以根据需要自动扩展、修改、删除或插入ArrayList和ListT的容量。
数组可以有多个维,但ListT总是只有一个维。
String[]为序列、定长、不变,ListString为总称、非定长、可变。
虽然作用相同,但灵活性不同。 String[]的长度固定,增加容量、在中间插入字符串等操作不容易,但ListString很容易实现。 如果可以确定字符串数组的长度并且可以为每个项目输入值,则建议使用String[]。 如果不知道数组的长度,或者在计算值时需要在中间继续插入字符串,请使用ListString。 生成完成后,使用ToArray方法将其转换为String[]。 也可以使用List的添加范围方法将String[]添加到ListString中。
除了Object之外,特定类型的数组的性能优于List的性能。 这是因为List的元素是对象类型; 因此,在保存或检索值类型时,通常会发生装箱和撤消装箱操作。 但是,如果不需要重新分配,也就是说,如果第一个容量非常接近列表的最大容量,则List T的性能非常接近同一类型的数组。
数组
数组连续存储在内存中,因此索引速度非常快,易于赋值和修改。
//声明数组
string str=新string [2];
//声明数组并为其赋值
string str=‘a’,‘b’;
//分配值
str=' a ';
STR=' b ';
//修改
str=' c '; 但是,数组必须在声明时指定数组的长度。 太长的话会浪费内存,太短的话会溢出数据。 声明时如果数组的长度不明确,就会很麻烦。 另外在数组中插入数据很麻烦。
数组列表
//声明
阵列列表=新阵列列表(;
//添加
Arraylist.add('a );
Arraylist.add('b );
Arraylist.add(123;
//插入指定的索引位置数据
ArrayList.insert (0,123 );
//修改指定的索引位置数据
arrayList[2]=234;
//删除一致数据
Arraylist.remove('a );
//删除指定的索引数据
Arraylist.removeat(1; arrayList中不仅插入了字符串a,还插入了数字123。 这样,可以将不同类型的数据插入到ArrayList中。 ArrayList将所有插入的数据作为对象类型处理。 使用ArrayList处理数据时,可能会报告类型不匹配。 也就是说,ArrayList是不安全的。 保存或检索值类型时,通常会发生装箱和撤消装箱操作,从而大大降低性能。
装箱和开箱的概念
装箱:将值类型数据装箱到代码类型实例中。 例如,将字符串型值a分配给对象对象obj
开箱:是从参考数据中提取值类型。 例如,将对象对象obj的值分配给string型变量str。
//装箱
string str='a ';
对象对象=(对象) str;
//合上箱子
对象对象=' a ';
字符串=(字符串)对象; 列表
声明List集合时,还必须声明List集合中数据的对象类型。
//声明
liststring list=新列表(;
//添加
列出添加(a );
列出添加(b );
//修改
list[0]='c ';
//删除指定的匹配
移除(a );
//删除对应的索引值
list.removeat(0; String[]和ListString的兼容性
将String[]移至列表:
列表=数组列表(arr );
从列表到字符串:
string [ ] arr=list.to array (新字符串[ list.size (] );