Javaの型、変数、定数

【Java】Java変数のスコープを理解しよう!Java変数の一覧とスコープを徹底解説!

Java変数のスコープについて

1. はじめに:Java変数スコープの基本

Javaの変数スコープとは、変数がアクセス可能なコードの範囲、またはその変数が「生きている」範囲のことを指します。

変数のスコープは、変数が定義された場所によって決まります。そして、このスコープの理解はプログラムの動きを正確に把握するために極めて重要となります。

サルモリ
変数のスコープって何?すごく難しそう…

変数とは?

まずは基本から!変数とは、データを一時的に格納するための「箱」のようなものです。

Javaにおいて、変数はデータ型と名前(識別子)を持ちます。データ型は、変数がどのような種類のデータを格納できるかを示し、名前はその変数を指定するために使用されます。

サルモリ
あー、なるほどね!変数はデータを保持する箱なんだね!
Java言語のStreamAPIを徹底的に学びたい方は画像をクリックしてご覧ください!
KindleUnlimited会員であれば、全ての本をご覧頂けます。 StreamAPIを理解すれば、Javaの世界が変わる 第1版

Javaの変数スコープの種類

Javaには大きく分けて、ローカル変数、インスタンス変数、クラス変数という、3つの主要な変数スコープが存在します。

それぞれの変数がどのように使われ、どの範囲で有効なのか、詳しく見ていきましょう。

サルモリ
3つの変数スコープ…?頭がこんがらがりそうだよー!
注意: 以下のコードサンプルと出力結果はイメージですので、実際には動作しない可能性があります。

2. ローカル変数について深掘り

ローカル変数は、メソッド内で定義され、そのメソッド内だけでアクセス可能な変数です。

ローカル変数は、メソッドが呼び出されるたびに作成され、メソッドが終了すると同時にスコープを抜け、その変数はメモリから解放されます。

サルモリ
メソッドが終わるとローカル変数は消えるのね。おっけー!

ローカル変数の特徴

  • メソッド内でのみアクセス可能
  • メソッドが呼び出されると作成され、メソッドの終了と共に解放される

ソースコード例

 出力結果 100 
このように、ローカル変数localVariableはshowLocalVariableメソッド内でのみアクセス可能で、このメソッドが終了すると解放されます。

3. インスタンス変数の探求

次に見るのは、インスタンス変数です。インスタンス変数は、クラスのインスタンスごとに一意であり、オブジェクトが生成される度に新しいコピーが作成されます。

サルモリ
オブジェクト…?それって何?

Javaでは、クラスからオブジェクトを生成します。オブジェクトは、クラスの「実例」または「インスタンス」とも言われ、クラス内で定義されているフィールド(変数)やメソッド(関数)を持ちます。

サルモリ
なるほどー!オブジェクトはクラスの実例なんだね!

インスタンス変数の特徴

  • クラスレベルで定義され、クラスのインスタンス(オブジェクト)ごとに一意
  • オブジェクトのステート(状態)を保持
  • オブジェクトがガベージコレクトされるまで生存

ソースコード例

 出力結果 Buddy says: Woof! Max says: Woof! 

このコード例では、Dogクラスにインスタンス変数nameがあります。そして、myDogyourDogという2つの異なるオブジェクト(インスタンス)を作成しました。各オブジェクトは自分自身のname変数を持っており、異なるメモリアドレスに格納されます。このように、インスタンス変数は、各オブジェクトごとに一意です。

4. クラス変数とは

最後に、クラス変数を見ていきましょう。クラス変数もクラスレベルで定義されますが、staticキーワードを使って定義され、クラスのすべてのインスタンスで共有されます。

サルモリ
クラス変数はすべてのオブジェクトで共有されるのね!

クラス変数の特徴

  • staticキーワードを用いて定義される
  • クラスのすべてのインスタンスで共有される
  • オブジェクトを生成しなくてもアクセス可能

ソースコード例

 出力結果 Number of cats: 3 

クラス変数catCountは、Catクラスのすべてのインスタンスで共有されます。そのため、オブジェクトを生成するたびに増加し、showCatCount()メソッドを通じて現在の総数を表示します。

5. まとめ

Javaにおける変数のスコープとは、その変数がアクセス可能な範囲を意味します。正しいスコープと生存期間を理解し、適切な変数タイプを選択することで、メモリの無駄遣いを防ぎ、プログラムの効率を向上させることができます。

以上で、Javaにおける変数のスコープに関する説明を終わります。サルモリさん、質問はありますか?

サルモリ
ないよ!ありがとう!

-Javaの型、変数、定数

Ads Blocker Image Powered by Code Help Pro

Ads Blocker Detected!!!

We have detected that you are using extensions to block ads. Please support us by disabling these ads blocker.

Powered By
Best Wordpress Adblock Detecting Plugin | CHP Adblock