[英]JavaScript to java, difference in Array Creation
-在JavaScript中,您可以使用通用值类型var
-在Java中,您必须使用显式值类型double
, int
, String
等
-在JavaScript中,数组也可以具有异构值。
-在Java中,数组只能具有相同类型的值(例如,所有double或所有String)。
如果我用JavaScript编写会怎样?
var test[]=new Array();
test[1] = 16.98;
test[2] = 8.33;
test[3] = 5.31;
test[10] = 5.04;
NOT-ASSIGNED索引值设置为0
, null
还是blankspace
? 由于所有原始值都具有特定的null值(对于布尔值false,对于int 0等)。如果我想将上述数组形式的JavaScript移植到Java中而没有错误,则我应该确切知道未分配数组索引值的JavaScript策略。
以这种方式在Java中移植上述示例是否正确?
double test[]={0, 16.98, 8.33, 5.31, 0, 0, 0, 0, 0, 0, 5.04}
当您请求不存在的内容时,JavaScript具有一个特殊的值: undefined
。 Java没有等效的构造。 那是你的第一个问题。
第二个问题是,如果要获得完全相同的效果,则在移植代码时未在Java中使用正确的数据结构。 JavaScript数组是稀疏数组 。 在上面发布的示例中,数组没有为索引4到9分配内存。请求它们将导致程序接收undefined
。
如果您绝对希望拥有相同的稀疏行为,则需要使用Map
。
它们不会设置为任何东西。 如果阅读它们,您将返回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中需要相同的行为,则需要自己实现。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.