問題タブ [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 - ブール式がスイッチのデータ型としてサポートされていないのに、ブール式がケースブロックで有効なのはなぜですか?
昨夜のSCJP認定を読んだ後、switchステートメントと式の評価方法について考えましたが、少し戸惑いました。
Javaではブール値をオンにできないため、以下はコンパイルされません。
ただし、次のようなケースブロックでブール値に評価される式を使用しようとしても、コンパイラは文句を言いません。
('c' | 'd')
最終的には、ブール値と評価される可能性があるため、このケースに入ることができません...
だから私の質問は:
- なぜのようなものを使用することが合法
('c' | 'd')
ですか? - 到達できないので、どうしてそれが役立つのでしょうか。
- 複数の値をケースに入れたいが、デフォルトを使用しない場合、if-elseステートメントとして再実装する唯一の選択肢はありますか?
java - 変数に関するオーバーライドに関する若干の混乱
私は SCJP (最近、Oracle によって OCPJP としてブランド変更されました) の準備をしていますが、模擬試験で間違った特定の問題の 1 つが私を混乱させました。回答の説明では物事が十分に明確に説明されていません。
これは質問です:
答えは です5
が、私は を選び6
ました。
オーバーライドは変数ではなく実行時のメソッドに適用されることを理解していますが、私の心がそれを解釈した方法は次のprintln
とおりです。
- c1 で getObject を呼び出す
- c1 は実際には
SubCovariantTest
オブジェクトであり、 に対して有効なオーバーライドがgetObject()
あるため、オーバーライドされたメソッドを使用します - オーバーライドは B を返すので、6 である B から x を取得します。
JVMがその部分を無視し、コンパイル時に変数が関連付けられているためgetObject()
、常に取得x
する場合ですか?c1
scjp - ツリーセットのサブセット
こんにちは、このコードの出力が「ex [6, 7, b, d] [6, 7, b]」である理由を理解できません。サブセットが数字と文字をどのように扱っているか誰かアドバイスしてもらえますか? ありがとう
java - アサーションが有効になっているかどうかをプログラムでテストするにはどうすればよいですか?
OCP Java SE 6プログラマー模擬試験の正解の1つは、次のとおりです。
をスローせずに、アサーションが有効になっていることをプログラムでテストできます
AssertionError
。
どうやってやるの?
java - 2つの列挙値を「<」と比較するにはどうすればよいですか?
enumがComparableを実装している場合、なぜ<または>と比較できないのですか?
java - toString().length() を hashCode() の戻り値として使用できないのはなぜですか?
私は何が欠けていますか?デフォルトの toString() メソッドが原因で、 hashCode() メソッドへの繰り返し呼び出しはありますか?
java - 2バイトを追加してintを取得できず、最後の2バイトを追加して1バイトを取得できないのはなぜですか?
2バイトの合計が1バイトに収まる場合でも、intサイズ以下の式を含む式の結果が常にintである場合。
1バイトに収まる最後の2バイトを追加すると、なぜそれが発生するのですか? コンパイラエラーはありません。
java - インターフェイスで宣言された匿名の内部クラス:外部クラスとは何ですか?
次のことを考慮してください。
InnerClassは静的ではないため、外部クラスのインスタンスに対して作成する必要があります。
new OuterClass().new InnerClass()
通常の内部クラスは、それが作成された外部クラスへの参照を保持します。これは、を使用してアクセスできますOuter.this.myAttribute
(「ネーミングコリジョン」がある場合に特に役立ちます)。
匿名内部クラスを作成する場合も同じです。作成された匿名内部クラスは外部クラスへの参照を保持します。これが、メソッド内で述語を宣言するときに(匿名メソッド-ローカル内部クラス)、内部クラス内で引き続きアクセスできる理由です。アウタークラスの変数は、finalを宣言する必要はありません(メソッドパラメーターとして渡される変数の場合はそうする必要があります)。
そして最後に、インターフェイスで定数を宣言できます。これは、暗黙的にpublicstaticfinalとマークされています。オブジェクトは定数にすることができます。したがって、匿名の内部クラスとして作成されたオブジェクトは、インターフェイスの有効な定数です。
たとえば、Guavaを使用する場合、通常、インターフェイス関数と述語で宣言します。これにより、のような便利なGuava関数を利用できるようになりMaps.uniqueIndex(...)
ます。
だからあなたは私の質問は何ですか?ここにあります:
匿名クラスをインターフェース定数として宣言する場合(私の最後のコードサンプルを参照)、匿名内部クラスはどの外部クラスへの参照を保持しますか?
java - ocpjp のサンプル問題でのコンパレータの問題
私は現在、Java SE 7 プログラマー試験の準備をしており、Oracle サイトのサンプル問題を解いてみました。私はこれで立ち往生しました:
結果は?
A) 2 3 5 7
B) 2 7 5 3
ハ) 7 5 3 2
D) コンパイルが失敗します。
E) 実行時に例外がスローされます。
質問はここにあります: http://education.oracle.com/pls/web_prod-plq-dad/db_pages.getpage?page_id=303&p_certName=SQ1Z0_804
サイトに示されている正解は C です。コードをテストしたところ、Comparator がパラメーター化されており、指定されたコードでは型が示されていなかったため、コンパイルされないことがわかりました。したがって、コンパイラーは比較メソッドのオブジェクト パラメーターを予期していました。Comparator を に変更しComparator<Integer>
たところ、エラーが解消され、期待どおりに動作しました。
私の質問は、元のコードのその宣言が Java 7 の標準を尊重し、コンパイルする必要があるかどうかです。
java - Javaでのガベージコレクションに適格な変数
OCPJPの準備をしていますが、次の模擬試験問題で行き詰まりました。
与えられた:
14行目に到達すると、ガベージコレクターに適格なオブジェクトはいくつありますか?
A. 0
B. 1
C. 2
D. 3
E. 4
F. 6
彼らの正解はE、つまり4つのオブジェクトですが、理由はわかりません。私の見解では、i2とその重みはガベージコレクションの対象になります。何かが足りないのかもしれませんが、アドバイスしてください。