タグ付けされた質問 「autoboxing」


10
Javaで2つの整数を適切に比較するにはどうすればよいですか?
ボックス化されたプリミティブIntegerを次のような定数と比較すると、 Integer a = 4; if (a < 5) a 自動的に開梱され、比較が機能します。 ただし、2つのボックス化さIntegersれたものを比較していて、等しいかより小さいかより大きいかを比較したい場合はどうなりますか? Integer a = 4; Integer b = 5; if (a == b) 上記のコードは、それらが同じオブジェクトであるかどうかを確認する結果になりますか、それとも、その場合は自動ボックス化解除されますか? 何について: Integer a = 4; Integer b = 5; if (a < b) ?
215 java  integer  autoboxing 

8
三項演算子では許可されているが、ifステートメントでは許可されていないintとしてnullを返す
次のスニペットの簡単なJavaコードを見てみましょう。 public class Main { private int temp() { return true ? null : 0; // No compiler error - the compiler allows a return value of null // in a method signature that returns an int. } private int same() { if (true) { return null; // The same …

21
なぜ人々はまだJavaでプリミティブ型を使用するのですか?
Java 5以降、プリミティブ型のボクシング/アンボクシングがint行われるようjava.lang.Integerになりました。 私は(という最近の新しいJavaプロジェクトの多くを参照してください間違いなく使用している少なくともバージョン5のJREを必要とし、そうでない場合は6)intのではなくjava.lang.Integer、それは変換するためのいくつかのヘルパーメソッドを持っているとして、それは、後者を使用することがはるかに便利だけれども、long値等へ なぜいくつか がJavaでまだプリミティブ型を使用はですか?目に見えるメリットはありますか?

4
ブール、条件演算子、オートボクシング
なぜこれがスローされるのですか NullPointerException public static void main(String[] args) throws Exception { Boolean b = true ? returnsNull() : false; // NPE on this line. System.out.println(b); } public static Boolean returnsNull() { return null; } これはしませんが public static void main(String[] args) throws Exception { Boolean b = true ? null : false; …

10
Javaの奇妙な整数ボクシング
私はちょうどこれに似たコードを見た: public class Scratch { public static void main(String[] args) { Integer a = 1000, b = 1000; System.out.println(a == b); Integer c = 100, d = 100; System.out.println(c == d); } } 実行すると、次のコードブロックが出力されます。 false true 最初の理由がわかりfalseます。2つのオブジェクトが別々のオブジェクトであるため、==は参照を比較します。しかし、私は理解できません、なぜ2番目のステートメントが返されるのtrueですか?Integerの値が特定の範囲にあるときに実行される奇妙なオートボクシングルールはありますか?何が起きてる?
114 java  autoboxing 

4
ボックス形式のLong値127と128の比較
条件を使用して2つのLongオブジェクトの値を比較したいif。これらの値が128未満の場合、if条件は適切に機能しますが、128以上の場合、比較は失敗します。 例: Long num1 = 127; Long num2 = 127; if (num1 == num2) { // Works ok } 上記のコードの比較は正しく機能しますが、以下のコードでは失敗します。 Long num1 = 128; Long num2 = 128; if (num1 == num2) { // Does NOT work } Long変数と127より大きい値の比較に問題があるのはなぜですか?変数のデータ型が長いプリミティブに変更された場合、比較はすべてのケースで機能します。


9
Javaで自動ボックス化とボックス化解除を使用するのはなぜですか?
オートボクシングは、Javaコンパイラがプリミティブ型とそれに対応するオブジェクトラッパークラスの間で行う自動変換です。たとえば、intを整数に、doubleをDoubleに変換するなどです。変換が逆の場合、これはボックス化解除と呼ばれます。 では、なぜそれが必要なのか、そしてなぜJavaで自動ボックス化とボックス化解除を使用するのでしょうか。
81 java  autoboxing 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.