Java Silver 11
問題一覧
1
名前空間を提供し、名前の衝突を避ける アクセス制御機能を提供する クラスの分類を可能にする
2
誤りである。 パッケージ宣言を省略した場合は、無名パッケージに属すると解釈される。
3
クラスが所属するパッケージをソースコードの先頭行に記述することで宣言すること importの後に宣言するのは誤りである
4
java.langパッケージ
5
ならない 使用できるのはjava.util内の全てのクラスであり、サブパッケージは使用可能にならない
6
処理を始めるためのメソッドのこと 要するに「public static void main(String args[])」のことを指す なお、引数にはargs[](String配列型)だけではなく、String... args(可変長引数のString型)も受け取ることが出来る
7
.javaファイルを読み込み、.classファイルにコンパイルするコマンドのこと -dオプションを用いると、クラスファイルの出力先ディレクトリを指定できる
8
正常にプログラムが実行される ただし、コンパイル後のクラスファイルはメモリ上に出力される
9
オプションに--sourceを指定する
10
正常に実行される
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
・シングルクォーテーションで括った文字 ・シングルクォーテーションで括った「¥u」からはじまるunicode番号 ・0~65535までの数値 ※1:JavaではUnicodeを標準の文字コードに採用している ※2:char型は16bitのUnicode文字である
18
「_」と「$」
19
variable type(変数型) ローカル変数の宣言時に型を明示的に書かなくても型を推測してくれるもの ・メソッドの戻り値に適用可能 ・ラムダ式からは推論不可 ・配列の初期化式からは推論不可
20
パラメータを受け取って値を返す短いコードブロックのこと 追記必要
21
・フィールドの宣言(クラス内で宣言する変数のこと)には用いることが出来ない ・メソッドの引数にvarを用いて、メソッド内で引数を用いるような関数(=varは代入する値の型から変数の型を推論するが、メソッドのコンパイル時に、どのコードからこのメソッドが使われているかわからないから)
22
コンパイルのとき(つまりインタンス化した時点) (var A = new B();) でAはB型のオブジェクトであると決定する
23
他のクラスによってオーバーライドされない
24
private
25
文字列を変更する場合は新しくインスタンスをつける必要がある 例えば任意のString型のオブジェクトstrにreplaceAll()メソッドを使用した場合、strの中身が置換されるのではなく、strの中身を置換したものを新しいインスタンスに代入しなければならない
26
「-1」をreturnする
27
cd が出力される (2以上4未満である!)
28
引数はchar型(単一文字)かCharSequence型(複数文字)である必要があるから
29
concat()
30
数字が文字として認識され、連結される
31
文字列a1020になる
32
str = "nullnull"となる
33
文字列の変更に対して余計はメモリを消費しないため StringBuilderはデフォルトで16文字分のバッファを持っている
34
java.lang.StringBuilderクラスのメソッド 文字列に新しい文字列を追加する 可変オブジェクト(StringBuilder)に使用され、新しい文字列オブジェクトの生成を行わない点で優れている
35
16
36
-200 (-20の符号と絶対値が離れていても、文脈上で-20であると判断される)
37
ある型から別の型に変換すること (要追記)
38
全て整数に関するプリミティブ型 byte型 8bit(-128~127) short型 16bit int型 32bit long型 64bit
39
小さい方の型が大きい方の型に変換される 上記の例の場合、int型(32bit)がlong型(64bit)に変換される ただし、int型(32bit)にlong型(64bit)は代入出来ないので、コンパイルエラーが発生する
40
float型 32bit単精度浮動小数点数 double 64bit倍精度浮動小数点数
41
浮動小数点リテラルのデフォルトの型はdouble型であり、この宣言では、小さい範囲のfloat(32bit単精度)に大きい範囲のdouble(64bit倍精度)を代入しようとしているからである
42
1. 32 2. 33 a++はその瞬間は加算対象になっていない ++aはその瞬間から加算対象である
43
コンパイルエラーが発生する 比較演算子(>, <, <=, >=)は数値の大小を比較するものであり、それ以外は比較できない
44
同一性 全く同じインスタンスを参照している 演算子「==」によって判定可能である 同値性 インスタンスは異なるけれど同じ値を持っている メソッドequalsを用いる (ただし、フィールドの全てが等しいorフィールドの一部が等しいなどの判定基準はクラスの設計者に委ねられる) (したがってオーバーライドを前提とするメソッドである) (デフォルトでは同一性を判定する)
45
型のキャスティング 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
Sampleクラスのメソッドやプロパティにアクセスすることは出来なくなる
48
null意外の参照値xについて、x.equals(null)はfalseを返すこと
49
コンスタントプールという仕組みがあるから String型は特殊であり、もし同じ文字列リテラルが複数回登場した場合、定数用のメモリ空間にある文字列インスタンスへの参照が使い回される これにより、メモリ消費を抑制してプログラムを実行できる
50
条件式の次の式のみがif文の条件に合致したときの処理として実行される つまり、"B"のみ出力される
51
・else if そのまま else ifとして扱われる ・else if elseの中に更にまた条件分岐が加えられる
52
switch (条件式) { case 値 : 処理 break; case 値 : 処理 break; default : 処理 break; } 条件式の戻り値と一致するcase式を実行する
53
・int型以下の整数・そのラッパークラス ・文字・文字列 ・列挙型 long型やdouble型、float型、boolean型などは含まれない
54
・final宣言していない変数 ・条件式に与えられた変数とデータ型が異なるもの
55
あるcaseが条件に一致した場合、その後ろにある全てのcase式が実行される
56
条件に合致するかに関わらず、1回は処理が実行される 構文 do { //繰り返し処理 } while (条件式);
57
・次の一文のみが繰り返しの対象となる ・do-while文では間に1文(;まで)のみ記述でき、2文以上記述するとコンパイルエラーになる
58
for( 初期化; 条件文; 更新文 ){ //繰り返し処理 } 初期化分は「,」区切りで複数の変数を宣言できるが、変数は同じ型である必要がある
59
for文の中でのみ使用可能であり、ループ外で使うことは出来ない
60
条件文 ただし、論理演算子を用いて1つにまとめることは可能 例) for (int i = 0, j = 0; i < 3 && j < 5; i++)
61
毎回のインクリメントの後に、コンソール上に実行結果が表示される
62
簡単に繰り返しを実現出来るfor文のこと 以下のような構文である for( 型 変数名 : 集合){ //繰り返し処理 } 例) String array = {{ "A", "B", "C" }} for( Object obj : array){ //変数objに対する繰り返し処理 } 集合から1つずつ要素を取り出して、それを変数に代入して繰り返し処理を実効する
63
for文におけるbreakやcontinueの制御移行先を自由に指定できるもの for文のみならず、ifや変数やtry~catchやreturnなど、あらゆる箇所に使用可能である 例) outerLoop: for (int i = 0; i < 5; i++) { // ... }
64
整数型(byte,short,int,long) 小数型(float,double) boolean型 文字型(char)
65
・同じ型、もしくは互換性のある型の値しか使えない ・扱える要素数はインスタンス生成時に決める(後で変更する事は出来ない)
66
✕ 配列型変数には、配列インスタンスへの参照を代入する
67
ハッシュコードが表示される 例)[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
要素数は指定できないから 配列型変数はあくまで配列インスタンスへの参照を代入するだけであり、参照先の配列がいくつの要素を扱えるかは関係ない
70
A.コンパイルエラーにならない 1次元目の配列インスタンスを生成し、2次元目をあとから生成することが可能なので B.コンパイルエラーになる 1次元目の要素数を省力することはできない、必ず1次元目の要素→2次元目の要素、と処理される
71
全てnullである
72
配列のインスタンス化の時に要素数をしていないから
73
int array = { 2, 3 } int array = new int[] { 2, 3 } ※newと初期化を同時に行う場合は、インスタンス化でも[]の中に要素数を指定してはいけない。[]の数で次元数を、{}で初期化値を表している。
74
コンパイルエラーにならない 初期化子の{}が必要な次元数(具体例では2次元)を自動的に算出し、必要な初期化を行うから
75
コンパイルエラーになる 初期化子を用いたインスタンス化と初期化は「;」で分けて行うことはできない
76
コンパイル/実行可能である 継承関係にある型同士であれば配列として扱える
77
自動型変換 コンパイラによって自動的に行われる型変換、主に小さいデータ型(整数)から大きいデータ型(小数)への変換が該当する int myInt = 9; double myDouble = myInt; 明示的変換 キャスト演算子を用いて明示的に型変換を行うこと double myDouble = 9.78; int myInt = (int) myDouble; //出力 9.0
78
元の配列の参照先にある配列インスタンスを複製したインスタンスへの参照が代入されている(別物である) つまり、これらを「==」演算子で判定しても、falseが返される
79
static修飾子をつけると、インスタンス化せずとも呼び出すことが可能である。 例えばpublic class SampleにSampleFieldというメンバ変数、SampleMethod()というメソッドがあったとする。 static修飾子がつかない場合は、インスタンス化により他クラスから利用する必要があるが、staticの場合は、いきなりSample.SampleFieldと呼び出せたり、Sample.SampleMethodと呼び出せたりする。 更にこれらメンバ変数やメソッドの利用によりメンバ変数の値が書き換えられた場合、クラスのメンバ変数そのものに影響を及ぼしうる。
80
不可能である。 NULLといった表記は存在していない。
81
インスタンスを破棄すること。 インスタンスがどこからも参照されなくなるとき、ガベージコレクションが発生する。(インスタンスは参照型の変数を経由してのみ扱うことが可能であり、またメモリ上に作られるため、無制限に作るとメモリ空間を使い切ってしまう)
82
20 static変数の場合、インスタンス化したメンバ変数の数値を変えても、元のクラスのメンバ変数に影響を与える
83
不可能である staticメソッドはインスタンス化なしで使えるが、非staticなメンバ変数はインスタンス化を必要とし、存在しないものを呼び出してしまうからである
84
コンパイルエラーになる 戻り値がint型であるのにも関わらず、何もreturnしていないからである
85
コンパイルエラーが発生する
86
その数を自由に変更できる引数のこと 以下のように引数の型の直後にピリオド3つを付けて宣言する void Sample(int... num){ //do something } 注意点 ・異なる型はまとめられない ・可変長引数の他にも引数がある場合、この引数は最後に書かなければならない
87
return以降のコードが実行されないのは明白であり、このような場合には「到達不可能なコードがある」としてコンパイルエラーを発生させるから
88
同名のメソッドを複数宣言する機能のこと 名前が同じでも引数が異なる(シグニチャ) 「戻り値の型」「引数の名前」は同じである必要がある 例えば int calc(double a, int b) に対して正誤判定は以下の通り。 ○ int calc(inta) × double calc(double a, int b)(戻り値の型が異なる、オーバーロードは引数の違いが条件である) × int cal(double num1, int num2)(引数の変数名が異なる)
89
コンストラクタ privateなメソッド・フィールド
90
全てpublicとして扱われる
91
不可能である Javaでは ・クラス同士は単一継承のみ可能 ・インターフェース同士は多重継承が可能
92
・対象メソッドにdefaultを記述する ex) default void sample() { system.out.println("hoge"); } ・static修飾子をつける この場合、オーバーライドすることは出来ない
93
オーバーライド 継承したサブクラスで、同じメソッド名・同じ引数の数・同じ順番で、メソッドを再定義する 👉メソッドのシグニチャ(メソッド名・引数リストの型・数・順番)が同一である必要がある(※戻り値の型は同じ型かそのサブクラスであれば指定できる) オーバーロード 継承したサブクラスで、同じメソッド名・異なる引数の数・異なる順番でメソッドを再定義する
94
java.lang.Objectクラスに定義されているメソッド
95
A.super.sample(); デフォルトメソッドの場合は、 インターフェース名.super.メソッド名 このように呼び出す必要がある
96
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
名前空間を提供し、名前の衝突を避ける アクセス制御機能を提供する クラスの分類を可能にする
2
誤りである。 パッケージ宣言を省略した場合は、無名パッケージに属すると解釈される。
3
クラスが所属するパッケージをソースコードの先頭行に記述することで宣言すること importの後に宣言するのは誤りである
4
java.langパッケージ
5
ならない 使用できるのはjava.util内の全てのクラスであり、サブパッケージは使用可能にならない
6
処理を始めるためのメソッドのこと 要するに「public static void main(String args[])」のことを指す なお、引数にはargs[](String配列型)だけではなく、String... args(可変長引数のString型)も受け取ることが出来る
7
.javaファイルを読み込み、.classファイルにコンパイルするコマンドのこと -dオプションを用いると、クラスファイルの出力先ディレクトリを指定できる
8
正常にプログラムが実行される ただし、コンパイル後のクラスファイルはメモリ上に出力される
9
オプションに--sourceを指定する
10
正常に実行される
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
・シングルクォーテーションで括った文字 ・シングルクォーテーションで括った「¥u」からはじまるunicode番号 ・0~65535までの数値 ※1:JavaではUnicodeを標準の文字コードに採用している ※2:char型は16bitのUnicode文字である
18
「_」と「$」
19
variable type(変数型) ローカル変数の宣言時に型を明示的に書かなくても型を推測してくれるもの ・メソッドの戻り値に適用可能 ・ラムダ式からは推論不可 ・配列の初期化式からは推論不可
20
パラメータを受け取って値を返す短いコードブロックのこと 追記必要
21
・フィールドの宣言(クラス内で宣言する変数のこと)には用いることが出来ない ・メソッドの引数にvarを用いて、メソッド内で引数を用いるような関数(=varは代入する値の型から変数の型を推論するが、メソッドのコンパイル時に、どのコードからこのメソッドが使われているかわからないから)
22
コンパイルのとき(つまりインタンス化した時点) (var A = new B();) でAはB型のオブジェクトであると決定する
23
他のクラスによってオーバーライドされない
24
private
25
文字列を変更する場合は新しくインスタンスをつける必要がある 例えば任意のString型のオブジェクトstrにreplaceAll()メソッドを使用した場合、strの中身が置換されるのではなく、strの中身を置換したものを新しいインスタンスに代入しなければならない
26
「-1」をreturnする
27
cd が出力される (2以上4未満である!)
28
引数はchar型(単一文字)かCharSequence型(複数文字)である必要があるから
29
concat()
30
数字が文字として認識され、連結される
31
文字列a1020になる
32
str = "nullnull"となる
33
文字列の変更に対して余計はメモリを消費しないため StringBuilderはデフォルトで16文字分のバッファを持っている
34
java.lang.StringBuilderクラスのメソッド 文字列に新しい文字列を追加する 可変オブジェクト(StringBuilder)に使用され、新しい文字列オブジェクトの生成を行わない点で優れている
35
16
36
-200 (-20の符号と絶対値が離れていても、文脈上で-20であると判断される)
37
ある型から別の型に変換すること (要追記)
38
全て整数に関するプリミティブ型 byte型 8bit(-128~127) short型 16bit int型 32bit long型 64bit
39
小さい方の型が大きい方の型に変換される 上記の例の場合、int型(32bit)がlong型(64bit)に変換される ただし、int型(32bit)にlong型(64bit)は代入出来ないので、コンパイルエラーが発生する
40
float型 32bit単精度浮動小数点数 double 64bit倍精度浮動小数点数
41
浮動小数点リテラルのデフォルトの型はdouble型であり、この宣言では、小さい範囲のfloat(32bit単精度)に大きい範囲のdouble(64bit倍精度)を代入しようとしているからである
42
1. 32 2. 33 a++はその瞬間は加算対象になっていない ++aはその瞬間から加算対象である
43
コンパイルエラーが発生する 比較演算子(>, <, <=, >=)は数値の大小を比較するものであり、それ以外は比較できない
44
同一性 全く同じインスタンスを参照している 演算子「==」によって判定可能である 同値性 インスタンスは異なるけれど同じ値を持っている メソッドequalsを用いる (ただし、フィールドの全てが等しいorフィールドの一部が等しいなどの判定基準はクラスの設計者に委ねられる) (したがってオーバーライドを前提とするメソッドである) (デフォルトでは同一性を判定する)
45
型のキャスティング 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
Sampleクラスのメソッドやプロパティにアクセスすることは出来なくなる
48
null意外の参照値xについて、x.equals(null)はfalseを返すこと
49
コンスタントプールという仕組みがあるから String型は特殊であり、もし同じ文字列リテラルが複数回登場した場合、定数用のメモリ空間にある文字列インスタンスへの参照が使い回される これにより、メモリ消費を抑制してプログラムを実行できる
50
条件式の次の式のみがif文の条件に合致したときの処理として実行される つまり、"B"のみ出力される
51
・else if そのまま else ifとして扱われる ・else if elseの中に更にまた条件分岐が加えられる
52
switch (条件式) { case 値 : 処理 break; case 値 : 処理 break; default : 処理 break; } 条件式の戻り値と一致するcase式を実行する
53
・int型以下の整数・そのラッパークラス ・文字・文字列 ・列挙型 long型やdouble型、float型、boolean型などは含まれない
54
・final宣言していない変数 ・条件式に与えられた変数とデータ型が異なるもの
55
あるcaseが条件に一致した場合、その後ろにある全てのcase式が実行される
56
条件に合致するかに関わらず、1回は処理が実行される 構文 do { //繰り返し処理 } while (条件式);
57
・次の一文のみが繰り返しの対象となる ・do-while文では間に1文(;まで)のみ記述でき、2文以上記述するとコンパイルエラーになる
58
for( 初期化; 条件文; 更新文 ){ //繰り返し処理 } 初期化分は「,」区切りで複数の変数を宣言できるが、変数は同じ型である必要がある
59
for文の中でのみ使用可能であり、ループ外で使うことは出来ない
60
条件文 ただし、論理演算子を用いて1つにまとめることは可能 例) for (int i = 0, j = 0; i < 3 && j < 5; i++)
61
毎回のインクリメントの後に、コンソール上に実行結果が表示される
62
簡単に繰り返しを実現出来るfor文のこと 以下のような構文である for( 型 変数名 : 集合){ //繰り返し処理 } 例) String array = {{ "A", "B", "C" }} for( Object obj : array){ //変数objに対する繰り返し処理 } 集合から1つずつ要素を取り出して、それを変数に代入して繰り返し処理を実効する
63
for文におけるbreakやcontinueの制御移行先を自由に指定できるもの for文のみならず、ifや変数やtry~catchやreturnなど、あらゆる箇所に使用可能である 例) outerLoop: for (int i = 0; i < 5; i++) { // ... }
64
整数型(byte,short,int,long) 小数型(float,double) boolean型 文字型(char)
65
・同じ型、もしくは互換性のある型の値しか使えない ・扱える要素数はインスタンス生成時に決める(後で変更する事は出来ない)
66
✕ 配列型変数には、配列インスタンスへの参照を代入する
67
ハッシュコードが表示される 例)[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
要素数は指定できないから 配列型変数はあくまで配列インスタンスへの参照を代入するだけであり、参照先の配列がいくつの要素を扱えるかは関係ない
70
A.コンパイルエラーにならない 1次元目の配列インスタンスを生成し、2次元目をあとから生成することが可能なので B.コンパイルエラーになる 1次元目の要素数を省力することはできない、必ず1次元目の要素→2次元目の要素、と処理される
71
全てnullである
72
配列のインスタンス化の時に要素数をしていないから
73
int array = { 2, 3 } int array = new int[] { 2, 3 } ※newと初期化を同時に行う場合は、インスタンス化でも[]の中に要素数を指定してはいけない。[]の数で次元数を、{}で初期化値を表している。
74
コンパイルエラーにならない 初期化子の{}が必要な次元数(具体例では2次元)を自動的に算出し、必要な初期化を行うから
75
コンパイルエラーになる 初期化子を用いたインスタンス化と初期化は「;」で分けて行うことはできない
76
コンパイル/実行可能である 継承関係にある型同士であれば配列として扱える
77
自動型変換 コンパイラによって自動的に行われる型変換、主に小さいデータ型(整数)から大きいデータ型(小数)への変換が該当する int myInt = 9; double myDouble = myInt; 明示的変換 キャスト演算子を用いて明示的に型変換を行うこと double myDouble = 9.78; int myInt = (int) myDouble; //出力 9.0
78
元の配列の参照先にある配列インスタンスを複製したインスタンスへの参照が代入されている(別物である) つまり、これらを「==」演算子で判定しても、falseが返される
79
static修飾子をつけると、インスタンス化せずとも呼び出すことが可能である。 例えばpublic class SampleにSampleFieldというメンバ変数、SampleMethod()というメソッドがあったとする。 static修飾子がつかない場合は、インスタンス化により他クラスから利用する必要があるが、staticの場合は、いきなりSample.SampleFieldと呼び出せたり、Sample.SampleMethodと呼び出せたりする。 更にこれらメンバ変数やメソッドの利用によりメンバ変数の値が書き換えられた場合、クラスのメンバ変数そのものに影響を及ぼしうる。
80
不可能である。 NULLといった表記は存在していない。
81
インスタンスを破棄すること。 インスタンスがどこからも参照されなくなるとき、ガベージコレクションが発生する。(インスタンスは参照型の変数を経由してのみ扱うことが可能であり、またメモリ上に作られるため、無制限に作るとメモリ空間を使い切ってしまう)
82
20 static変数の場合、インスタンス化したメンバ変数の数値を変えても、元のクラスのメンバ変数に影響を与える
83
不可能である staticメソッドはインスタンス化なしで使えるが、非staticなメンバ変数はインスタンス化を必要とし、存在しないものを呼び出してしまうからである
84
コンパイルエラーになる 戻り値がint型であるのにも関わらず、何もreturnしていないからである
85
コンパイルエラーが発生する
86
その数を自由に変更できる引数のこと 以下のように引数の型の直後にピリオド3つを付けて宣言する void Sample(int... num){ //do something } 注意点 ・異なる型はまとめられない ・可変長引数の他にも引数がある場合、この引数は最後に書かなければならない
87
return以降のコードが実行されないのは明白であり、このような場合には「到達不可能なコードがある」としてコンパイルエラーを発生させるから
88
同名のメソッドを複数宣言する機能のこと 名前が同じでも引数が異なる(シグニチャ) 「戻り値の型」「引数の名前」は同じである必要がある 例えば int calc(double a, int b) に対して正誤判定は以下の通り。 ○ int calc(inta) × double calc(double a, int b)(戻り値の型が異なる、オーバーロードは引数の違いが条件である) × int cal(double num1, int num2)(引数の変数名が異なる)
89
コンストラクタ privateなメソッド・フィールド
90
全てpublicとして扱われる
91
不可能である Javaでは ・クラス同士は単一継承のみ可能 ・インターフェース同士は多重継承が可能
92
・対象メソッドにdefaultを記述する ex) default void sample() { system.out.println("hoge"); } ・static修飾子をつける この場合、オーバーライドすることは出来ない
93
オーバーライド 継承したサブクラスで、同じメソッド名・同じ引数の数・同じ順番で、メソッドを再定義する 👉メソッドのシグニチャ(メソッド名・引数リストの型・数・順番)が同一である必要がある(※戻り値の型は同じ型かそのサブクラスであれば指定できる) オーバーロード 継承したサブクラスで、同じメソッド名・異なる引数の数・異なる順番でメソッドを再定義する
94
java.lang.Objectクラスに定義されているメソッド
95
A.super.sample(); デフォルトメソッドの場合は、 インターフェース名.super.メソッド名 このように呼び出す必要がある
96
2つ以上の実現や継承の階層をまたぐことは不可能である
97
インターフェースとクラスの両方の性質を持ったクラスのこと 実装を持つ具象メソッドと、実装を持たない抽象メソッドの両方を持つことが出来る また、抽象クラスはサブクラスでオーバーライドして実装する必要がある
98
定義できる ただし、自動的にpublic static final修飾子が付加される
99
元のメソッドと同じかそれより緩いアクセス修飾子