問題タブ [scjp]
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 - Java - スレッド join() と実行順序 SCJP の質問?
O/SCJP 試験の練習をしています。次のコードを検討してください。
ソース: http://scjptest.com/mock-test.xhtml
このサイトには、出力 (模擬質問への回答) が表示されるBeginRunEnd
と記載されており、クラスを正常に実行すると、まさにそれが出力されます。
ただし、デバッグ時の出力はRunBeginEnd
.
通常の実行では、出力は常に、または他の要因 (新しいスレッド クラスの重さ/スレッドを開始してから参加するのにかかる時間BeginRunEnd
など) に応じて変化すると言っても過言ではありませんか?
公正で正確な試験問題だと思いますか?
java - SCJP 試験のために私のコレクションを誰かに確認してもらうことはできますか
私は SCJP (現在は Oracle Certified Professional Java SE Programmer 試験) のために勉強しています。
さまざまなコレクションすべてと、それらをいつ使用するかについて頭を悩ますのに苦労しました。フラッシュカードも好きです。そこで、使用しているコレクションを除いて本質的に同じクラスのセットを作成しようとしました。出力がどのように出力されるか、および各コレクションの主な「機能」は何かを特定する必要があります。
残念ながら、私は自分自身を信頼していません。すべての情報が正確であるか、または不足している情報があるかどうかを誰かに確認してもらいたいです。その後、いくつかのフィードバック/修正を行った後、Java コレクションを理解しようとしている他の人にとっては素晴らしい演習になると思います。
対象となるコレクションは、HashMap、Hashtable、TreeMap、LinkedHashMap、HashSet、TreeSet、LinkedHashSet、ArrayList、Vector、LinkedList、PriorityQueue です。
また、すべてのファイルを分けてあります。ここからダウンロードできます: http://www.allgo.com/personal/MyCollections.zip
前もって感謝します
java - インスタンス変数をスーパークラスコンストラクターに渡せないのはなぜですか?
私は長い間これをやろうとしてきました。
コントローラクラス
これが発生するエラーです。インスタンス変数をスーパークラスコンストラクターに渡せない理由を知りたいのですが?コンストラクターにアクセスできるインスタンスがないためだと思います。
スレッド「main」の例外java.lang.Error:未解決のコンパイルの問題:コンストラクターを明示的に呼び出している間、インスタンスフィールドtを参照できません
java - Java 継承の問題
scjp の質問を調査しているときに、この動作に遭遇しましたが、これは奇妙でした。
次のように、Item と Bolt の 2 つのクラスを宣言しました。
cost の値に 2 回アクセスしようとしました
得られる出力は 20 10 です。これがどのように起こるのか理解できません。
java - var-argsを使用したメソッドのオーバーロード-ボクシングと拡張を組み合わせたもの
一致しないパラメーターを含むメソッドをオーバーロードする場合、JVMは常に、パラメーターよりも幅が広い最小の引数を持つメソッドを使用します。
私は次の2つの例で上記を確認しました:
拡大:バイトがintに拡大
}
ボクシング:整数にボックス化されたint
上記の両方の例は、正しい「InInt」を出力します。次の例に示すように、状況にvar-argsが含まれる場合は、混乱します。
上記の場合、次のエラーが発生します。
前の例と同じルールを適用しないのはなぜですか?つまり、バイトよりも大きい最小値であるため、バイトをintに広げますか?
java - 匿名の内部クラスで final キーワードを使用するのはなぜですか?
私は現在、Sierra & Bates の本で S(O)CJP を準備しています。
内部クラス (メソッド ローカルまたは匿名) については、ローカル変数にアクセスできないと言われています。これは、クラスがヒープ上に存在している間、ローカル変数がスタック上に存在し、メソッドによって返され、これらの変数にアクセスしようとする可能性があるためです。スタック上にありますが、メソッドが終了したため、もう存在しません...
ご存知のように、final キーワードを使用してこれを回避できます。これは彼らが本で言っていることですが、その final キーワードの効果については実際には説明していません... 私の知る限り、メソッドのローカル変数で final キーワードを使用しても、ヒープ上で有効にはなりません。 ..では、スタックがなくなる可能性があるときに、クラスはスタック上にまだ存在する最終変数にどのようにアクセスできるのでしょうか???
内部クラス内に、この最終的なローカル変数のある種の「コピー」が必要だと思います。値は変更できないため、この情報を複製してみませんか...誰かがこれを確認するか、何か不足しているかどうか教えてもらえますか
java - 作成されるStringオブジェクトの数
私は次のJavaコードを持っています:
質問はどういうわけか単純です:String
このメソッドが呼び出されたときにいくつのオブジェクトが作成されますか?
最初は5つの文字列オブジェクトが作成されたと答えましたが、私の本の答えでは、3つのオブジェクトしか作成されておらず、説明もありません(これはSCJPの質問です)。
私の見解では、「Fred」、「47」、「Fred47」、「ed4」、「ED4」の5つのオブジェクトがあります。
この質問はSCJPシミュレーション試験でも見つかりましたが、同じ答えが3つあります。
java - オブジェクトを渡す scjp
doStuff(h1)を呼び出した後、h1が変更されないのはなぜですか? 私が理解しているように、オブジェクトへの参照を渡す必要があり、メソッドでは新しいオブジェクトに置き換える必要があります。
java - シングルトン、列挙型、および匿名の内部クラス
ご存知かもしれませんが、Enum が 1 のインスタンスでシングルトンを宣言する人もいます。これは、JVM が処理する並行性の問題のない単一のインスタンスが常に存在することを保証するためです...
では、複数のインスタンスを持つ Enum はどうでしょうか? Enum のようなものは、共通のインターフェースを共有するシングルトンの一種の順序付けられたセットであると言えますか? なんで?
このコードでは、なぜこれが機能しないのか: WITH_TAXES.getFormattedPrice(33f); 共通インターフェイスを通過しないと呼び出すことができない場合、パブリック メソッドを宣言する意味は何ですか? これが、列挙型のインスタンスの 1 つだけに対してインターフェイスを宣言できる構文が表示されない理由だと思います。
編集:
enum インスタンスは特別な種類の匿名クラスのようです。したがって、そのメソッドを呼び出すことができない理由を理解しています。
私の質問はちょっと関連しています:匿名クラスがインターフェイスを実装できないのはなぜですか (既に実装されている可能性のあるインターフェイスに加えて!)
なぜそれができないのか、私は完全に理解しています:
(ここの getName はオーバーライドではありません)
なぜ私が理解できないのは、匿名クラスでそれができない理由です:
または、同じ結果になるもの。考えてみてください。匿名クラスを使用しない場合は、 Vehicle クラスを完全に拡張して、そのサブクラスに必要な他のインターフェイスを実装させることができます...
WITH_TAXES は実際の EnumPriceType ではなく、独自のインターフェイスを備えた EnumPriceType のサブクラスであるため、可能な場合はタイプセーフな方法で WITH_TAXES.getFormattedPrice(33f) を呼び出すことができると確信しています。ハードコーディングされた WITH_TAXES を使用して WITH_TAXES.getFormattedPrice(33f) を呼び出すと、コンパイル時にどの EnumPriceType 子を呼び出しているかがわかります。
だから私の質問は:これが不可能な理由はありますか? それともまだやってないだけ?
java - indexOfと比較可能なものの使用
次の簡単なテストを試しました。
上記のテストの出力は次のとおりです。
2行目が3を生成している理由はわかりますが、1行目がtitle="Croydon"の新しい行を見つけられない理由はわかりません。
APIは、indexOf
メソッドを次のように記述します
このリストで指定された要素が最初に出現するインデックスを返します。このリストに要素が含まれていない場合は-1を返します。
(o==null ? get(i)==null : o.equals(get(i)))
より正式には、、または-1
そのようなインデックスがない場合は、のような最小のインデックスiを返します。
APIは、オブジェクトがnullの場合、リストからnullオブジェクトが最初に出現した場合のインデックスを返すと言っていると思います。nullでない場合は、渡されたオブジェクトequalsメソッドがtrueを返す最初のオカレンスのインデックスを返します。
作成されたオブジェクトは、cities3.indexOf(new Cities("Croydon")
以前に追加されたオブジェクトと同じである必要がありますcities3.add(new Cities("Croydon"));
か?