SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

即戦力にならないといけない人のためのJava入門

Javaの基本的な文法

即戦力にならないといけない人のためのJava入門 第2回

  • X ポスト
  • このエントリーをはてなブックマークに追加

6. staticなデータとstaticメソッド

 今までは、クラスから生成されたインスタンスが持つ変数やメソッドについて見てきました。これらインスタンスが持つ変数やメソッドは同じクラスをもとにしていても、内部に保持する変数の値やメソッドのふるまいは、インスタンスごとに異なっています。

 しかし、Javaではstatic修飾子をつけることにより、変数やメソッドなどをクラスで唯一のものとして扱われるようにすることができます。

6.1. staticな変数

 staticな変数(定数も含む)は、クラスからいくつインスタンスが作成されてもメモリ領域に1つのデータしか作成されません。そのため、staticな変数は全インスタンスで同じ値を共有することになります。staticな変数を宣言するには次の書式で記述します。

static データ型 変数名;

 例えば、次の例ではDogのstaticな変数であるtypeを「哺乳類」と値を設定しています。そのため全インスタンスからtypeを参照すると「哺乳類」と値を取得することになります。

 また、インスタンスを生成するごとにstaticな変数のcountを加算していき、いくつのDogインスタンスを作成したのか知ることができます。このcountがstaticでない場合、インスタンスを生成するたびに0に戻るので、countは1にしかなりません。

 また、staticな変数に対し、インスタンスが値を変えた場合、他のインスタンスも同じstaticな変数を参照しているため、その参照している値が変わることになります。

6.2. staticなメソッド

 staticなメソッドはインスタンスの状態は関係なく、クラスに定義されている処理を行うメソッドです。staticメソッドは次のように宣言します。

(※引数はなくても複数でも設定可能です)
static 戻り値の型 メソッド名( 引数の型 引数名 ) {
    ……
}

 staticメソッドはクラスの状態とは関係ない処理を行うため、汎用的に使われる処理などによく使われる傾向があります。

6.3. staticな変数やメソッドへのアクセス

 staticな変数やメソッドはインスタンスを生成することなくアクセスできます。staticな変数やメソッドへのアクセスは次のようにします。

staticな変数の場合
クラス名.変数名
staticなメソッドの場合
クラス名.メソッド名

 例えば今までのサンプルで出てきているSystem.out.printlnの「out」は、Systemクラスが持つoutというPrintStreamクラスのインスタンスを持つstaticな変数です。そのoutのクラスであるPrintStreamのメソッドであるprintlnを「System.out.println」では実行しています。

 staticな変数やメソッドから、staticでない変数やメソッドへのアクセスはできません。しかし、逆にstaticでない変数やメソッドからstaticな変数やメソッドへのアクセスは可能です。

最後に

 今回はJavaの基本的な文法を見てきました。これらをいきなりすべて覚えることは難しいことかと思います。しかし、外国語の習得と同じように、何度も使っていくと、ここで述べた内容が自然と頭に入ってくることかと思います。そのためにはソースコードをたくさん読んだり書いたりすることが大事になります。今回は文法的なことを見せるため余りサンプルのソースコードはありませんでしたが、次からはソースコードを書いていくことになります。その際に忘れてしまったことがあれば、今回の記事を参照していただければと思います。

参考資料

  1. http://docs.oracle.com/javase/tutorial/
  2. http://docs.oracle.com/javase/specs/jls/se8/html/index.html
  3. http://www.jpcert.or.jp/java-rules/
  4. http://ja.wikipedia.org/
  5. オラクル認定資格教科書 Javaプログラマ Bronze SE 7』 山本道子 著、2012年12月、翔泳社
  6. オラクル認定資格教科書 Javaプログラマ Silver SE 7』 山本道子 著、2013年8月、翔泳社

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
即戦力にならないといけない人のためのJava入門連載記事一覧

もっと読む

この記事の著者

長谷川 智之(株式会社ビーブレイクシステムズ)(ハセガワ トモユキ)

株式会社ビーブレイクシステムズ 開発部所属。社内サークルの執筆チームに在籍しています。主な執筆は下記になります。・@IT連載『Javaの常識を変えるPlay framework入門』※複数著者での連載 ・日経ソフトウェア連載『コツコツ学ぶAndroidネイティブアプリ開発教室』※複数著者での連載 ・@I...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/7839 2015/05/19 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング