前言:为什么对比js和java中数组的区别? 遇前端瓶颈以Java为突破口, 为啥选择Java? -> 资源丰富
JS里的数组
创建数组
let str = ["java", "js"];
let str = new Array(2);
let str = new Array("java", "js");
结论:JS中数组的"长度"和"类型"都是动态的, 即:长度可变、类型多样( Boolean, Null, Undefined, Number, String, Symbol, Object )。数组本质上是一个对象键值映射, 所以数组也是对象, 因此JS数组元素在内藏中并不一定是相邻的。
Java里的数组
创建数组
dataType[] arrayRefVar = {"java", "js"};
dataType[] arrayRefVar = new dataType[arraySize];
dataType arrayRefVar[] = new dataType[]{"java", "js"};
结论:Java中定义数组必须指定长度, 而且长度确定下来后无法改变, 如果数组越界会爆数组越界错误(JS中数组长度可变,不会出现越界问题),JS数组本质上市一个对象键值映射(因此JS数组中的内存并不一定相邻),但Java中的数组会在内存中划出一串连续固定的空间以存储。
- Java中集合更强大,大部分情况不是直接用数组解决问题。
- 就像在JS中的字符串操作(substr\substring\slice), 本能的只是用最后一个slice(其结合substr\substring)集两个方法有点于一身。
- 强弱类型语言从数组一看便知,严格的、强限制的代表着在大规模开发中的一致性