トップ
トップ >  プログラミング言語 >  Java >  変数
変数
概要
データの保管場所である変数です。
宣言
書式
[final] 型 変数名 [= 初期値] [,変数名 [= 初期値]]…;
項目説明
final指定すると定数となり値の変更はできなくなります。
変数の型を指定します。
変数名変数名を指定します。
初期値初期値を設定する場合に使用します。


ソースコード説明
int a;int型変数として、aを宣言しています。
int a,b,c;int型変数として、aとbとcを宣言しています。
int a = 2,b = 3;宣言と同時に初期値を設定してます。
final int a = 3;定数にしています。

変数名
変数名には使える文字は以下のものです。
文字先頭2文字目以降
アルファベット(大文字と小文字は区別されます。)
数字不可
$
_
以下に示す予約語と定数は使用できません。
頭文字予約語定数
aabstract   assert
bboolean   break   byte
ccase   catch   char   class   const   continue
ddefault   do   double
eelse   enum   extends
ffinal   finally   float   forfalse
ggoto
iif   implements   import   instaqnceof   int   interface
llong
nnative   newnull
ppackage   private   protected   public
rreturn
sshort   static   strictfp   super   switch   synchronized
tthis   throw   throws   transient   trytrue
vvoid   volatile
wwhile

変数名の命名
変数名については以下のような慣例に従うことが推奨されています。
変数基本的に小文字にします。2つ以上の単語で構成する場合、2つ目以降の単語は先頭のみ大文字にします。
例 numberOfMember
定数基本的に大文字にします。2つ以上の単語で構成する場合、単語の接続に_(アンダースコア)を使用します。
例 LENGTH_OF_AREA

スコープ
場所によって、スコープと名称が異なります。 スコープとは該当する変数にアクセスできる範囲です。 名称はスコープ内で一意である必要があり、他と重なる場合もエラーです。
名称宣言場所寿命値を設定しない場合
ローカル変数メソッド内部宣言〜{}で囲まれたブロックの終了まで参照されるまでに設定しないとコンパイルエラーになります。
インスタンスフィールドクラスインスタンス生成時〜インスタンス消滅デフォルト値が採用されます。
クラスフィールドクラスなしデフォルト値が採用されます。

ソースコード説明
public class ScopeTest {
  private int v1 = 100;
  public void method1(int v2){
    System.out.println("v1 = " + v1);
    int v1 = 999;
    for(int i = 0;i < 3;i++){
      System.out.println("i = " + i);
    }
    System.out.println("v1 = " + v1);
  }
  public static void main(String[] args) {
    new ScopeTest().method1(3);
  }
}

インスタンスフィールドとしてv1を宣言しています。
引数v2はメソッド終了まで有効です。
インスタンスフィールドv1の値を出力しています。
ローカル変数v1を宣言しています。
forブロックでiを宣言しています。forブロック終了まで有効です。


v1はインスタンスフィールドとローカル変数が存在しますが、ローカル変数が優先されます。
実行結果説明
v1 = 100
i = 0
i = 1
i = 2
v1 = 999
インスタンス変数v1の値が出力されます。
forブロック内で宣言したローカル変数iの値が出力されます。


ローカル変数v1の値が出力されます。

参照型
クラスクラスのインスタンスへの参照を保持します。
インタフェースインタフェースの実装クラスのインスタンスへの参照を保持します。
配列配列への参照を保持します。
宣言だけではインスタンスは生成されません。
デフォルト値はnullです。

組み込み型(プリミティブ型)
宣言と同時にインスタンスも生成されます。
取りうる値バイト数デフォルト値
booleantrue | false-false
char0〜655352\u0000
byte-128〜12710
short-32768〜3276720
int-2147783648〜214778364740
long-(2の63乗)〜(2の63乗)-180
float精度6桁の浮動小数40.0
double精度15桁の浮動小数80.0
デフォルト値はクラスフィールド、インスタンスフィールド、配列で使用されます。
ローカル変数は明示的に値を設定しないとコンパイルエラーになります。
オーバーフローやアンダーフローは検出されません。

代入
書式
変数名 代入演算子 {|}
項目説明
変数名被代入対象です。
代入演算子こちらを参照してください。
値または式代入対象です。
代入により、値は上書きされます。

型変換
値の自動型変換
値の有効範囲がより大きい型の変数へは自動的に変換されます。
型の有効範囲は以下のとおりです。
byte < short < int < long < float < double
なお、char < int

キャスト
(型名)とすることで、明示的な型変換を行います。
有効範囲の小さい変数への代入にはキャストが必要です。
ソースコード説明
public class CastTest {
  public static void main(String[] args) {
    new CastTest().test();
  }
  public void test(){
    int data1 = 258;
    byte data2 = (byte)data1;
    System.out.println("data2 = " + data2);
  }
}


byteでキャストしています。


実行結果説明
data2 = 2 ダウンキャストにより下1バイトのみ反映されます。

autoboxing/unboxing
ラッパークラスとプリミティブの相互自動変換です。
項目説明
オートボクシングプリミティヴからラッパークラスへの変換です。
アンボクシングラッパークラスからプリミティヴの変換です。
ソースコード説明
int data1 = 1;
Integer data2 = data1;
int data3 = data2;
int型の変数を用意してす。
int型からIntegerに自動変換されます。(オートボクシング)
Integerからint型に自動変換されます。(アンボクシング)
トップ >  プログラミング言語 >  Java >  変数