1

- JavaScript では、一般的な値の型を使用できますvar

-Java では、明示的な値の型、などを使用する必要がありdoubleます。intString

- 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。すべてのプリミティブ値には、boolean false、int 0 などの特定の null 値があるため、上記の配列形式の 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 には同等の構造がありません。それがあなたの最初の問題です。

2 番目の問題は、まったく同じ効果を得たい場合、コードを移植するときに 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

lengthこれと Javascript の違いは、Javascript が (プロパティ内の) 最大のインデックスを追跡することです。Java で同じ動作が必要な場合は、自分で実装する必要があります。

于 2013-05-22T23:33:42.457 に答える