問題タブ [ocpjp]
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.
java - a =(a ++)*(a ++)はJavaで奇妙な結果をもたらします
私はOCPJP試験の勉強をしているので、Javaの少し奇妙な詳細をすべて理解する必要があります。これには、インクリメント前およびインクリメント後の演算子が変数に適用される順序が含まれます。次のコードは私に奇妙な結果を与えています:
答えは11ではないですか?または多分13?しかし、12ではありません!
ファローアップ:
次のコードの結果は何ですか?
java - インスタンス変数の初期化について混乱しています
私はSCJP試験のために勉強しています、いくつかの模擬試験を行ったときに私はこれに出くわしました:
次の出力は何かを尋ねます:
21 20
tiがgetIntを呼び出し、次にkをインクリメントして21にするので、そうなると思いました。
ただし、答えは1 20
です。なぜ1になるのかわかりませんが、誰かがこれに光を当てることができますか?
java - OCPJP試験のガベージコレクションモック
i3 = null;
以下に示すクラスで実行すると、4つのオブジェクトがガベージコレクションの対象になります。この答えを得た方法を説明するコメントを追加しました。私の推論は正しいですか?
java - Java の値渡しと不変性に関する混乱
SCJP (または現在の OCPJP) 試験の準備として、(参照) 値による受け渡しと不変性に関するいくつかの模擬問題に悩まされています。
私の理解では、変数をメソッドに渡すときは、実際のオブジェクト自体ではなく、その変数に到達する方法を表すビットのコピーを渡します。
送信するコピーは同じオブジェクトを指しているため、StringBuilder に追加するなど、そのオブジェクトが変更可能な場合は変更できます。ただし、Integer をインクリメントするなど、不変オブジェクトに対して何かを行うと、ローカル参照変数は新しいオブジェクトを指すようになり、元の参照変数はこれに気付かないままになります。
ここで私の例を考えてみましょう:
質問: このように動作するのは不変オブジェクトだけで、可変オブジェクトは値渡し参照によって変更できますか? 私の理解は正しいですか、それともこの行動には他の特典がありますか?
java - Java 汎用メソッド/パラメータ型
次のコード例では:
genericFromArrayToCollection()
コレクションの宣言された型が配列の宣言された型の親である場合にのみ、コンパイラがメソッドの呼び出しを許可するのはなぜですか(#2、#3、および #4 の行を参照)。これはなぜですか?
ありがとう
編集
#4 とマークされた行のコメントを外すと、次のエラーが表示されます
編集 2
@Tudor私はこのステートメントを使用して次の方法を試しました
コンパイラは、java.util.ArrayList に適用できないというエラーを出しました。
java - Java 配列 - 出力が '1' になるのはなぜですか?
この例の出力が1になっているのはなぜですか?
2だと思っていました。つまり、式は次のように評価されます。
a がbを指しているので、 a[0] は2であってはなりませんか?
前もって感謝します。
java - Java - 適切なコレクションの選択
重複の可能性:
Java コレクションの実装を選択するための経験則?
それぞれの長所と短所を詳述したすべての Java コレクションの「概要」リストを探しています。私は特に次のようなことに興味があります
- より高速な反復を提供する
- より高速な検索を提供するもの
- より遅い反復を提供する
- より速い挿入または取り外しを提供します
Google で検索していくつかのサイトを見たことがありますが、表形式でまとめたものを探しています。
前もって感謝します。
java - Java-重複アイテムのArrayList削除
次の例では:
ArrayListは1つ減りますが、どれを削除しますか?最後に挿入されたもの、または最初に挿入されたものを削除しますか?
java - Java Generics - このメソッド呼び出しがチェックされていない変換と見なされるのはなぜですか
次のコード例はコンパイルされますが、コンパイラの警告が表示されます
上記をコンパイルすると、次の警告が表示されます
または、 -Xlint:unchecked でコンパイルすると、次の警告が表示されます
nums の初期化を
その後、警告は表示されません。
なぜ彼らは異なった振る舞いをしているのですか?ArrayList は List のサブタイプであり、SubArrayList は ArrayList のサブタイプであるため、インスタンス化が同じであると期待していました。
ありがとう。
編集
また、メソッドを呼び出して、一般的に初期化された参照を渡すと、警告も生成されます。
ジェネリック コードと非ジェネリック コードを混在させた場合にのみ、コンパイラの警告が表示されると思いました。
java - Javaジェネリック-スーパータイプリファレンス
ジェネリックスを正しく理解している場合、として宣言されたパラメーターを持つメソッドは、Typeまたはスーパータイプの<? super T>
いずれかの参照を受け入れます。次のコードでこれをテストしようとしていますが、コンパイラーはそれを好みません。T
T
コンパイラエラーは:
<Animal>
anim2はタイプであり、Animalはスーパータイプの犬であるため、なぜ私がanim2を渡せないのかわかりません。
ありがとう