AI作成・独立検証済(有資格者監修なし)1Z0-815 対応
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コンパイルエラー(PIsqrt はクラス名で修飾しないと使えない)
  3. Cfalse 改行 3.141592653589793
  4. Dコンパイルエラー(import static は1ファイルにつき1つまでしか書けない)
正解・解説・誤答理由・ひっかけを見る▼ open
✓ 正解:AAI作成・独立検証済

解説

通常の 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 は常に trueMath.PI の値そのものは 3.141592653589793double 定数)。

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