1

- 在 JavaScript 中,您可以使用泛型值类型var

- 在 Java 中,您必须使用显式值类型doubleint等等String

- 在 JavaScript 中,数组也可以有不同的值。

- 在 Java 中,数组只能具有相同类型的值(例如全双精度或全字符串)。

如果我用 JavaScript 编写会发生什么?

var test[]=new Array();
test[1] = 16.98;
test[2] = 8.33;
test[3] = 5.31;
test[10] = 5.04;

NOT-ASSIGNED 索引值设置为0nullblankspace? 由于所有原始值都有一个特定的 null 值,对于 boolean false,对于 int 0 等。如果我想将上面的数组从 JavaScript 移植到 Java 而没有错误,我应该确切地知道 JavaScript 策略用于未分配数组的索引值。

以这种方式将上述示例移植到 Java 中是否正确?

double test[]={0, 16.98, 8.33, 5.31, 0, 0, 0, 0, 0, 0, 5.04}
4

2 回答 2

2

当您请求不存在的内容时,JavaScript 有一个特殊的值:undefined. Java 没有等效的构造。那是你的第一个问题。

您的第二个问题是,如果您想获得完全相同的效果,那么在移植代码时您没有在 Java 中使用正确的数据结构。JavaScript 数组是稀疏数组。在上面发布的示例中,数组没有为索引 4 到 9 分配内存。请求它们将导致您的程序接收undefined.

如果您绝对希望具有相同的稀疏行为,则需要使用Map.

于 2013-05-22T23:40:41.543 回答
2

他们不会被设置为任何东西。如果你读了它们,你会回来undefined的。

要移植到 Java,请使用HashMap<Integer, Double

Map<Integer, Double> sparseArray = new HashMap<Integer, Double>();
sparseArray.put(1, 16.98);
sparseArray.put(2, 8.33);
sparseArray.put(3, 5.31);
sparseArray.put(10, 5.04);

System.out.println(sparseArray.get(10)); // 5.04
System.out.println(sparseArray.get(6)); // null

这与 Javascript 之间的区别在于 Javascript 将跟踪最大的索引(在length属性中)。如果您在 Java 中需要相同的行为,则需要自己实现它。

于 2013-05-22T23:33:42.457 回答