フリーキーズ | 独学プログラミング

Javaの超基本!プログラミングに必須の変数宣言の仕方を学んでみよう

最終更新日
【画像】Javaの超基本!プログラミングに必須の変数宣言の仕方を学んでみよう

Javaプログラムの基本

このコンテンツでは深く扱いませんが、ざっくりとJavaを使う上で前提となる知識を復習しておきましょう。
Javaのソースコードとなるファイル名は、クラスと同じにしなければいけません。また大文字と小文字を組み合わせたクラス名になることも覚えておきましょう。

注意点として、日本語のファイル名を付けることは避けましょう。

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}

ちなみに、Javaの最新バージョンである21からクラスやpublic static void main()を略記が使えます。
クラスを省き、void main()と書き換えられますが、バージョンによって動かない場合があるので、基本的に伝統的な書き方で進めます。

変数宣言の書き方

そもそも変数についてイメージが曖昧な人は、**「値(データ)を入れて保持するための箱」**をイメージすればOKです。
その箱の中にある値を使いたいときに使う、そのために変数が必要ということになります。

では早速、変数宣言をしてみましょう。

public class Main {
    public static void main(String[] args) {
        String name; //=> これが変数宣言
        name  = "山田太郎"; //=> ここで「山田太郎」を代入(箱に入れる)
        System.out.println("私の名前は" + name + "です。");
    }
}

このように、nameという名前で変数を宣言した後、値(データ)を代入(箱に入れる)して使えるようにしました。
これをコンパイル(コンピュータ用に変換)してみると、以下のようになります。

javac Main.java
java Main

結果として、「私の名前は山田太郎です。」が出力されます。

データ型

先述のコードで、変数宣言においてnameという名前にしましたが、Stringというデータ型を示しています。
データ型とは、プログラムが理解できるデータの種類を表現したものです。Javaは、静的型付け言語という種類のプログラミング言語のため、変数宣言にはデータ型も一緒に宣言します。

よく使われるデータ型には以下のようなものがあります。

  • String = 文字列(文字の並び)
  • int = 整数
  • double = 小数付きの数値
  • boolean = true、またはfalseで表現される真偽値

データ型の変換

データ型は変換できます。しかし、いくつか悪手が存在するため、頭に入れておきましょう。

まず、基本的な考え方を示します。以下のように、宣言した型として代入する必要があります。

public class Main {
    public static void main(String[] args) {
		int a;
		a = 10; //=> OK
		a = 10.5; //=> エラー
		a = "Hello"; //=> エラー
    }
}

上記のように、宣言した変数に対して、代入される値が宣言時の型以外のものだとエラーが出ます。
ただし絶対的なものではなく、Javaが良きに計らってくれるケースもあります。その例は以下です。

public class Main {
    public static void main(String[] args) {
		float a = 2;
		double b = a;
		System.out.println(b); //=> 2.0
    }
}

まず、float型の変数aは、本来であれば2.0fのように書きます。しかし、これをJavaは自動的に読み取って2.0fとして扱ってくれるのです。
さらに、double型の変数bfloat型の変数aを代入しています。これもまた、自動的にdouble型である2.0として扱ってくれます。

これは、Javaの数値を扱う型における許容量の大きさに基づく自動変換です。
大きさは以下のような関係にあります。

byte < short < int < long
float < double

キャストという強制的にデータ型変換するテクニックもありますが、基本的に使用禁止と考えてください。
データの欠損が発生する可能性もあるため、キャストが必要な時点で、正しい変数宣言とデータ型の使用ができていないと認識しましょう。

コードレビューで指摘できるように、キャストの使い方を下記に例として挙げます。

public class Main {
    public static void main(String[] args) {
	double a = 4.5;
	int b = (int)a;
	System.out.println(b); //=> 4
    }
}

出力結果を見るとわかる通り、4.5の内、小数点以下である.5が欠損します。

変数の名付けの注意点

Javaには、変数名として使ってはいけない単語が存在しています。
これを予約語と呼び、Javaでは特別な意味を持つため、変数名として利用できません。

たとえば、先ほどのコードにも出てきたpublicclassstaticvoidなどは予約語です。以下に一覧を列挙します。

Javaの予約語
abstractcontinuefornewswitch
assertdefaultgotopackagesynchronized
booleandoifprivatethis
breakdoubleimplementsprotectedthrow
byteelseimportpublicthrows
caseenuminstanceofreturntransient
catchextendsintshorttry
charfinalinterfacestaticvoid
classfinallylongstrictfpvolatile
constfloatnativesuperwhile

変数の初期化と定数

さらに、変数には「初期化」と呼ばれる書き方と、「定数」と呼ばれる書き方があります。
これらも簡単に見ていきましょう。

まずは変数の初期化です。

public class Main {
    public static void main(String[] args) {
        int age = 35;
        System.out.println("私の年齢は" + age + "歳です。");
    }
}

// 出力結果
// 私の年齢は35歳です。

最初に見たコードでは、nameの後に値を代入していましたが、今回のageには最初から値が入っています。
この書き方のことを「変数の初期化」と言います。1行にまとめられるのですっきりとした書き方ができます。

次に定数です。 通常、変数は再代入が可能となっています。例を見てみましょう。

public class Main {
    public static void main(String[] args) {
        int age = 17;
        System.out.println("私の年齢は" + age + "歳です。");
        age = 35;
        System.out.println("冗談です。本当の私の年齢は" + age + "歳です。");
    }
}

// 出力結果
// 私の年齢は17歳です。
// 冗談です。本当の私の年齢は35歳です。

このように、先に宣言したageを上書きできます。
プログラミングでは、宣言したいけど上書きを許可したくない、という場面が数多く登場します。そういったときに使えるのが定数です。

例を見てみましょう。

public class Main {
    public static void main(String[] args) {
        final int price = 100;
        System.out.println("この商品は" + price + "円です。");
        price = 200;
        System.out.println("この商品を" + price + "円に値上げしました。");
    }
}

これをコンパイルしてみましょう。

javac Main.java

そうすると、以下のようなエラーが出ます。

Main.java:5: エラー: final変数priceに値を割り当てることはできません
        price = 200;
        ^
エラー1個

このように、コンパイル時にエラーとして出力されるようになります。
定数として定義しておけば、コンパイル時に気づくので変更したくない値に対してミスしなくなります。

変数宣言はプログラミングにおける超基本

今回はJavaの変数宣言を紹介しましたが、これからプログラミングを勉強するというときにはどの言語でも変数宣言を使います。
先に説明した通り、Javaは静的型付け言語のため、データ型を書いてあげなければいけないという一手間が必要ですが、これは安全性の高いプログラミングにおいて非常に重要です。

慣れてくると、いつ定数を使えばいいか、どのように変数を使っていけばよいかが自然と身につくので、頭でしっかり書き方を覚えておきましょう。

関連するコンテンツ