AI作成・AIで再検証済(有資格者監修なし)1Z0-815-JPN 対応
import(static import による静的メンバの無修飾利用)難易度 標準無料

次のコードの出力として正しいものを選べ。

1  import static java.lang.Math.PI;
2  import static java.lang.Math.sqrt;
3  public class Q5 {
4      public static void main(String[] args) {
5          System.out.println(sqrt(PI) > 0);
6          System.out.println(PI);
7      }
8  }
  1. Atrue 改行 3.141592653589793
  2. Bコンパイルエラー(PI・sqrt はクラス名で修飾しないと使えない)
  3. Cfalse 改行 3.141592653589793
  4. Dコンパイルエラー(import static は1ファイルにつき1つまでしか書けない)
正解・解説・誤答理由・ひっかけを見る▼ open
✓ 正解:AAI作成・AIで再検証済

解説

通常の import が「型(クラス/インタフェース)」を無修飾で使えるようにするのに対し、 import static は特定クラスの static メンバ(フィールドやメソッド)を、クラス名で修飾せず直接使えるようにする。

1行目 import static java.lang.Math.PI; により定数 Math.PI を単に PI と書ける。 2行目 import static java.lang.Math.sqrt; により Math.sqrt(...) を単に sqrt(...) と書ける。

PI は正の値であり、sqrt(PI)(平方根)は必ず0より大きいので sqrt(PI) > 0 は常に true。 Math.PI の値そのものは 3.141592653589793(double 定数)。

各誤答が違う理由
  • Bimport static はまさに「クラス名修飾を省略して使う」ための機能。1〜2行目でその宣言がされているためコンパイルは通る。
  • CPI(正の定数)の平方根は正の値なので sqrt(PI) > 0 は常に true。false にはならない。
  • Dimport static 宣言は複数書ける(メンバごとに個別に列挙するのが一般的)。1ファイルにつき1つという制限は無い。
ひっかけ: import static は「クラスをインポートする」のではなく「そのクラスの static メンバをインポートする」点に注意。PI や sqrt(...) という書き方だけを見て「未定義の変数/メソッドだからコンパイルエラー」と早合点しやすいが、1〜2行目の import static によって正当に解決される。
コマンド例と想定される挙動(未実行)
出力:
true
3.141592653589793
AIが作成し、別の手順のAIで誤りを点検した解説です(有資格者による監修は経ていません)

この問題集の作り方

  1. 問題と解説はAIが作成しています。この資格の問題に、有資格者(著者)の監修は入っていません。
  2. 各問に、公式ドキュメントの出典リンクを付けています。書いてあることは、出典に当たって確かめられます。
  3. 誤答の選択肢それぞれに、なぜ誤りなのかの理由を書いています。
  4. 誤りを見つけたら報告できます。原則として無償で訂正・削除します。
  5. 各試験の運営団体とは無関係の非公式教材です。合格を保証するものではありません。
この分野をもっと解いて、得点源に
Java基礎 を含む問題を分野別に演習できます。
演習する →