Javaの文法

2021-11-14 (日) 12:02:16

Javaの文法

データ型

基本データ型

  • byte
  • short
  • int
  • long
  • float
  • double
  • char
  • boolean

参照型

配列

  • 宣言
    • <data-type>[] <name>;
  • サイズ確保
    • <name> = new <data-type>[number];
  • 宣言と同時に値を代入
    • <data-type>[] <name> = {<value1>, <value2>, ..};

条件式

if文

if ( condition ) {
    execution;
} else if (condition) {
    execution;
} else {
    execution;
}

条件演算子

<confition> ? <formula1> :<formula2>;

switch文

switch (formula) {
case constant1 :
    execution1;
    break;
case constant2 :
    execution2;
    break;
default : ※どれにも該当しない場合
    execution2;
}
  • 式の結果のデータ型は以下のいずれか
    • byte, short, int, char, String, enum

繰り返し文

while文

while ( <condition> ) {
    execution;
}
while (true) {
    execution;
}
do {
    execution;
} while ( <condition> );

for文

  • 基本型
    for (formula1; formula2; formula3) {
        execution;
    }
  • 拡張型:配列, コレクション
    for ( 変数宣言 : 参照変数名 ) {
        execution;
    }
  • break
    • ループを終了
  • continue
    • 後続の処理を行わず、次のループを続行

パッケージとクラスパス

  • パッケージをつけたクラスファイルは、パッケージと同じディレクトリ構造で出力する必要がある。
  • パッケージ宣言
    package <パッケージ名>;
  • パッケージをつけた場合、クラスパスの指定が必要。
    // 環境変数で指定
    set CLASSPATH = <クラスパス>

アクセス修飾子

  • 種類
    • public -全てのクラスからアクセス可能
    • private -同じクラス内からしかアクセスできない
    • protected -サブクラスと同じパッケージ内のクラスからしかアクセスできない
    • 指定なし -同じパッケージ内のクラスからしかアクセスできない
  • クラスに指定できるアクセス修飾子
    • publie, 指定なし
  • クラス内で指定するアクセス修飾子(フィールド、メソッド)
    • public, private, portected, 指定なし

クラス

  • Javaのプログラムの構成単位。
  • クラスを元にメモリ上に生成したものをインスタンスと呼ぶ。
  • 内部クラス(インナークラス)
    • クラスの内部に定義したクラスのこと。
    • この場合外に定義したクラスを外部クラスと呼ぶ。
    • クラスの関係を明確にする。
    • 外部からアクセスできないクラスを定義する。

継承

  • サブクラスでスーパークラスと同じメソッドを宣言する(オーバーライド)
  • 親子関係。
  • extends
  • final クラス/メソッド-継承禁止
  • super -親クラスのメンバにアクセス
    • super.フィールド/メソッド
    • super() -親クラスのコンストラクタを呼び出す
  • this -自クラスのメンバにアクセス
  • コンストラクタは継承されない
    • 引数つきのコンストラクタを使う場合、サブクラスでも宣言する必要がある。

インターフェイス

メソッド・コンストラクタ

メソッド

  • 構文
    • <修飾子> <戻り値のデータ型> <メソッド名> ( <引数1>, <引数2>, .. ) {}
  • 戻り値なし
    • void
  • 戻り値
    • return <戻り値>
  • インスタンス化
    • <データ型> <変数名> = new コンストラクタ名();
  • インスタンス化したオブジェクトのメンバの呼び出し
    • 変数名.メンバ変数名;
    • 変数名.メンバメソッド名();

コンストラクタ

  • コンストラクタの名前は、クラスメイト同じ
  • 戻り値を持たない
    • voidの指定は不要

オーバーロード

  • クラス内に同名のコンストラクタを複数定義すること
  • 引数の数、データ型、並び順が違う

メンバ

  • インスタンスメンバ(非static)
    • インスタンス変数
    • インスタンスメソッド
    • クラスをインスタンス化した際にオブジェクト単位で領域が確保される
  • staticメンバ
    • static変数
    • staticメソッド
    • クラスを複数インスタンス化しても1つの確保された領域が使われる(オブジェクト単位ではない)(クラス単位?)

コレクション(Collection)

スレッド(Thread)

  • OS上で実行するプロセス(JVM)内で複数実行することができる並列処理の単位。
  • スレッドのライフサイクル
    • 初期状態 →準備 →実行中 →終了状態
  • メソッド:start, run, sleep, join, getName, currentThread
  • Runnable インターフェイス

例外処理

アノテーション

  • 標準アノテーション
    • @Override
      • 継承メソッドである。
    • @Deprecated
      • 非推奨である。
    • @SuppressWarnings
      • 指定した警告メッセージを抑制する。
    • @FunctionalInterface
      • 関数型インターフェイスである。

クラスパス

  • 指定する方法
    • 環境変数で指定する。set CLASSPATH=<class-path>
    • 実行時にオプションで指定する。java -cp <class-path> <exec-class> ※クラスパスは、';'区切りで複数指定できる。

JARファイル

  • Java Archive
  • クラスファイルをディレクトリ構造ごとZIP形式でまとめたもの。
  • 作成
    • jar -cvf <jar-file-name> <path>
  • 確認
    • jar -tvr <jar-file-name>

文字列操作

オブジェクト操作

日時データ操作

Javaの用語

  • オーバーライド
    • 継承したサブクラスで同じシグネチャのメソッドを定義すること。
    • 同じ名前のフィールドをサブクラスで定義することはオーバーライドとは呼ばない。
  • オーバーロード
    • 同じ名前で引数が異なるメソッドを定義すること。