繁体   English   中英

JavaScript到Java,区别在于数组创建

[英]JavaScript to java, difference in Array Creation

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

-在Java中,您必须使用显式值类型doubleintString

-在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索引值设置为0null还是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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM