Java では、変数は Java プログラムの実行中にデータ値を保存するデータ コンテナです。 Java のすべての変数には、保持できる値の型と量を指定するデータ型が割り当てられます。変数は、データのメモリ場所の名前です。
Javaの変数
Java 変数は、メモリの場所に付けられる名前です。これは、プログラム内のストレージの基本単位です。
- 変数に格納された値は、プログラムの実行中に変更できます。
- Java の変数は、メモリの場所に付けられた名前にすぎません。変数に対して実行されるすべての操作は、そのメモリ位置に影響を与えます。
- Java では、すべての変数を使用前に宣言する必要があります。
Javaで変数を宣言するにはどうすればよいですか?
視覚的な補助として、以下の図に示すように、Java で変数を宣言できます。
この画像から、変数を宣言する際には、次の 2 つのことに注意する必要があることが容易にわかります。
- データ・タイプ : この変数に格納できるデータのタイプ。
- データ名: 変数に名前が付けられました。
このように、名前はメモリの場所にのみ付けることができます。次の 2 つの方法で値を割り当てることができます。
- 変数の初期化
- 入力を取得して値を割り当てる
Javaで変数を初期化するにはどうすればよいですか?
それは、次の 3 つのコンポーネントの助けを借りて認識できます。
- データ・タイプ : この変数に格納できるデータのタイプ。
- 変数名 : 変数に付けられた名前。
- 価値 :変数に格納されている初期値です。
イラスト:
// Declaring float variable float simpleInterest; // Declaring and initializing integer variable int time = 10, speed = 20; // Declaring and initializing character variable char var = 'h';>
Javaの変数の型
次に、次のようにリストされているさまざまなタイプの変数について説明します。 以下に続きます:
- ローカル変数
- インスタンス変数
- 静的変数
ここにリストされているすべてのタイプの変数の特性について詳しく説明します。
1. ローカル変数
ブロック、メソッド、またはコンストラクター内で定義された変数はローカル変数と呼ばれます。
Javaは文字列を整数に変換します
- これらの変数は、ブロックに入ったとき、または関数が呼び出されたときに作成され、ブロックから出た後、または呼び出しが関数から戻ったときに破棄されます。
- これらの変数のスコープは、変数が宣言されているブロック内にのみ存在します。つまり、これらの変数にアクセスできるのはそのブロック内だけです。
- ローカル変数は、定義されたスコープで使用する前に初期化する必要があります。
メソッドの時間計算量:
Time Complexity: O(1) Auxiliary Space: O(1)>
上記のアプローチの実装を以下に示します。
ジャワ
// Java Program to implement> // Local Variables> import> java.io.*;> class> GFG {> >public> static> void> main(String[] args)> >{> >// Declared a Local Variable> >int> var =>10>;> >// This variable is local to this main method only> >System.out.println(>'Local Variable: '> + var);> >}> }> |
>
>出力
Local Variable: 10>
例 :
ジャワ
package> a;> public> class> LocalVariable {> >public> static> void> main(String[] args)> >{> >// x is a local variable> >int> x =>10>;> >// message is also a local> >// variable> >String message =>'Hello, world!'>;> >System.out.println(>'x = '> + x);> >System.out.println(>'message = '> + message);> >if> (x>>>5>) {> >// result is a> >// local variable> >String result =>'x is greater than 5'>;> >System.out.println(result);> >}> >// Uncommenting the line below will result in a> >// compile-time error System.out.println(result);> >for> (>int> i =>0>; i <>3>; i++) {> >String loopMessage> >=>'Iteration '> >+ i;>// loopMessage is a local variable> >System.out.println(loopMessage);> >}> >// Uncommenting the line below will result in a> >// compile-time error> >// System.out.println(loopMessage);> >}> }> |
>
>
出力:
message = Hello, world! x is greater than 5 Iteration 0 Iteration 1 Iteration 2>
2. インスタンス変数
インスタンス変数は非静的変数であり、メソッド、コンストラクター、またはブロックの外部のクラスで宣言されます。
- インスタンス変数はクラス内で宣言されるため、これらの変数はクラスのオブジェクトが作成されるときに作成され、オブジェクトが破棄されるときに破棄されます。
- ローカル変数とは異なり、インスタンス変数にはアクセス指定子を使用できます。アクセス指定子を指定しない場合は、デフォルトのアクセス指定子が使用されます。
- インスタンス変数の初期化は必須ではありません。そのデフォルト値は変数のデータ型によって異なります。のために 弦 それはです ヌル、 のために 浮く それ は 0.0f、 のために 整数 それはです 0. のようなラッパークラスの場合 整数 それはです ヌルなど
- インスタンス変数には、オブジェクトを作成することによってのみアクセスできます。
- 次を使用してインスタンス変数を初期化します。 コンストラクター オブジェクトを作成しているとき。私たちも使うことができます インスタンスブロック インスタンス変数を初期化します。
メソッドの複雑さ:
Time Complexity: O(1) Auxiliary Space: O(1)>
上記のアプローチの実装を以下に示します。
ジャワ
// Java Program to demonstrate> // Instance Variables> import> java.io.*;> class> GFG {> >// Declared Instance Variable> >public> String geek;> >public> int> i;> >public> Integer I;> >public> GFG()> >{> >// Default Constructor> >// initializing Instance Variable> >this>.geek =>'Shubham Jain'>;> >}> >// Main Method> >public> static> void> main(String[] args)> >{> >// Object Creation> >GFG name =>new> GFG();> >// Displaying O/P> >System.out.println(>'Geek name is: '> + name.geek);> >System.out.println(>'Default value for int is '> >+ name.i);> > >// toString() called internally> >System.out.println(>'Default value for Integer is '> >+ name.I);> >}> }> |
>
>出力
Geek name is: Shubham Jain Default value for int is 0 Default value for Integer is null>
3. 静的変数
静的変数はクラス変数とも呼ばれます。
- これらの変数は、インスタンス変数と同様に宣言されます。違いは、静的変数は、メソッド、コンストラクター、またはブロックの外側のクラス内で static キーワードを使用して宣言されることです。
- インスタンス変数とは異なり、作成するオブジェクトの数に関係なく、クラスごとに静的変数のコピーは 1 つだけを持つことができます。
- 静的変数はプログラムの実行開始時に作成され、実行終了時に自動的に破棄されます。
- 静的変数の初期化は必須ではありません。そのデフォルト値は変数のデータ型によって異なります。のために 弦 それはです ヌル 、 のために 浮く それはです 0.0f 、 のために 整数 それはです 0 、 のために ラッパークラス のように 整数 それはです ヌル、 等
- インスタンス変数のような静的変数に (オブジェクトを通じて) アクセスすると、コンパイラーは警告メッセージを表示しますが、プログラムは停止しません。コンパイラはオブジェクト名をクラス名に自動的に置き換えます。
- クラス名を指定せずに静的変数にアクセスすると、コンパイラーは自動的にクラス名を追加します。ただし、別のクラスの静的変数にアクセスする場合は、2 つの異なるクラスが同じ名前の静的変数を持つ可能性があるため、クラス名を指定する必要があります。
- 静的変数は、インスタンス メソッド内でローカルに宣言できません。
- 静的ブロック 静的変数を初期化するために使用できます。
メソッドの複雑さ:
Time Complexity: O(1) Auxiliary Space: O(1)>
上記のアプローチの実装を以下に示します。
ジャワ
// Java Program to demonstrate> // Static variables> import> java.io.*;> class> GFG {> >// Declared static variable> >public> static> String geek =>'Shubham Jain'>;> > >public> static> void> main(String[] args)> >{> >// geek variable can be accessed without object> >// creation Displaying O/P GFG.geek -->>>'> を使用して >System.out.println(>'Geek Name is : '> + GFG.geek);> >// static int c=0;> >// above line,when uncommented,> >// will throw an error as static variables cannot be> >// declared locally.> >}> }> |
>
>出力
Geek Name is : Shubham Jain>
インスタンス変数と静的変数の違い
次に、インスタンス変数と静的変数の違いについて説明します。
- 各オブジェクトはインスタンス変数の独自のコピーを持ちますが、作成するオブジェクトの数に関係なく、静的変数のコピーはクラスごとに 1 つしか持てません。したがって、 静的変数 に良い メモリ 管理 。
- 各オブジェクトにはインスタンス変数の独自のコピーがあるため、あるオブジェクトを使用してインスタンス変数に加えられた変更は、他のオブジェクトには反映されません。静的変数の場合、静的変数はクラスのすべてのオブジェクトに共通であるため、変更は他のオブジェクトに反映されます。
- オブジェクト参照を通じてインスタンス変数にアクセスでき、クラス名を使用して静的変数に直接アクセスできます。 。
- インスタンス変数は、キーワード「new」を使用してオブジェクトが作成されるときに作成され、オブジェクトが破棄されるときに破棄されます。静的変数はプログラムの開始時に作成され、プログラムの停止時に破棄されます。
構文: 静的変数とインスタンス変数
class GFG { // Static variable static int a; // Instance variable int b; }> 結論
記事内で覚えておくべき重要な点は次のとおりです。
- Java の変数は、Java プログラムの実行中にデータ値を保存するデータ コンテナです。
- Java には、ローカル変数、静的変数、インスタンス変数の 3 種類の変数があります。
Java の変数に関する FAQ
Q1. Javaの変数とは何ですか?
変数は、内部にデータ値を格納できる Java のコンテナです。
Q2. Java の 3 種類の変数とは何ですか?
Java には次の 3 種類の変数があります。
- ローカル変数
- 静的変数
- インスタンス変数
Q3. Java サンプルで変数を宣言するにはどうすればよいですか?
以下に示す構文を使用して Java で変数を宣言できます。
data_type variable_name;>例:
// Integer datatype with var1 name int var1;>
必読:
- Java での変数宣言のルール
- Java の変数のスコープ
- C++ と Java の静的キーワードの比較
- Javaでは静的ローカル変数は使用できますか?
- Javaで隠蔽されるインスタンス変数