問題タブ [autoboxing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
5 に答える
20902 参照

java - Java で double を比較すると奇妙な結果が得られる

なぜ次のことが起こるのか、私は本当に頭を悩ませることができます:

ただし、これは期待どおりに機能します。

これが何らかの形でオートボクシングに関連していることは確かですが、演算子が使用されているときと呼び出されたときに、なぜ0ボックス化が異なるの==.equalsか本当にわかりません。

これは暗黙のうちにequals契約に違反していませんか?

編集

速い答えをありがとう。私はそれが異なって箱に入れられていると考えました.本当の問題は:なぜそれが異なって箱に入れられているのですか? これは、直感的で予想されるd == 0dよりも直感的であるということですが、「直感的に」よりもそうであると思われる場合も同様です。d.equals(0d)d == 0Integertrued.equals(0)

0 投票する
4 に答える
791 参照

java - この例の Integer.valueOf(...) 比較が異なる値を返すのはなぜですか?

java のプリミティブ型とオートボクシングに関する質問への回答から:

ビジクロップの場合:

クラスビジクロップ{

}

結果:

何故ですか?

0 投票する
3 に答える
6551 参照

java - Which is better: letting Java do autoboxing or using valueOf()

I am just wondering is there any difference in letting java autobox say an integer:

or having your code as

Is there any micro optimization on this? I know the second one is more explicit, but it is also more unnecessary typing, is there any difference besides this?.

0 投票する
2 に答える
9236 参照

java - 倍精度および整数変換

私はこれを理解しようとしています:

1/841を印刷すると倍の値が得られるのに、なぜchiSquareを印刷してゼロを印刷するのですか?ハッシュテーブルは<String, Integer>

0 投票する
15 に答える
7120 参照

java - Javaで整数がキャッシュされないのはなぜですか?

このトピックに関する同様の投稿があることは知っていますが、それらは私の質問に完全には対応していません。あなたがするとき:

true[-128, 127] の範囲の整数が何らかの形でキャッシュされているため、これは (明らかに)ほとんどの場合出力されます。しかし:

戻りfalseます。Integer の新しいインスタンスを求めていることは理解していますが、ボックス化されたプリミティブは Java では不変であり、(最初のケースで見られるように) "正しいこと" を行うための機構が既に存在するため、なぜこのようなことが起こるのでしょうか?

10 を持つ Integer のすべてのインスタンスがメモリ内の同じオブジェクトであるとしたら、もっと理にかなっていると思いませんか? 言い換えれば、「文字列インターニング」に似た「整数インターニング」を使用しないのはなぜですか?

さらに良いことに、値 (および型) に関係なく、同じものを表すボックス化されたプリミティブのインスタンスが同じオブジェクトである場合、より意味がありませんか? または、少なくとも正しく応答し==ますか?

0 投票する
2 に答える
884 参照

java - Java プリミティブの実装

Java には、基本型のオブジェクトである Integer とプリミティブ バージョンである int の両方があります。

プリミティブバージョンは、より高速/軽量/その他です。したがって、一般的にはそれらを使用する必要があります。

私が疑問に思っているのは、なぜ Java の設計者はオブジェクト型だけを持っておらず、舞台裏での最適化としてプリミティブ バージョンを使用したのかということです。

そう:

次のようなコードにコンパイルされます。

基本的に、この架空の Java コンパイラは、Integer、Double、Float などのインスタンスを同等のプリミティブ型に変換します。オブジェクトが実際に必要な場合 (要素をコンテナに入れる場合など) にのみ、実際の Integer オブジェクトが関与します。

注:上記のコードは、実際には許可されていないことがわかっている Integer オブジェクトで演算子を使用しています。私は架空の Java コンパイラを発明しているので、これは String の場合と同様に Integer/Float/Double の特殊なケースを持つふりをします。

0 投票する
2 に答える
1494 参照

java - Java : LinkedList.toArray() から int にキャストされた、整数のオブジェクト配列のオートボクシング

次のようなコードを使用したいと思います。

...

Integer[]ただし、これは許可されておらず、 への変換時にへのキャストが自動ボックス化されないようint[]です。asの代わりにletterIndexasを宣言せずに同等のことを達成するにはどうすればよいですか?Integer[]int[]

0 投票する
3 に答える
6610 参照

performance - Scala の標準ライブラリで @specialized なものがほとんどないのはなぜですか?

@specializedScala 2.8.1 の標準ライブラリのソース コードでの使用を検索しました。この注釈を使用するトレイトとクラスはほんの一握りのようです: Function0, Function1, Function2, Tuple1, Tuple2, Product1, Product2, .AbstractFunction0AbstractFunction1AbstractFunction2

コレクション クラスはどれも@specialized. なぜだめですか?これにより生成されるクラスが多すぎますか?

つまり、プリミティブ型でコレクション クラスを使用すると、不要なボックス化とボックス化解除が大量に発生するため、非常に非効率的です。

ボックス化とボックス化解除を回避して、s の不変リストまたはシーケンス (IndexedSeq特性を含む) を持つ最も効率的な方法は何ですか?Int

0 投票する
2 に答える
2105 参照

maven - axis2-wsdl2code-maven-pluginで-Euwcparamを設定する方法は?

私たちはaxis2を使用してWebサービスクライアントを生成しています(これは今では後悔しています!)。axis2コマンドラインツールを使用すると、switch -Euwcを渡して、生成されたソースでintを整数に、ブール値をブール値などにラップできます。これは、特定のint値またはboolean値がスキーマでnillableであることをaxis2に通知する1つの方法です。

私の質問は、生成されたソースで同じ動作を実現するために、MavenでPOMまたは他の手段を介してこのパラメーターをどのように設定するかです。私のstackoverflowとgoogle検索はあまり明らかにされていません。Jiraの問題があります。これは、開発者が正しい方向を示さずに解決したようです。

構成でunwrapをtrueに設定しても、まったく別のオプションであるため、役に立ちません。将来的にはaxis2を避けたいと思いますが、当面はそれで行き詰まります。

0 投票する
2 に答える
2309 参照

scala - Scalaでボクシング/アンボクシングを見つける方法

バイトコードを見てボクシングが行われているかどうかを scala に教えてもらう方法についてのextemporeの最近の提案に従って、このクラスを作成しました。

のバイトコードを見ましたfoo

そこにボックス/アンボックスの兆候はありません。しかし、私はまだ疑わしいので、-print() でコンパイルしました:

このコードに関する主な所見は、作成された無名関数が に特化されているLong => Doubleこと、およびmap機能がによって提供されていることですlongArrayOps(ls).map(ArrayOps特化されていません)。

問題は、「この例でボックス化/ボックス化解除が行われているか?」です。