Java SE Bronzeに必要な基礎知識をメモ
基本データ型
データ型 | サイズ(bit) |
---|---|
byte | 8 |
short | 16 |
int | 32 |
long | 64 |
float | 32 |
double | 64 |
char | 16 |
boolean | 1 |
予約語
abstract | assert | boolean | break | byte | case | volatile |
catch | char | class | const | continue | default | while |
do | double | eles | enum | extends | final | void |
finally | float | for | goto | if | implements | try |
import | instanceof | int | interface | long | native | transient |
new | package | private | protected | public | return | throws |
short | static | strictfp | super | switch | synchronized | throw |
this |
算術演算子
演算子 | 記述例 | 説明 |
---|---|---|
+ | a+b | aとbを加算 |
- | a-b | aからbを減算 |
* | a*b | aとbを乗算 |
/ | a/b | aとbを除算 |
% | a%b | aをbで除算した余り |
演算子(優先順)
演算子 | 結合規則 |
---|---|
++ -- + - ~ ! | 右 |
* / % | 左 |
<< >> >>> | 左 |
< > <= >= instanceof | 左 |
== != | 左 |
& | 左 |
^ | 左 |
| | 左 |
&& | 左 |
|| | 左 |
?? | 左 |
?: | 右 |
= *= /= %= += -= <<= >>= >>>= &= ^= != | 右 |
単項演算子(例)
aの初期値 | 式 | 実行後のa | 実行後のb | 説明 |
---|---|---|---|---|
10 | b= ++1 | 11 | 11 | 計算してから代入 |
10 | b = a++ | 11 | 10 | 代入してから計算 |
10 | b = --a | 9 | 9 | 計算してから代入 |
10 | b = a-- | 9 | 10 | 代入してから計算 |
if else if else 文
if (条件式) {
処理文1
else if (条件式) {
処理文2
} else {
処理文3
}
条件演算子
条件式 ? 式1 : 式2
switch文
switch (式) {
case 定数1 :
処理1
continue; // <- 次の条件へ続く
処理2 // 残りの処理はスキップ
case 定数2 :
処理2
break; // <- switchから抜ける
・・・・
default :
処理n;
}
//結果はbyte,char,short,int,enum,stringである
while文
while (条件式) {
処理;
}
do while 文
do {
処理;
} while (条件式);
※ do-while文とwhile分の違いは条件判定が行われるタイミング
for文
ラベル名 :
for (式1,式2,式3) {
処理;
for (式1,式2,式3) {
break ラベル名 // <- 外側のforから抜ける
}
}
//拡張型
for (変数宣言 : 参照変数名) {
処理;
}
//配列などを指定して実行させる
クラスの定義
class クラス名 {}
変数の定義
データ型 メンバ変数名;
メソッドの定義
戻り値の型 メソッド名(引数リスト) {}
インスタンス化
データ型 変数名 = new クラス名();
static変数
クラス名.static 変数名 || クラス名.static.メソッド名 //呼び出し
アクセス修飾子とカプセル化
アクセスの幅が広い順
アクセス修飾子 | クラス | コンストラクタ | メンバ変 数 | メソッド |
---|---|---|---|---|
public | ok | ok | ok | ok |
protected | ng | ok | ok | ok |
デフォルト(指定なし) | ok | ok | ok | ok |
private | ng | ok | ok | ok |
※ protectedとprivateはクラスに指定することはできない
推奨されているアクセスルール
- インスタンス変数はprivateにする
- メソッドはアクセスをpubicにする
スーパークラスとサブクラス(受け継ぐ)
class サブクラス名 extends スーパークラス名 {}
final
// サブクラスでオーバーライドできなくする
final 戻り値の型 メソッド名(引数リスト) {} //メソッドに適応
// 定数にする
final class クラス名 {} //クラスに適応
this
this.変数名 // 自オブジェクトがもつ変数
super
super.メソッド名 //サブクラスでスーパークラスのメソッドを呼び出している
抽象クラスとメソッド
abstract class クラス名 {} //クラス
abstract 戻り値の型 メソッド名(引数リスト); // メソッド
// 処理を持たないので、{}せず;で終わる
インターフェイス
// インターフェイスとは公開すべき操作をまとめたクラスの仕様
// classではなくinterfaceキーワードを仕様する
interface インターフェイス名 {}
- 変数は定数のみ
- インスタンス化できないので実装クラスを定義する
- 抽象メソッドをすべてオーバーライドする
- 実装クラスを定義するにはimplementsを使用
- サブインターフェイスを宣言するにはextendsを使用