プログラム基礎 ~変数について(Java)~

変数についての重要な点は以下になります。

  • 変数には様々な値を代入できる
  • 変数の名前には識別子を使う
  • 変数は型と名前(識別子)を指定して宣言する
  • 変数には「=」を使って値を代入する
  • 変数を初期化すると、宣言と値の代入が同時にできる
  • 変数の値を上書きし、その変数の値を変更できる
  • 変数の値を他の変数に代入できる

それでは、プログラミングの基本となる変数について解説していきます。

変数

変数とは

変数の利用はプログラムの基本です。プログラムは、実行時にユーザが入力した値などを記憶させながら処理を進めます。この値を記憶をさせておく昨日のことを変数と呼びます。
コンピュータの中には、データを記憶させるためのメモリという装置があります。変数はメモリを利用することで保持しておきたい値を記憶することができます。変数は、プログラムを実行する上で記憶させたい値を入れておく「箱」であると考えるとよいでしょう。

重要:変数とは何らかの値を入れておく「箱」のことです。

識別子

識別子とは

変数を扱うときは、以下の2点を決めておく必要があります。

  1. 変数の「型」を指定します。
  2. 変数に「名前」をるけます。

型については後述するので、ここでは変数名に関して説明します。

変数名は基本的に自由に決めることができます。このように、プログラム自身がつけることのできる名前のことを、識別子と呼びます。また、識別子は変数名だけでなく、クラス名・メソッド名・パッケージ名も含まれます。これらの詳細については後ほど説明します。

  1. 半角の英字・数字・「_」・$を使います。
  2. 1文字目は数字にできません。
  3. 大文字と小文字は別の文字として判定されます。
  4. Javaが予約しているキーワード(予約語)は使うことができません。
  5. 長さの制限はありません。

たとえば、次のような識別子は使うことができません。

3ab     -①
static  -②
ab-cd   -③

①は数字で始まっていて、②は予約語が使われています。そして③は使用不可の記号が含まれています。識別子をつける時には第三者が見た時に分かりやすい名前を付けるようにしましょう。

重要:プログラマ自身がつけることのできる名前のことを、識別子と呼びます。識別子にはわかりやすい名前をつけます。

型とは

ここでは、変数の「型」についての説明を行います。変数に記憶させることのできる値にはいくつかの種類があります。この値の種類を、データ型または型と呼びます。Javaには以下のような基本型(プリミティブ型)があります。

種類名前ビット数データの範囲
真偽値boolean1ビットtrue または false
整数型byte8ビット1バイト整数(-128~127)
整数型short16ビット2バイト整数(-32768~32767)
整数型int32ビット4バイト整数(-2147483648~2147483647)
整数型long64ビット8バイト整数(-9223372036854775808~
9223372036854775807)
浮動小数点型float32ビット4バイト単精度浮動小数点
浮動小数点型double64ビット8バイト倍精度浮動小数点
文字列char16ビット2バイト文字(\u0000~\uffff)
表4-1

データ型には、真偽値を表すboolean、整数を表すbyte,short,int,long、浮動小数を表すfloatとdouble、文字列を表すcharがあります。変数を利用する際には、どの型の値を記憶させる変数なのかをあらかじめ決める必要があります。また、各型にはデータの範囲があり、その範囲を超過した値は変数には原則保存できません。

図4-2

上記の図は、short型の値を記憶できる変数を表します。

このshort型を使うことによって、-32768~32767までの範囲の整数値を一つ記憶させることができます。注意点としては、byte, short, int ,long などの整数型には、小数点以下の値をもつ値を記憶することができません。小数点以下の桁を持つ数値を表す場合は、float,double などの浮動小数点型を使う必要があります。

また、表4-1宙にある、「〇バイト」という数は、「記憶する値がどれくらいのメモリを必要とするか」ということを表しています。このことを型のサイズといい、サイズが大きいほどあらわせる値の範囲は広くなります。たとえば、doubel型の値は、int型の値よりも多くのメモリが使われますが、その分あらわあせる範囲は広くなります。値の種類と大きさにあったデータ型を使うようにしましょう。

重要:型とは、値を入れておく箱の種類のことです。

変数の宣言

変数の宣言

変数を使うためには、変数を宣言する処理が必要です。この処理を実行することで、コンピュータのメモリ上に値を記憶する場所が用意されます。

<構文 変数の宣言>
型名 識別子;

上記のように変数の宣言をします。先ほど説明した「型」と「識別子(ここでは変数名)」を指定し、1文で行います。そのため、文の最後には、「;」をつけます。次に実際のコードを見てみましょう。

char ch;    --- char型の変数 ch です。
int num;    --- int型の変数 num です。
double d;   --- double型の変数 d です。

また

int num1, num2;

というように2つの変数を「,」で区切ることで1文にまとめて宣言することもできますが、可読性をあげるためにも「1行1宣言」を意識しましょう。ただし、実際の開発では、たとえば「変数宣言を20行書くより1行の方が読みやすい」といった場合のように1文にまとめて宣言した方が1行1宣言よりも可読性が高くなる場合もあります。そのため、各プロジェクトの開発環境に合わせて記載の仕方を使い分けましょう。

重要:変数は型と識別子を指定して宣言します。

変数を使う

値の代入

変数を宣言した後は、値を変数に記憶させます。これを代入といいます。代入は、「=」を使って記述します。代入については、図4-4を参考にイメージしてみてください。

<構文 変数への代入
変数名 = 値;

