ログイン

Java Silver 11

Java Silver 11
99問 • 2年前
  • ユーザ名非公開
  • 通報

    問題一覧

  • 1

    パッケージの目的は?(3つ)

    名前空間を提供し、名前の衝突を避ける アクセス制御機能を提供する クラスの分類を可能にする

  • 2

    クラスは必ず何かしらのパッケージに含まれる?

    誤りである。 パッケージ宣言を省略した場合は、無名パッケージに属すると解釈される。

  • 3

    パッケージ宣言とは?

    クラスが所属するパッケージをソースコードの先頭行に記述することで宣言すること importの後に宣言するのは誤りである

  • 4

    インポート宣言を省略できるパッケージは何か

    java.langパッケージ

  • 5

    パッケージのインポート宣言を以下のように行う import java.util.*; このとき、サブパッケージ「java.util.regex」に属するクラスも使用可能になるか

    ならない 使用できるのはjava.util内の全てのクラスであり、サブパッケージは使用可能にならない

  • 6

    エントリーポイントとは?

    処理を始めるためのメソッドのこと 要するに「public static void main(String args[])」のことを指す なお、引数にはargs[](String配列型)だけではなく、String... args(可変長引数のString型)も受け取ることが出来る

  • 7

    javacコマンドとは 有効なオプションはなにか

    .javaファイルを読み込み、.classファイルにコンパイルするコマンドのこと -dオプションを用いると、クラスファイルの出力先ディレクトリを指定できる

  • 8

    javaコマンドでコンパイルしていない.javaファイルを指定するとどうなるか

    正常にプログラムが実行される ただし、コンパイル後のクラスファイルはメモリ上に出力される

  • 9

    javaコマンドで拡張子が.javaではないファイルをソースファイルモード(コンパイルをせずに直接実行する)で実行するには?

    オプションに--sourceを指定する

  • 10

    ソースファイルモード(.classにコンパイルせずに実行する)でのjavaコマンド実行時に、publicなクラス名とソースファイル名が一致していないとどうなるか?

    正常に実行される

  • 11

    起動パラメータとは?

    コマンドライン上でのjavaコマンド実行時の引数のこと > java Sample.java a b c このとき「a b c」が起動パラメータである

  • 12

    起動パラメータ(コマンドライン)で「"」を文字列として指定したい場合、どのようにするか

    「¥"」とすることでエスケープを行う

  • 13

    リテラルとは

    ソースコードの中に記述する値のこと 整数、浮動小数点数、真偽、文字の4つのリテラルが存在する

  • 14

    リテラルを明示的にするためにはどのように表記するか

    接頭辞を後ろに付ける 100L(long型)や3.0F(float型)など ちなみに、n進数は以下のように表記する 2進数:0b11011 8進数:077(「0」をつける) 16進数:0x3F

  • 15

    整数リテラルの「_」を用いた数値表現について、守るべきルールを述べよ (※桁数の多い数値リテラルの見やすさを向上させる目的で導入された)

    ・リテラルの先頭と末尾には記載不可 ・記号の前後には記述不可

  • 16

    文字を囲む際の以下の違いは? 「'(シングルクォーテーション)」 「"(ダブルクォーテーション)」

    「'」:文字リテラルを括る 「"」:文字列リテラルを括る

  • 17

    char型の変数に入力できる値は?(3つ)

    ・シングルクォーテーションで括った文字 ・シングルクォーテーションで括った「¥u」からはじまるunicode番号 ・0~65535までの数値 ※1:JavaではUnicodeを標準の文字コードに採用している ※2:char型は16bitのUnicode文字である

  • 18

    識別子(変数、メソッド、クラスなど)に使える記号は?

    「_」と「$」

  • 19

    varはどのようなデータ型か?

    variable type(変数型) ローカル変数の宣言時に型を明示的に書かなくても型を推測してくれるもの ・メソッドの戻り値に適用可能 ・ラムダ式からは推論不可 ・配列の初期化式からは推論不可

  • 20

    Javaのラムダ式とは?

    パラメータを受け取って値を返す短いコードブロックのこと 追記必要

  • 21

    varによる変数宣言が使えないケースとして黒本に記載があったものは何か?(2つ)

    ・フィールドの宣言(クラス内で宣言する変数のこと)には用いることが出来ない ・メソッドの引数にvarを用いて、メソッド内で引数を用いるような関数(=varは代入する値の型から変数の型を推論するが、メソッドのコンパイル時に、どのコードからこのメソッドが使われているかわからないから)

  • 22

    varによる型推論はどのタイミングで行われるか?

    コンパイルのとき(つまりインタンス化した時点) (var A = new B();) でAはB型のオブジェクトであると決定する

  • 23

    finalクラスはどのような特徴を持つか?

    他のクラスによってオーバーライドされない

  • 24

    immutable(不変)なオブジェクトを定義するための方法のひとつとして、全てのフィールドを○○で修飾する

    private

  • 25

    String型はimmutableなオブジェクトだが、これによってどのような影響があるか?

    文字列を変更する場合は新しくインスタンスをつける必要がある 例えば任意のString型のオブジェクトstrにreplaceAll()メソッドを使用した場合、strの中身が置換されるのではなく、strの中身を置換したものを新しいインスタンスに代入しなければならない

  • 26

    StringのメソッドindexOfを使用してStringに存在しない文字列が何番目か調べた場合、どのような挙動が生じるか?

    「-1」をreturnする

  • 27

    Stringクラスのsubstringメソッドは文字列から任意の文字列を取り出すメソッドである。以下の実行結果はどうなるか。 String str = "abcde" system.out.println(str.substring(2,4;))

    cd が出力される (2以上4未満である!)

  • 28

    このコード、なぜコンパイルエラー? str.replace("aa" , 'b');

    引数はchar型(単一文字)かCharSequence型(複数文字)である必要があるから

  • 29

    String型の文字列の後ろに文字列を付け加えるためのメソッドは?

    concat()

  • 30

    式「(文字列) + (数字)」の場合、どのような挙動を起こすか?

    数字が文字として認識され、連結される

  • 31

    "a" + 10 + 20 どうなる?

    文字列a1020になる

  • 32

    String str = null; str += "null"; strはどうなる?

    str = "nullnull"となる

  • 33

    StringBuilder型は何のために存在するか?

    文字列の変更に対して余計はメモリを消費しないため StringBuilderはデフォルトで16文字分のバッファを持っている

  • 34

    appendメソッドはどのようなもの?

    java.lang.StringBuilderクラスのメソッド 文字列に新しい文字列を追加する 可変オブジェクト(StringBuilder)に使用され、新しい文字列オブジェクトの生成を行わない点で優れている

  • 35

    a = 3のとき、以下の式の結果はどうなる? b = a += 5 c = a + b

    16

  • 36

    以下のコードの挙動は? system.out.println(10 * - 20)

    -200 (-20の符号と絶対値が離れていても、文脈上で-20であると判断される)

  • 37

    キャストとは

    ある型から別の型に変換すること (要追記)

  • 38

    Javaにおけるint型、byte型、long型、short型はどのような共通点/相違点を持つか?

    全て整数に関するプリミティブ型 byte型 8bit(-128~127) short型 16bit int型 32bit long型 64bit

  • 39

    数値演算において、演算子の両側のオペランドが異なる場合はどうなる? 例) int c = 2 * 3L (int * longのケースである)

    小さい方の型が大きい方の型に変換される 上記の例の場合、int型(32bit)がlong型(64bit)に変換される ただし、int型(32bit)にlong型(64bit)は代入出来ないので、コンパイルエラーが発生する

  • 40

    floatとdoubleの型の違いは?

    float型 32bit単精度浮動小数点数 double 64bit倍精度浮動小数点数

  • 41

    以下の変数宣言でコンパイルエラーが発生する理由は? float d = 10.0;

    浮動小数点リテラルのデフォルトの型はdouble型であり、この宣言では、小さい範囲のfloat(32bit単精度)に大きい範囲のdouble(64bit倍精度)を代入しようとしているからである

  • 42

    以下の二つの式の答えはどう異なるか a=10とする 1. a = a++ + a + a; 2. a = ++a + a + a;

    1. 32 2. 33 a++はその瞬間は加算対象になっていない ++aはその瞬間から加算対象である

  • 43

    次のコンパイル結果は? boolean a = true boolean b = false system.out.println(a <= b)

    コンパイルエラーが発生する 比較演算子(>, <, <=, >=)は数値の大小を比較するものであり、それ以外は比較できない

  • 44

    インスタンスの同一性と同値性の違いは? それぞれどのように判別するか?

    同一性 全く同じインスタンスを参照している 演算子「==」によって判定可能である 同値性 インスタンスは異なるけれど同じ値を持っている メソッドequalsを用いる (ただし、フィールドの全てが等しいorフィールドの一部が等しいなどの判定基準はクラスの設計者に委ねられる) (したがってオーバーライドを前提とするメソッドである) (デフォルトでは同一性を判定する)

  • 45

    Sample s = (Sample) obj; このコードでは何をしている?

    型のキャスティング objというオブジェクトがSampleクラスの型であることを明示的にしている 元々objがSampleクラスのスーパークラスやサブクラスであった場合でも、Sample型として扱うことが可能である

  • 46

    メソッドのシグネチャとは

    そのメソッドの一意性のこと メソッド名+引数のデータ型・数・名前で判定される 以下は異なるシグネチャのメソッドであり、 public void Sample(int hoge) public void Sample(int hoge, int fuga) 以下は同一シグネチャのメソッドである public void Sample(int hoge) private void Sample(int hoge)

  • 47

    Object a = new Sample(); のようにオブジェクト型でインスタンス化を行うと、どのような影響が生じるか?(具体的なものを1つ)

    Sampleクラスのメソッドやプロパティにアクセスすることは出来なくなる

  • 48

    equalsメソッドをオーバーライドするにあたり、満たさなければいけない条件のうち、重要なものを1つ答えよ

    null意外の参照値xについて、x.equals(null)はfalseを返すこと

  • 49

    String a = "sample"; String b = "sample"; System.out.println(a == b)がtrueを返すのは何故?

    コンスタントプールという仕組みがあるから String型は特殊であり、もし同じ文字列リテラルが複数回登場した場合、定数用のメモリ空間にある文字列インスタンスへの参照が使い回される これにより、メモリ消費を抑制してプログラムを実行できる

  • 50

    if文の{}が省略されたような以下のコードはどのように処理されるか? if(false) system.out.println("A") system.out.println("B")

    条件式の次の式のみがif文の条件に合致したときの処理として実行される つまり、"B"のみ出力される

  • 51

    ifの中括弧を省略しない場合、 ・else lf(条件) ・else  if(条件) ではどのように異なるか?

    ・else if そのまま else ifとして扱われる ・else  if elseの中に更にまた条件分岐が加えられる

  • 52

    switch文はどのように使うか?

    switch (条件式) {  case 値 : 処理   break;  case 値 : 処理   break;  default : 処理   break; } 条件式の戻り値と一致するcase式を実行する

  • 53

    switch文の条件式の戻せる値にはどのようなものがある?(3パターン)

    ・int型以下の整数・そのラッパークラス ・文字・文字列 ・列挙型 long型やdouble型、float型、boolean型などは含まれない

  • 54

    switch文の条件式に入力することが出来ないデータ形式の例は?(2つ)

    ・final宣言していない変数 ・条件式に与えられた変数とデータ型が異なるもの

  • 55

    case式において、break;を記入しないとどうなるか?

    あるcaseが条件に一致した場合、その後ろにある全てのcase式が実行される

  • 56

    do-while文はwhile文と比較してどのような特徴があるか? また、do-whileの構文を答えよ

    条件に合致するかに関わらず、1回は処理が実行される 構文 do {  //繰り返し処理 } while (条件式);

  • 57

    while文やdo-while文で{}を省略した場合の挙動の特徴を述べよ(両方に関係すること1つ/do-whileのみ関係すること1つ)

    ・次の一文のみが繰り返しの対象となる ・do-while文では間に1文(;まで)のみ記述でき、2文以上記述するとコンパイルエラーになる

  • 58

    Javaにおけるfor文の構文を答えよ また、初期化文に関する注意を述べよ

    for( 初期化; 条件文; 更新文 ){  //繰り返し処理 } 初期化分は「,」区切りで複数の変数を宣言できるが、変数は同じ型である必要がある

  • 59

    for文の初期化文で宣言した変数のスコープはどのようになっているか

    for文の中でのみ使用可能であり、ループ外で使うことは出来ない

  • 60

    for文の初期化文、条件文、更新文の3つのうち、複数記述できないものは?

    条件文 ただし、論理演算子を用いて1つにまとめることは可能 例) for (int i = 0, j = 0; i < 3 && j < 5; i++)

  • 61

    for文の更新文の部分に、以下のようにメソッドを記述する for( int i = 0; i < 3; i++, period() ) この時、メソッドperiod()がピリオドをprintlnするメソッドである場合、このメソッドはどんな扱いを受けるか?

    毎回のインクリメントの後に、コンソール上に実行結果が表示される

  • 62

    拡張for文とは?

    簡単に繰り返しを実現出来るfor文のこと 以下のような構文である for( 型 変数名 : 集合){  //繰り返し処理 } 例) String array = {{ "A", "B", "C" }} for( Object obj : array){  //変数objに対する繰り返し処理 } 集合から1つずつ要素を取り出して、それを変数に代入して繰り返し処理を実効する

  • 63

    Javaにおけるラベルとは?

    for文におけるbreakやcontinueの制御移行先を自由に指定できるもの for文のみならず、ifや変数やtry~catchやreturnなど、あらゆる箇所に使用可能である 例) outerLoop: for (int i = 0; i < 5; i++) { // ... }

  • 64

    Javaのプリミティブ型にはどのようなものがあるか?

    整数型(byte,short,int,long) 小数型(float,double) boolean型 文字型(char)

  • 65

    配列の ・型 ・要素数 に関する特徴を述べよ

    ・同じ型、もしくは互換性のある型の値しか使えない ・扱える要素数はインスタンス生成時に決める(後で変更する事は出来ない)

  • 66

    以下の文章は正しいか 配列型変数には値が直接入る

    ‪✕‬ 配列型変数には、配列インスタンスへの参照を代入する

  • 67

    以下のコードの実行結果はどうなるか int array[] = new int[3]; system.out.pirntln(array);

    ハッシュコードが表示される 例)[I@15db9742 (※System.out.println()では、引数のオブジェクトから自動的にtoStringメソッドを呼び出す。しかし、配列はオブジェクトとして扱われ、toString()メソッドをオーバーライドしていない。よって、toString()のデフォルトであるハッシュコード16進数表現がそのまま表示される)

  • 68

    配列型変数の宣言はどのように行う?

    文字列または変数名の後ろに[]を付与する 例) int [] arrayA int arrayB[] int[][] arrayC int arrayD[][] int[] arrayE[][] (※1) int[][] arrayF[] (※2) ※1 これは3次元配列である ※2 これは3次元配列である

  • 69

    次のスクリプトはなぜコンパイルエラーになるか? int[2] array;

    要素数は指定できないから 配列型変数はあくまで配列インスタンスへの参照を代入するだけであり、参照先の配列がいくつの要素を扱えるかは関係ない

  • 70

    以下のコードはそれぞれコンパイルエラーになるか A. int[][] a = new int[2][]; B. int[][] b = new int[][2];

    A.コンパイルエラーにならない 1次元目の配列インスタンスを生成し、2次元目をあとから生成することが可能なので B.コンパイルエラーになる 1次元目の要素数を省力することはできない、必ず1次元目の要素→2次元目の要素、と処理される

  • 71

    Itemクラスの配列をインスタンス化する Item[] items = new Item[3]; この時、itemsの中身はどのようになっているか?

    全てnullである

  • 72

    以下のコードはなぜコンパイルエラーになる? int[] array = new int[];

    配列のインスタンス化の時に要素数をしていないから

  • 73

    配列の初期化(初期宣言)はどのように行うか 2パターン答えよ

    int array = { 2, 3 } int array = new int[] { 2, 3 } ※newと初期化を同時に行う場合は、インスタンス化でも[]の中に要素数を指定してはいけない。[]の数で次元数を、{}で初期化値を表している。

  • 74

    以下のコードはコンパイルエラーになるか int [][] array = {};

    コンパイルエラーにならない 初期化子の{}が必要な次元数(具体例では2次元)を自動的に算出し、必要な初期化を行うから

  • 75

    以下のコードはコンパイルエラーになるか? int e[]; e = {2,3};

    コンパイルエラーになる 初期化子を用いたインスタンス化と初期化は「;」で分けて行うことはできない

  • 76

    クラス間で継承の関係にあるとき、以下のコードはコンパイル/実行可能か? A[] array = new B[]{ new B(), new B() };

    コンパイル/実行可能である 継承関係にある型同士であれば配列として扱える

  • 77

    型変換の「自動型変換」「明示的変換」はそれぞれどのように異なるか?

    自動型変換 コンパイラによって自動的に行われる型変換、主に小さいデータ型(整数)から大きいデータ型(小数)への変換が該当する int myInt = 9; double myDouble = myInt; 明示的変換 キャスト演算子を用いて明示的に型変換を行うこと double myDouble = 9.78; int myInt = (int) myDouble; //出力 9.0

  • 78

    配列のclone()メソッドにより複製された配列は存在としてどのようなものか?

    元の配列の参照先にある配列インスタンスを複製したインスタンスへの参照が代入されている(別物である) つまり、これらを「==」演算子で判定しても、falseが返される

  • 79

    static修飾子はどのようなものか?

    static修飾子をつけると、インスタンス化せずとも呼び出すことが可能である。 例えばpublic class SampleにSampleFieldというメンバ変数、SampleMethod()というメソッドがあったとする。 static修飾子がつかない場合は、インスタンス化により他クラスから利用する必要があるが、staticの場合は、いきなりSample.SampleFieldと呼び出せたり、Sample.SampleMethodと呼び出せたりする。 更にこれらメンバ変数やメソッドの利用によりメンバ変数の値が書き換えられた場合、クラスのメンバ変数そのものに影響を及ぼしうる。

  • 80

    Javaにおいて、参照型が何も参照していない状態を「NULL」と表現するのは可能か?

    不可能である。 NULLといった表記は存在していない。

  • 81

    Javaにおけるガベージコレクションとはなにか? どのような時に発生するか?

    インスタンスを破棄すること。 インスタンスがどこからも参照されなくなるとき、ガベージコレクションが発生する。(インスタンスは参照型の変数を経由してのみ扱うことが可能であり、またメモリ上に作られるため、無制限に作るとメモリ空間を使い切ってしまう)

  • 82

    クラスSample内で、以下の変数を宣言する。 static int num = 10; その後、別クラスで以下のような操作を行った。 Sample s = new Sample(); s.num = 20; system.out.pirntln("Sample.num"); 出力される結果は?

    20 static変数の場合、インスタンス化したメンバ変数の数値を変えても、元のクラスのメンバ変数に影響を与える

  • 83

    staticなメソッドから非staticなメンバ変数にアクセスすることは可能か?

    不可能である staticメソッドはインスタンス化なしで使えるが、非staticなメンバ変数はインスタンス化を必要とし、存在しないものを呼び出してしまうからである

  • 84

    以下のメソッドはコンパイルエラーになるか int method(int num) {  System.out.println(num); }

    コンパイルエラーになる 戻り値がint型であるのにも関わらず、何もreturnしていないからである

  • 85

    voidを返すsetterメソッドがある 例えば String val = s.setter("hogehoge"); のように変数に代入しようとすると、どのような結果になるか?

    コンパイルエラーが発生する

  • 86

    可変長引数とは? また、可変長引数をあ使うにあたり、注意すべき点を2つ答えよ。

    その数を自由に変更できる引数のこと 以下のように引数の型の直後にピリオド3つを付けて宣言する void Sample(int... num){  //do something } 注意点 ・異なる型はまとめられない ・可変長引数の他にも引数がある場合、この引数は最後に書かなければならない

  • 87

    次のコードはコンパイルエラーが発生する。その理由は? void Sample(int num){  return;  num += 10; }

    return以降のコードが実行されないのは明白であり、このような場合には「到達不可能なコードがある」としてコンパイルエラーを発生させるから

  • 88

    メソッドのオーバーロードとは?

    同名のメソッドを複数宣言する機能のこと 名前が同じでも引数が異なる(シグニチャ) 「戻り値の型」「引数の名前」は同じである必要がある 例えば int calc(double a, int b) に対して正誤判定は以下の通り。 ○ int calc(inta) × double calc(double a, int b)(戻り値の型が異なる、オーバーロードは引数の違いが条件である) × int cal(double num1, int num2)(引数の変数名が異なる)

  • 89

    クラスの継承時に引き継がれないものは?(2つ)

    コンストラクタ privateなメソッド・フィールド

  • 90

    インターフェースのアクセス修飾子を省略した場合にどうなるか?

    全てpublicとして扱われる

  • 91

    クラスの多重継承は可能か?

    不可能である Javaでは ・クラス同士は単一継承のみ可能 ・インターフェース同士は多重継承が可能

  • 92

    インターフェースでメソッドを実装(処理内容を記述すること)するには?

    ・対象メソッドにdefaultを記述する ex) default void sample() {  system.out.println("hoge"); } ・static修飾子をつける この場合、オーバーライドすることは出来ない

  • 93

    オーバーライドとオーバーロードはそれぞれどのようなものか?

    オーバーライド 継承したサブクラスで、同じメソッド名・同じ引数の数・同じ順番で、メソッドを再定義する 👉メソッドのシグニチャ(メソッド名・引数リストの型・数・順番)が同一である必要がある(※戻り値の型は同じ型かそのサブクラスであれば指定できる) オーバーロード 継承したサブクラスで、同じメソッド名・異なる引数の数・異なる順番でメソッドを再定義する

  • 94

    デフォルトメソッドとしてオーバーライドできないクラスは?

    java.lang.Objectクラスに定義されているメソッド

  • 95

    インターフェースAで実現したデフォルトメソッドsampleを、サブクラス内で呼び出すには?

    A.super.sample(); デフォルトメソッドの場合は、 インターフェース名.super.メソッド名 このように呼び出す必要がある

  • 96

    2つ以上の継承をまたいでメソッドを呼び出すには?

    2つ以上の実現や継承の階層をまたぐことは不可能である

  • 97

    抽象クラスとは

    インターフェースとクラスの両方の性質を持ったクラスのこと 実装を持つ具象メソッドと、実装を持たない抽象メソッドの両方を持つことが出来る また、抽象クラスはサブクラスでオーバーライドして実装する必要がある

  • 98

    インターフェースにフィールドは定義できるか?

    定義できる ただし、自動的にpublic static final修飾子が付加される

  • 99

    オーバーライドしたメソッドのアクセス修飾子はどのようなものが指定できるか?

    元のメソッドと同じかそれより緩いアクセス修飾子

  • 情報処理安全確保支援士

    情報処理安全確保支援士

    ユーザ名非公開 · 100問 · 2年前

    情報処理安全確保支援士

    情報処理安全確保支援士

    100問 • 2年前
    ユーザ名非公開

    情報処理安全確保支援士2

    情報処理安全確保支援士2

    ユーザ名非公開 · 97問 · 2年前

    情報処理安全確保支援士2

    情報処理安全確保支援士2

    97問 • 2年前
    ユーザ名非公開

    情報処理安全確保支援士3

    情報処理安全確保支援士3

    ユーザ名非公開 · 45問 · 2年前

    情報処理安全確保支援士3

    情報処理安全確保支援士3

    45問 • 2年前
    ユーザ名非公開

    Java Silver 11 2

    Java Silver 11 2

    ユーザ名非公開 · 7問 · 2年前

    Java Silver 11 2

    Java Silver 11 2

    7問 • 2年前
    ユーザ名非公開

    問題一覧

  • 1

    パッケージの目的は?(3つ)

    名前空間を提供し、名前の衝突を避ける アクセス制御機能を提供する クラスの分類を可能にする

  • 2

    クラスは必ず何かしらのパッケージに含まれる?

    誤りである。 パッケージ宣言を省略した場合は、無名パッケージに属すると解釈される。

  • 3

    パッケージ宣言とは?

    クラスが所属するパッケージをソースコードの先頭行に記述することで宣言すること importの後に宣言するのは誤りである

  • 4

    インポート宣言を省略できるパッケージは何か

    java.langパッケージ

  • 5

    パッケージのインポート宣言を以下のように行う import java.util.*; このとき、サブパッケージ「java.util.regex」に属するクラスも使用可能になるか

    ならない 使用できるのはjava.util内の全てのクラスであり、サブパッケージは使用可能にならない

  • 6

    エントリーポイントとは?

    処理を始めるためのメソッドのこと 要するに「public static void main(String args[])」のことを指す なお、引数にはargs[](String配列型)だけではなく、String... args(可変長引数のString型)も受け取ることが出来る

  • 7

    javacコマンドとは 有効なオプションはなにか

    .javaファイルを読み込み、.classファイルにコンパイルするコマンドのこと -dオプションを用いると、クラスファイルの出力先ディレクトリを指定できる

  • 8

    javaコマンドでコンパイルしていない.javaファイルを指定するとどうなるか

    正常にプログラムが実行される ただし、コンパイル後のクラスファイルはメモリ上に出力される

  • 9

    javaコマンドで拡張子が.javaではないファイルをソースファイルモード(コンパイルをせずに直接実行する)で実行するには?

    オプションに--sourceを指定する

  • 10

    ソースファイルモード(.classにコンパイルせずに実行する)でのjavaコマンド実行時に、publicなクラス名とソースファイル名が一致していないとどうなるか?

    正常に実行される

  • 11

    起動パラメータとは?

    コマンドライン上でのjavaコマンド実行時の引数のこと > java Sample.java a b c このとき「a b c」が起動パラメータである

  • 12

    起動パラメータ(コマンドライン)で「"」を文字列として指定したい場合、どのようにするか

    「¥"」とすることでエスケープを行う

  • 13

    リテラルとは

    ソースコードの中に記述する値のこと 整数、浮動小数点数、真偽、文字の4つのリテラルが存在する

  • 14

    リテラルを明示的にするためにはどのように表記するか

    接頭辞を後ろに付ける 100L(long型)や3.0F(float型)など ちなみに、n進数は以下のように表記する 2進数:0b11011 8進数:077(「0」をつける) 16進数:0x3F

  • 15

    整数リテラルの「_」を用いた数値表現について、守るべきルールを述べよ (※桁数の多い数値リテラルの見やすさを向上させる目的で導入された)

    ・リテラルの先頭と末尾には記載不可 ・記号の前後には記述不可

  • 16

    文字を囲む際の以下の違いは? 「'(シングルクォーテーション)」 「"(ダブルクォーテーション)」

    「'」:文字リテラルを括る 「"」:文字列リテラルを括る

  • 17

    char型の変数に入力できる値は?(3つ)

    ・シングルクォーテーションで括った文字 ・シングルクォーテーションで括った「¥u」からはじまるunicode番号 ・0~65535までの数値 ※1:JavaではUnicodeを標準の文字コードに採用している ※2:char型は16bitのUnicode文字である

  • 18

    識別子(変数、メソッド、クラスなど)に使える記号は?

    「_」と「$」

  • 19

    varはどのようなデータ型か?

    variable type(変数型) ローカル変数の宣言時に型を明示的に書かなくても型を推測してくれるもの ・メソッドの戻り値に適用可能 ・ラムダ式からは推論不可 ・配列の初期化式からは推論不可

  • 20

    Javaのラムダ式とは?

    パラメータを受け取って値を返す短いコードブロックのこと 追記必要

  • 21

    varによる変数宣言が使えないケースとして黒本に記載があったものは何か?(2つ)

    ・フィールドの宣言(クラス内で宣言する変数のこと)には用いることが出来ない ・メソッドの引数にvarを用いて、メソッド内で引数を用いるような関数(=varは代入する値の型から変数の型を推論するが、メソッドのコンパイル時に、どのコードからこのメソッドが使われているかわからないから)

  • 22

    varによる型推論はどのタイミングで行われるか?

    コンパイルのとき(つまりインタンス化した時点) (var A = new B();) でAはB型のオブジェクトであると決定する

  • 23

    finalクラスはどのような特徴を持つか?

    他のクラスによってオーバーライドされない

  • 24

    immutable(不変)なオブジェクトを定義するための方法のひとつとして、全てのフィールドを○○で修飾する

    private

  • 25

    String型はimmutableなオブジェクトだが、これによってどのような影響があるか?

    文字列を変更する場合は新しくインスタンスをつける必要がある 例えば任意のString型のオブジェクトstrにreplaceAll()メソッドを使用した場合、strの中身が置換されるのではなく、strの中身を置換したものを新しいインスタンスに代入しなければならない

  • 26

    StringのメソッドindexOfを使用してStringに存在しない文字列が何番目か調べた場合、どのような挙動が生じるか?

    「-1」をreturnする

  • 27

    Stringクラスのsubstringメソッドは文字列から任意の文字列を取り出すメソッドである。以下の実行結果はどうなるか。 String str = "abcde" system.out.println(str.substring(2,4;))

    cd が出力される (2以上4未満である!)

  • 28

    このコード、なぜコンパイルエラー? str.replace("aa" , 'b');

    引数はchar型(単一文字)かCharSequence型(複数文字)である必要があるから

  • 29

    String型の文字列の後ろに文字列を付け加えるためのメソッドは?

    concat()

  • 30

    式「(文字列) + (数字)」の場合、どのような挙動を起こすか?

    数字が文字として認識され、連結される

  • 31

    "a" + 10 + 20 どうなる?

    文字列a1020になる

  • 32

    String str = null; str += "null"; strはどうなる?

    str = "nullnull"となる

  • 33

    StringBuilder型は何のために存在するか?

    文字列の変更に対して余計はメモリを消費しないため StringBuilderはデフォルトで16文字分のバッファを持っている

  • 34

    appendメソッドはどのようなもの?

    java.lang.StringBuilderクラスのメソッド 文字列に新しい文字列を追加する 可変オブジェクト(StringBuilder)に使用され、新しい文字列オブジェクトの生成を行わない点で優れている

  • 35

    a = 3のとき、以下の式の結果はどうなる? b = a += 5 c = a + b

    16

  • 36

    以下のコードの挙動は? system.out.println(10 * - 20)

    -200 (-20の符号と絶対値が離れていても、文脈上で-20であると判断される)

  • 37

    キャストとは

    ある型から別の型に変換すること (要追記)

  • 38

    Javaにおけるint型、byte型、long型、short型はどのような共通点/相違点を持つか?

    全て整数に関するプリミティブ型 byte型 8bit(-128~127) short型 16bit int型 32bit long型 64bit

  • 39

    数値演算において、演算子の両側のオペランドが異なる場合はどうなる? 例) int c = 2 * 3L (int * longのケースである)

    小さい方の型が大きい方の型に変換される 上記の例の場合、int型(32bit)がlong型(64bit)に変換される ただし、int型(32bit)にlong型(64bit)は代入出来ないので、コンパイルエラーが発生する

  • 40

    floatとdoubleの型の違いは?

    float型 32bit単精度浮動小数点数 double 64bit倍精度浮動小数点数

  • 41

    以下の変数宣言でコンパイルエラーが発生する理由は? float d = 10.0;

    浮動小数点リテラルのデフォルトの型はdouble型であり、この宣言では、小さい範囲のfloat(32bit単精度)に大きい範囲のdouble(64bit倍精度)を代入しようとしているからである

  • 42

    以下の二つの式の答えはどう異なるか a=10とする 1. a = a++ + a + a; 2. a = ++a + a + a;

    1. 32 2. 33 a++はその瞬間は加算対象になっていない ++aはその瞬間から加算対象である

  • 43

    次のコンパイル結果は? boolean a = true boolean b = false system.out.println(a <= b)

    コンパイルエラーが発生する 比較演算子(>, <, <=, >=)は数値の大小を比較するものであり、それ以外は比較できない

  • 44

    インスタンスの同一性と同値性の違いは? それぞれどのように判別するか?

    同一性 全く同じインスタンスを参照している 演算子「==」によって判定可能である 同値性 インスタンスは異なるけれど同じ値を持っている メソッドequalsを用いる (ただし、フィールドの全てが等しいorフィールドの一部が等しいなどの判定基準はクラスの設計者に委ねられる) (したがってオーバーライドを前提とするメソッドである) (デフォルトでは同一性を判定する)

  • 45

    Sample s = (Sample) obj; このコードでは何をしている?

    型のキャスティング objというオブジェクトがSampleクラスの型であることを明示的にしている 元々objがSampleクラスのスーパークラスやサブクラスであった場合でも、Sample型として扱うことが可能である

  • 46

    メソッドのシグネチャとは

    そのメソッドの一意性のこと メソッド名+引数のデータ型・数・名前で判定される 以下は異なるシグネチャのメソッドであり、 public void Sample(int hoge) public void Sample(int hoge, int fuga) 以下は同一シグネチャのメソッドである public void Sample(int hoge) private void Sample(int hoge)

  • 47

    Object a = new Sample(); のようにオブジェクト型でインスタンス化を行うと、どのような影響が生じるか?(具体的なものを1つ)

    Sampleクラスのメソッドやプロパティにアクセスすることは出来なくなる

  • 48

    equalsメソッドをオーバーライドするにあたり、満たさなければいけない条件のうち、重要なものを1つ答えよ

    null意外の参照値xについて、x.equals(null)はfalseを返すこと

  • 49

    String a = "sample"; String b = "sample"; System.out.println(a == b)がtrueを返すのは何故?

    コンスタントプールという仕組みがあるから String型は特殊であり、もし同じ文字列リテラルが複数回登場した場合、定数用のメモリ空間にある文字列インスタンスへの参照が使い回される これにより、メモリ消費を抑制してプログラムを実行できる

  • 50

    if文の{}が省略されたような以下のコードはどのように処理されるか? if(false) system.out.println("A") system.out.println("B")

    条件式の次の式のみがif文の条件に合致したときの処理として実行される つまり、"B"のみ出力される

  • 51

    ifの中括弧を省略しない場合、 ・else lf(条件) ・else  if(条件) ではどのように異なるか?

    ・else if そのまま else ifとして扱われる ・else  if elseの中に更にまた条件分岐が加えられる

  • 52

    switch文はどのように使うか?

    switch (条件式) {  case 値 : 処理   break;  case 値 : 処理   break;  default : 処理   break; } 条件式の戻り値と一致するcase式を実行する

  • 53

    switch文の条件式の戻せる値にはどのようなものがある?(3パターン)

    ・int型以下の整数・そのラッパークラス ・文字・文字列 ・列挙型 long型やdouble型、float型、boolean型などは含まれない

  • 54

    switch文の条件式に入力することが出来ないデータ形式の例は?(2つ)

    ・final宣言していない変数 ・条件式に与えられた変数とデータ型が異なるもの

  • 55

    case式において、break;を記入しないとどうなるか?

    あるcaseが条件に一致した場合、その後ろにある全てのcase式が実行される

  • 56

    do-while文はwhile文と比較してどのような特徴があるか? また、do-whileの構文を答えよ

    条件に合致するかに関わらず、1回は処理が実行される 構文 do {  //繰り返し処理 } while (条件式);

  • 57

    while文やdo-while文で{}を省略した場合の挙動の特徴を述べよ(両方に関係すること1つ/do-whileのみ関係すること1つ)

    ・次の一文のみが繰り返しの対象となる ・do-while文では間に1文(;まで)のみ記述でき、2文以上記述するとコンパイルエラーになる

  • 58

    Javaにおけるfor文の構文を答えよ また、初期化文に関する注意を述べよ

    for( 初期化; 条件文; 更新文 ){  //繰り返し処理 } 初期化分は「,」区切りで複数の変数を宣言できるが、変数は同じ型である必要がある

  • 59

    for文の初期化文で宣言した変数のスコープはどのようになっているか

    for文の中でのみ使用可能であり、ループ外で使うことは出来ない

  • 60

    for文の初期化文、条件文、更新文の3つのうち、複数記述できないものは?

    条件文 ただし、論理演算子を用いて1つにまとめることは可能 例) for (int i = 0, j = 0; i < 3 && j < 5; i++)

  • 61

    for文の更新文の部分に、以下のようにメソッドを記述する for( int i = 0; i < 3; i++, period() ) この時、メソッドperiod()がピリオドをprintlnするメソッドである場合、このメソッドはどんな扱いを受けるか?

    毎回のインクリメントの後に、コンソール上に実行結果が表示される

  • 62

    拡張for文とは?

    簡単に繰り返しを実現出来るfor文のこと 以下のような構文である for( 型 変数名 : 集合){  //繰り返し処理 } 例) String array = {{ "A", "B", "C" }} for( Object obj : array){  //変数objに対する繰り返し処理 } 集合から1つずつ要素を取り出して、それを変数に代入して繰り返し処理を実効する

  • 63

    Javaにおけるラベルとは?

    for文におけるbreakやcontinueの制御移行先を自由に指定できるもの for文のみならず、ifや変数やtry~catchやreturnなど、あらゆる箇所に使用可能である 例) outerLoop: for (int i = 0; i < 5; i++) { // ... }

  • 64

    Javaのプリミティブ型にはどのようなものがあるか?

    整数型(byte,short,int,long) 小数型(float,double) boolean型 文字型(char)

  • 65

    配列の ・型 ・要素数 に関する特徴を述べよ

    ・同じ型、もしくは互換性のある型の値しか使えない ・扱える要素数はインスタンス生成時に決める(後で変更する事は出来ない)

  • 66

    以下の文章は正しいか 配列型変数には値が直接入る

    ‪✕‬ 配列型変数には、配列インスタンスへの参照を代入する

  • 67

    以下のコードの実行結果はどうなるか int array[] = new int[3]; system.out.pirntln(array);

    ハッシュコードが表示される 例)[I@15db9742 (※System.out.println()では、引数のオブジェクトから自動的にtoStringメソッドを呼び出す。しかし、配列はオブジェクトとして扱われ、toString()メソッドをオーバーライドしていない。よって、toString()のデフォルトであるハッシュコード16進数表現がそのまま表示される)

  • 68

    配列型変数の宣言はどのように行う?

    文字列または変数名の後ろに[]を付与する 例) int [] arrayA int arrayB[] int[][] arrayC int arrayD[][] int[] arrayE[][] (※1) int[][] arrayF[] (※2) ※1 これは3次元配列である ※2 これは3次元配列である

  • 69

    次のスクリプトはなぜコンパイルエラーになるか? int[2] array;

    要素数は指定できないから 配列型変数はあくまで配列インスタンスへの参照を代入するだけであり、参照先の配列がいくつの要素を扱えるかは関係ない

  • 70

    以下のコードはそれぞれコンパイルエラーになるか A. int[][] a = new int[2][]; B. int[][] b = new int[][2];

    A.コンパイルエラーにならない 1次元目の配列インスタンスを生成し、2次元目をあとから生成することが可能なので B.コンパイルエラーになる 1次元目の要素数を省力することはできない、必ず1次元目の要素→2次元目の要素、と処理される

  • 71

    Itemクラスの配列をインスタンス化する Item[] items = new Item[3]; この時、itemsの中身はどのようになっているか?

    全てnullである

  • 72

    以下のコードはなぜコンパイルエラーになる? int[] array = new int[];

    配列のインスタンス化の時に要素数をしていないから

  • 73

    配列の初期化(初期宣言)はどのように行うか 2パターン答えよ

    int array = { 2, 3 } int array = new int[] { 2, 3 } ※newと初期化を同時に行う場合は、インスタンス化でも[]の中に要素数を指定してはいけない。[]の数で次元数を、{}で初期化値を表している。

  • 74

    以下のコードはコンパイルエラーになるか int [][] array = {};

    コンパイルエラーにならない 初期化子の{}が必要な次元数(具体例では2次元)を自動的に算出し、必要な初期化を行うから

  • 75

    以下のコードはコンパイルエラーになるか? int e[]; e = {2,3};

    コンパイルエラーになる 初期化子を用いたインスタンス化と初期化は「;」で分けて行うことはできない

  • 76

    クラス間で継承の関係にあるとき、以下のコードはコンパイル/実行可能か? A[] array = new B[]{ new B(), new B() };

    コンパイル/実行可能である 継承関係にある型同士であれば配列として扱える

  • 77

    型変換の「自動型変換」「明示的変換」はそれぞれどのように異なるか?

    自動型変換 コンパイラによって自動的に行われる型変換、主に小さいデータ型(整数)から大きいデータ型(小数)への変換が該当する int myInt = 9; double myDouble = myInt; 明示的変換 キャスト演算子を用いて明示的に型変換を行うこと double myDouble = 9.78; int myInt = (int) myDouble; //出力 9.0

  • 78

    配列のclone()メソッドにより複製された配列は存在としてどのようなものか?

    元の配列の参照先にある配列インスタンスを複製したインスタンスへの参照が代入されている(別物である) つまり、これらを「==」演算子で判定しても、falseが返される

  • 79

    static修飾子はどのようなものか?

    static修飾子をつけると、インスタンス化せずとも呼び出すことが可能である。 例えばpublic class SampleにSampleFieldというメンバ変数、SampleMethod()というメソッドがあったとする。 static修飾子がつかない場合は、インスタンス化により他クラスから利用する必要があるが、staticの場合は、いきなりSample.SampleFieldと呼び出せたり、Sample.SampleMethodと呼び出せたりする。 更にこれらメンバ変数やメソッドの利用によりメンバ変数の値が書き換えられた場合、クラスのメンバ変数そのものに影響を及ぼしうる。

  • 80

    Javaにおいて、参照型が何も参照していない状態を「NULL」と表現するのは可能か?

    不可能である。 NULLといった表記は存在していない。

  • 81

    Javaにおけるガベージコレクションとはなにか? どのような時に発生するか?

    インスタンスを破棄すること。 インスタンスがどこからも参照されなくなるとき、ガベージコレクションが発生する。(インスタンスは参照型の変数を経由してのみ扱うことが可能であり、またメモリ上に作られるため、無制限に作るとメモリ空間を使い切ってしまう)

  • 82

    クラスSample内で、以下の変数を宣言する。 static int num = 10; その後、別クラスで以下のような操作を行った。 Sample s = new Sample(); s.num = 20; system.out.pirntln("Sample.num"); 出力される結果は?

    20 static変数の場合、インスタンス化したメンバ変数の数値を変えても、元のクラスのメンバ変数に影響を与える

  • 83

    staticなメソッドから非staticなメンバ変数にアクセスすることは可能か?

    不可能である staticメソッドはインスタンス化なしで使えるが、非staticなメンバ変数はインスタンス化を必要とし、存在しないものを呼び出してしまうからである

  • 84

    以下のメソッドはコンパイルエラーになるか int method(int num) {  System.out.println(num); }

    コンパイルエラーになる 戻り値がint型であるのにも関わらず、何もreturnしていないからである

  • 85

    voidを返すsetterメソッドがある 例えば String val = s.setter("hogehoge"); のように変数に代入しようとすると、どのような結果になるか?

    コンパイルエラーが発生する

  • 86

    可変長引数とは? また、可変長引数をあ使うにあたり、注意すべき点を2つ答えよ。

    その数を自由に変更できる引数のこと 以下のように引数の型の直後にピリオド3つを付けて宣言する void Sample(int... num){  //do something } 注意点 ・異なる型はまとめられない ・可変長引数の他にも引数がある場合、この引数は最後に書かなければならない

  • 87

    次のコードはコンパイルエラーが発生する。その理由は? void Sample(int num){  return;  num += 10; }

    return以降のコードが実行されないのは明白であり、このような場合には「到達不可能なコードがある」としてコンパイルエラーを発生させるから

  • 88

    メソッドのオーバーロードとは?

    同名のメソッドを複数宣言する機能のこと 名前が同じでも引数が異なる(シグニチャ) 「戻り値の型」「引数の名前」は同じである必要がある 例えば int calc(double a, int b) に対して正誤判定は以下の通り。 ○ int calc(inta) × double calc(double a, int b)(戻り値の型が異なる、オーバーロードは引数の違いが条件である) × int cal(double num1, int num2)(引数の変数名が異なる)

  • 89

    クラスの継承時に引き継がれないものは?(2つ)

    コンストラクタ privateなメソッド・フィールド

  • 90

    インターフェースのアクセス修飾子を省略した場合にどうなるか?

    全てpublicとして扱われる

  • 91

    クラスの多重継承は可能か?

    不可能である Javaでは ・クラス同士は単一継承のみ可能 ・インターフェース同士は多重継承が可能

  • 92

    インターフェースでメソッドを実装(処理内容を記述すること)するには?

    ・対象メソッドにdefaultを記述する ex) default void sample() {  system.out.println("hoge"); } ・static修飾子をつける この場合、オーバーライドすることは出来ない

  • 93

    オーバーライドとオーバーロードはそれぞれどのようなものか?

    オーバーライド 継承したサブクラスで、同じメソッド名・同じ引数の数・同じ順番で、メソッドを再定義する 👉メソッドのシグニチャ(メソッド名・引数リストの型・数・順番)が同一である必要がある(※戻り値の型は同じ型かそのサブクラスであれば指定できる) オーバーロード 継承したサブクラスで、同じメソッド名・異なる引数の数・異なる順番でメソッドを再定義する

  • 94

    デフォルトメソッドとしてオーバーライドできないクラスは?

    java.lang.Objectクラスに定義されているメソッド

  • 95

    インターフェースAで実現したデフォルトメソッドsampleを、サブクラス内で呼び出すには?

    A.super.sample(); デフォルトメソッドの場合は、 インターフェース名.super.メソッド名 このように呼び出す必要がある

  • 96

    2つ以上の継承をまたいでメソッドを呼び出すには?

    2つ以上の実現や継承の階層をまたぐことは不可能である

  • 97

    抽象クラスとは

    インターフェースとクラスの両方の性質を持ったクラスのこと 実装を持つ具象メソッドと、実装を持たない抽象メソッドの両方を持つことが出来る また、抽象クラスはサブクラスでオーバーライドして実装する必要がある

  • 98

    インターフェースにフィールドは定義できるか?

    定義できる ただし、自動的にpublic static final修飾子が付加される

  • 99

    オーバーライドしたメソッドのアクセス修飾子はどのようなものが指定できるか?

    元のメソッドと同じかそれより緩いアクセス修飾子