Chapter 04

Javaの記述・実行

おでん
おでん
2021.08.14に更新

Javaの記述

クラスの定義

アクセス修飾子 class クラス名 {}
public class Calc {}

メンバ変数の定義

アクセス修飾子 static修飾子 final修飾子 変数型 変数名;

※「static修飾子」「final修飾子」は省略可
private String name;

メソッドの定義

アクセス修飾子 static修飾子 final修飾子 戻り値の型 メソッド名(引数型 引数名){
	処理
	return 戻り値;
}

※「static修飾子」「final修飾子」「return 戻り値;」は省略可
public int number(int[] people){
     int num = 10;
   return num;
}

mainメソッドの定義

public static void main(String[] args) {}

この記述は複雑ですが、mainメソッドとしては(ほぼ)この形を崩してはいけないので暗記してしまいましょう。
分解すると以下の通りです。

  • public:アクセス修飾子(どこからアクセスできるか決めるもの)
  • static:その他修飾子
  • void:戻り値の型(voidは戻り値がない時)
  • main:メソッド名(必ずmainメソッドの記述が必要)
  • String[] args:引数(mainメソッドならこう書くのが基本、argsは別名でも可)

アクセス修飾子

アクセス修飾子は、どこからアクセスできるか決めるものです。
クラスとメンバに付与することができます。以下のようなものがあります。

アクセス修飾子 クラスに指定 アクセス可能範囲
public どのクラスからも
protected × 同じクラス・パッケージ・サブクラスから
指定なし 同じクラス・パッケージから
private × 同じクラス内からのみ

一般的には、メンバ変数(フィールド、クラスの状態)は「private」、クラス・メソッドは「public」で指定することが多いです。
アクセス修飾子「protected」「private」はクラスに指定できません。

Access.java
public class Access {
  //private修飾子のインスタンス変数
  private int A;

  //public修飾子のコンストラクタ
  public Access(int B){
    A = B;
  }

  //public修飾子のメソッド
  public int getB(){
    return A;
  }
}
AccessModifier.java
public class AccessModifier {
  public static void main(String[] args){
    //インスタンス化
    Access acc = new Access(10);
    // System.out.println(acc.A);   //コンパイルエラー
    System.out.println(acc.getB());
  }
}

上記の例の場合、private修飾子のインスタンス変数は参照できませんが、public修飾子のコンストラクタとメソッドは参照できています。

その他修飾子

その他修飾子には、以下のようなものがあります。

  • static:クラス変数やクラスメソッドの宣言(クラス内で1つ)
  • abstract:インスタンス生成不可
  • final:定数の宣言(上書きできない)

前チャプターでも解説しましたが、変数やメソッドを宣言するときに、以下の2つに分けることができます。

  1. クラス変数・クラスメソッド(static)
  2. インスタンス変数・インスタンスメソッド(非static)

1.クラス変数・クラスメソッド

インスタンスを複数作っても、変数やメソッドが割り当てられません。変数やメソッドはクラスに対して割り当てられます。「static」修飾子が付いているものが、このクラス変数・クラスメソッドになります。

クラス

参考:Javaの道

2.インスタンス変数・インスタンスメソッド

一方、インスタンスが作られるごとに、変数やメソッドが割り当てられます。「static」修飾子が付いていないものが、このインスタンス変数・インスタンスメソッドになります。

インスタンス

参考:Javaの道

戻り値の型

戻り値の型は、返ってくる値の型を指定します。詳しくは文法のキャプチャで紹介しますが、以下のようなものがあります。

  • void:戻り値なし
  • int:数値
  • String:文字列

Javaの実行

Javaの実行は以下の手順で行います。

  1. コンパイルする
  2. 作成されたクラスファイルを実行する

それぞれ以下のコマンドを入力します。

1.コンパイルする

$ javac ファイル名

2.作成されたクラスファイルを実行する

$ java クラス名

例を出します。
「Main.java」というファイル内の「Main」クラスを実行します。
まずは、ファイル内に以下の記述があるとします。

Main.java
class Main {
  public static void main(String[] args) {
    String greeting = "Hello World!";
    System.out.println(greeting);
  }
}

ここで、以下コマンドでコンパイルします。

$ javac Main.java

すると、「Main.class」という新しいファイルが作成されます。
このファイル内の記述はコンピュータが読み込める用のものなので、みなさんが気にする必要はありません。
続いて、以下のコマンドでそのクラスファイルを実行します。

$ java Main

この時は、ファイル名の「.class」は必要ないことに気をつけてください。
これで実行され、以下の結果が表示されます。

HelloWorld!

アノテーションとは

アノテーションとは、注釈のことです。
用途的にはコメントに近いですが、少し異なります。
アノテーションは、コンパイラが認識することができます。
コンパイラが認識できるということは、不備や誤りを見つけた際にコンパイルエラーを出力してくれます。
これによって、サービス提供前にエラーを解消することができます。
アノテーションは以下のように記述します。

@文字列

よく使用されるアノテーションは以下の3つです。

@Override  //オーバーライドの宣言
@Deprecated  //クラスやメンバが非推奨である宣言
@SuppressWarnings  //コンパイラ警告を見せないようにする

また、アノテーションは自作できます。
例えば、誰が記述したかわかるように、

@author:Tanaka

とすることもできます。