1や2などの、一定の「値」を変数に代入することができます。代入する際には値と型が一致している必要があります。このようにプログラム実行前に変数の型が決定している言語を静的型付け言語と呼びます。

int num;
num = 2;

上記のコードでは、int型の変数numに2を代入しています。ここでの「=」は、一般的につかわれている「等しい」という意味ではなく、値を代入させる役割を持ちます。

図4-4変数への代入

次に、変数を使ったコードを記述してみましょう。

public class Sample {
  public static void main(String[] args) {

    // int 型の変数num を宣言
    int num;

    // num に 2 を代入
    num = 2;

    // num の値を出力
    System.out.println("変数 num の値は" + num + "です。");
  }
}

【実行結果】
変数 num の値は 2 です。

このコードでは、int型の変数numを宣言し、変数numに2を代入しています。

重要:変数には、「=」を使って値を代入します。「=」は値を代入する役割を持ちます。

変数の値の出力

上記のサンプルコード中の最後の文で、変数numの値を出力しています。変数の値を出力する際は、変数名を「”」で囲まないように注意してください。「”」で囲むと、実行画面には値を表す「2」ではなく、変数の「num」がそのまま出力されてしまいます。

また、文字列と変数の値をつなげて出力したい場合は文字列と変数の間に「+」を追加します。

変数の初期化

上記のサンプルコードでは、変数の宣言と値の代入を、2文に分けて記述していました。しかしJavaでは「変数の宣言と同時に変数に初期値を代入する」という記述を行うことができます。このように変数宣言時に初期値を代入することを変数の初期化といいます。

<構文 変数の初期化>
型名 識別名 = 式;

int num = 2;

上記のコードでは変数numを2で初期化しています。変数の宣言と値の代入を1行にまとめて記述することで、値が入っていない変数を誤って使用する危険性がなくなるというメリットもあります。

重要:変数の初期化とは、変数宣言時に初期値を代入することです。

以下は各型の変数の宣言と代入、初期化をまとめてものになります。

●char型への代入および初期化
//変数宣言と代入
char c;
c = 'C'

//初期化
char c = 'C';
●String型への代入および初期化
//変数宣言と代入
String str;
str = "ABC";

//初期化
String str = "ABC";
●float型への代入および初期化
//変数宣言と代入
float f;
f = 1.75f

//初期化
float f = 1.75f;
●long型への代入および初期化
//変数宣言と代入
long l;
l = 250l;

//初期化
long l = 250l;
●boolean型への代入および初期化
//変数宣言と代入
boolean b;
b = true;

//初期化
boolean b = true;

変数の値の変更

ここでは、代入した変数の値を変更する方法を学びます。次のコードを記述してみましょう。

public class Sample {
  public static void main(String[] args)
{

    int num = 2;

    System.out.println("変数 num の値は" + num + "です。");

    // 新しい変数の値を代入
    num = 4;

    // 変更した値を出力
    System.out.println("変更後の変数 num の値は" + num + "です。");
  }
}


【実行結果】
変数 num の値は 2 です。
変更後の変数 num の値は 4 です。

まず、int型の変数numに2を代入してから、変数に格納されている値を出力していきます。そして、コードの処理は1文ずつ順番に処理されるため、この出力処理を記述した後で続けて変数にもう一度値を代入すると「値を上書きして変数の値を変更する」という処理が行われます。

そのため、このサンプル内では同じ変数numの値を2回出力していますが、それぞれ出力される値は異なります。このサンプルコードの実行結果を見ると、既に値が代入されている変数に値を代入し直すと変数の値を変更できることがわかります。

変数を値として代入(変数の値として変数そのものを代入)

値の代入時に、「=」の右辺に書くことができるのは、2や4などの一定の数値だけでなく、変数を記述することもできます。それでは実際に次のコードを実行してみましょう。

public class Sample {
  public static void main(String[] args)
  {
    int num1;
    int num2;
    int num3;

    num1 = 1;
    System.out.println("変数 num1 の値は" + num1 + "です。");

    num2 = num1;
    System.out.println("代入後の変数 num2 の値は" + num2 + "です。");

    num3 = num2 + 1;
    System.out.println("代入後の変数 num3 の値は" + num3 + "です。");
  }
}

【実行結果】
変数 num1 の値は 1 です。
代入後の変数 num2 の値は 1 です。
代入後の変数 num3 の値は 2 です。

また下記のコードの右辺には、変数num1を記述しています。この場合、変数num2には、変数num1に代入されている値が代入されます。つまり、変数num2には「1」が代入されます。

num2 = num1;

図4-5の変数の値の代入

num3 = num2 + 1;

こちらのコードの右辺には、num2+1という式が記述されています。この場合はnum2+1の計算結果がnum3に代入されます。そのため、変数num3には「2」が代入されます。

値を代入するときの注意点

値を代入する際に注意点があります。次のコードを見てみましょう。

public class Sample {
  public static void main(String[] args)
  {
    int num;
    num = 1.25;
    System.out.println("変数num の値は" + num + "です。");
  }
}

変数numに1.25という値を代入しようとしています。しかし、numという変数はint型であるため、小数点のついら数値は代入できません。変数の型と代入する値には注意しましょう。

変数の宣言位置

変数の宣言を以下のコードの中の①「main()メソッドのブロック内」に記述します。

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

main()メソッドのブロック外に変数を宣言する場合もありますが、これについては後ほど説明します。また、同じブロック内では名前が重複する変数を宣言することはできないので注意しましょう。

コメント

タイトルとURLをコピーしました