検索

キーワード


目次

【Java】変数とは?定数とは?詳しく解説! 変数の列挙型、代入、型変換、型推論の使い方についても紹介します!

  • 公開日:2020-08-27 10:36:59
  • 最終更新日:2021-01-25 15:55:44
【Java】変数とは?定数とは?詳しく解説! 変数の列挙型、代入、型変換、型推論の使い方についても紹介します!

Workteria(ワークテリア)では難易度の高いものから低いものまで、スキルや経験に合わせた案件を多数揃えています。会員登録は無料ですので、ぜひ会員登録してご希望の案件を探してみてください!

フリーランス/正社員のエンジニアとして活躍するには、ご自身のスキルや経験に合わせた仕事を選ぶことが大切です。ご希望の案件がみつからない場合はお気軽にお問い合わせください!ユーザ満足度の高いキャリアコンサルタントが在籍していますので、希望条件や悩み事などなんでもご相談ください。ご希望にピッタリの案件をご紹介させていただきます。


こんにちは。駆け出しプログラマーの松倉です!

ここでは変数、定数の宣言と変数の様々な使い方ついて紹介・解説します。

プログラミング未経験の方、Javaについて勉強している方、これから勉強したいと思っている方の参考になれば幸いです!

関連記事リンク:【Java】 命名規約<命名ルールと予約語、命名規約の目的と注意すべき点>【Java】 変数の種類や定数の特徴、定数にまつわる列挙型の解説【Java】定数をまとめてグループ化⁉可読性向上『列挙型(Enum)』の解説‼【Java】final 修飾子の使い方は?変数やメソッドなどでの利用方法まとめ


変数と定数

プログラムを行う大きな目的の一つは計算です。

Javaでは計算の時にプログラムでやり取りする情報を値(データ)と呼びます。

その値を一時的に記憶するために用意されているものが 変数 です。

変数には名前を付けることができ、この名前を「変数名」と呼びます。

プログラムは変数に対して、「宣言」「代入」「参照」の3つの操作を行うことができます。 

また、一度宣言されると変更されることのない値が 定数 です。

円周率などがこれに当たります。

定数の宣言をすることで、よく使う値を固定できます。


この記事では変数と定数について以下の解説をします。

  • 基本データ型 
  • 変数の宣言
  • 定数の宣言(final修飾子)
  • Enum(列挙型)
  • 代入
  • キャスト(キャスト変換)
  • 型推論(var)



基本データ型

変数は何でも好きな値を宣言することができるわけではなく、あらかじめ用意された形式にしか記憶することができません。

Javaでは変数が扱えるデータの種類や範囲が決められており、この形式を型(基本データ型)と呼びます。

これらは大きく「基本型(プリミティブ型)」と「参照型(リファレンス型)」の二つに分類されます。

この記事では基本型(プリミティブ型)」についてのみ紹介します。


基本型は変数という入れ物に入りきる大きさの情報です。

さらに基本型は整数型、浮動小数点型、論理型、文字型と分類でき、それぞれに intや doubleのような型が用意されています。

変数型一覧

これらの型から用途に合わせて型を選択する必要があります。

実際に使用していく中でどれを選択するかわかるようになります。

整数を扱う場合、 int型が通常最も効率の良い型になります。

明確にほかの型を使う理由がない場合は、 int型を使いましょう。



変数の宣言

Javaのプログラムで変数を使うためには、変数の宣言を行う必要があります。

宣言することで一時的にデータを記憶する領域(変数)が用意されます。


変数の宣言方法

型名 変数名;

「型名」には変数の型を指定します。

「変数名」には複数の変数を区別するための名前を指定します。

変数名は「1文字目は必ず小文字にする」、「単語区切りは頭文字を大文字にする」という命名規約があります。

(例:name, userName, errMsg, ・・・) 

変数名は分かりやすく命名することがとても重要です。

あまりにも長い名前や他人が見て意味がまったく伝わらない場合、変数名から意味を読み解くことができず結果的にプログラム全体の処理も分かりづらくなるため注意が必要です。

※変数名の命名規約については、関連記事リンクを参照ください


変数の宣言をサンプルコードで確認しましょう。

public class Sample1 {
	public static void main(String[] args) {	
		int intValue = 100;
		long longValue = 100;
		short shortValue = 100;
		byte byteValue = 100;
		char charValue = 'A';
		double doubleValue = 100.0;
		float floatValue = 100.0f;
		boolean booleanValue = true;

		System.out.println("intValue = " + intValue);
		System.out.println("longValue = " + longValue);
		System.out.println("shortValue = " + shortValue);
		System.out.println("byteValue = " + byteValue);
		System.out.println("charValue = " + charValue);
		System.out.println("doubleValue = " + doubleValue);
		System.out.println("floatValue = " + floatValue);
		System.out.println("booleanValue = " + booleanValue);
	}
}


実行結果:

intValue = 100
longValue = 100
shortValue = 100
byteValue = 100
charValue = A
doubleValue = 100.0
floatValue = 100.0
booleanValue = true

変数の宣言と表示を確認できました。



定数の宣言(final修飾子)

定数の宣言とは一度しか値を代入することができない変数を宣言することです。

変数は後から違う値を代入することで何度も上書きすることができますが、円周率をプログラムで使いまわす場合など値を変更されたくないものがあります。

このような値を変更されたくない変数を宣言するために、Javaでは final修飾子が用意されています。

変数に対して final修飾子を指定するとその変数は後から値の変更ができなくなります。 


 final修飾子の使い方

final 型 変数名 =

final修飾子を上手く使うことで同じ値を何度も宣言する必要がなくなり、プログラムの読みやすさ(可読性)が向上します。

定数名にも同様に「先頭にfinal修飾子を付与する」、「すべて大文字にする」、「単語区切りは _ (アンダースコア)で結合する」という命名規則があります。

(例:LENGTH, MIN_VALUE, , ・・・) 


final修飾子を使って宣言された変数に値を代入するとどのように処理されるのかサンプルコードで確認しましょう。

public class Sample2 {
	public static void main(String[] args) {
		final int POINT = 10;

		POINT = 20;//コンパイルエラーが発生します。
	}
}

final修飾子を付けて宣言された変数は一度しか代入ができないため、二度目の代入をしようとするとコンパイル時にエラーが発生します。



Enum(列挙型)

Enum(列挙型)とは、複数の定数をひとつにまとめてグループ化することができる型です。

Enumで定義する値のことを列挙子と呼びます。

Javaの列挙型はクラスのため、フィールドやメソッドを定義することができます。

※ここでは列挙型について軽く触れています(詳しくは関連記事リンクを参照ください)


Enum(列挙型)の使い方

アクセス修飾子 enum 列挙名 {1,2, ・・・};

※Enumの値の名前はすべて大文字で宣言し、単語の区切りでは _ (アンダースコア)にするのが一般的です。

(例:DARK_GRAY, LIGHT_BLUE,・・・) 


定義したEnumは「列挙名.値」で使用することができます。

またEnumは基本型のように変数の宣言や代入、あるいは制御構文での論理式で使用することができます。

Enumを使用することでプログラムがわかりやすくなり可読性が向上したり、値を数字で管理しないため想定外の値が使われる心配がないメリットがあります。 


定義したEnumを使用したサンプルコードを確認しましょう。

public class Sample3 {
	public static void main(String[] args) {
		Color color = Color.BLUE;

		if (color == Color.RED) {
			System.out.println("赤色です");
		} else if (color == Color.BLUE) {
			System.out.println("青色です");
		} else if (color == Color.YELLOW) {
			System.out.println("黄色です");
		}
	}

	protected enum Color {
		RED, BLUE, YELLOW
	};
}


実行結果:

青色です

Enumの列挙子を格納して、選択したオブジェクトを使用できました。



変数への代入 

代入とは宣言した変数にデータを記憶することをいいます。

すでに変数にデータが記憶されていた場合は、新たに代入したデータが変数に上書きされます。


 代入の使い方 

変数名 =; 

代入は同じ変数に対して繰り返し行うことができます。 

代入を行うとそれまでに変数に記憶されていた値は上書きされます。


変数を宣言した後、変数の代入した場合にどのように処理されるかサンプルコードで確認しましょう。

public class Sample4 {
	public static void main(String[] args) {
		System.out.println("---変数の宣言---");
		double myWeight = 0.0;
		double myHeight = 0.0;

		System.out.println("体重:" + myWeight);
		System.out.println("身長:" + myHeight);

		System.out.println("---変数の代入---");
		myWeight = 34.5;
		myHeight = 123.4;

		System.out.println("体重:" + myWeight);
		System.out.println("身長:" + myHeight);

		System.out.println("---変数の上書き---");
		myWeight = 34.5;
		myWeight = 45.6;
		myWeight = 56.7;

		System.out.println("体重:" + myWeight);
	}
}


実行結果:

---変数の宣言---
体重:0.0
身長:0.0
---変数の代入---
体重:34.5
身長:123.4
---変数の上書き---
体重:56.7

変数が代入されるたびに変数に記憶されていた値が上書きされていることが確認できました。



キャスト(キャスト変換)

ある型から別の型に変換することをキャスト(キャスト変換)といいます。

通常 double型で扱える数字のうち、小数を含む値や int型の範囲を超える桁数の値は int型に変換できません。

小数点以下は丸めても近似値を使いたい場合や、計算結果が必ず int型に収まるものだとわかっている場合などにキャストが利用されます。

意識的に行うキャスト変換を明示的なキャストといいます。


キャストの使い方

(データ型)変数名;

キャストする場合、元の基本型のデータ範囲とキャスト後の基本型のデータ範囲に注意する必要があります。

※データ範囲が大きい基本型(double型など)から小さい基本型(int型など)へキャストすると精度は保証されなくなります。   


また明示的に記述していなくても Java実行環境からより広いデータ格納領域の型への変換要求があった場合、代入や計算結果が自動的に型変換されることがあります。

これを暗黙的なキャストといいます。


明示的なキャストと暗黙的なキャストのサンプルコードを確認しましょう。

public class Sample5 {
	public static void main(String[] args) {
		int i = 10;
		int j = 3;

		float result1 = i / j;
		System.out.println("暗黙的なキャスト = " + result1);

		float result2 = (float) i / (float) j;
		System.out.println("明示的なキャスト = " + result2);
	}
}


実行結果:

暗黙的なキャスト = 3.0
明示的なキャスト = 3.3333333

暗黙的なキャストでは宣言した変数は int型のため計算結果も int型になります。

そのため小数点以下が切り捨てられて 3となります。

整数 3が float型に代入され実行結果は 3.0となりました。

明示的なキャストでは int型で宣言した変数を float型にキャストしたため、計算結果も float型になります。

そのため小数点以下を含めて計算され 3.33333…となり実行結果もそのまま小数点以下が表示されています。



型推論(var)

Java 10以降では varキーワードを利用することで、変数を宣言する際にデータ型を省略できるようになりました。

varはローカル変数型推論と呼ばれ、フィールド定義では使えません。


varの宣言方法

var 変数名 = 初期値;

ローカル変数を定義するとき、今までは「型 変数名 = 初期値」と記述しましたが、型の部分を varで置き換えることで型の指定を省略して記述出来ます。

varを使用するとコンパイラーが初期値から型を推論して、自動的に型を決定します(型推論)。

初期値から型を推論するため初期値を省略することはできず、ローカル変数だけでしか使えないことを覚えておきましょう


varを用いることで型が自動で指定されるかサンプルコードで確認しましょう。

(eclipceの環境が Java 10以降であることを確認してください)

public class Sample6 {
	public static void main(String[] args) {
		var num1 = 3.14;
		var num2 = "円周率";

		System.out.println(num1);
		System.out.println(num2);
	}
}


実行結果:

3.14
円周率

初期値から varが自動で型を指定していることが確認できました。


まとめ

今回の記事では「変数」、「定数」について詳しく解説しました。

これらの紹介した方法は基本的な部分の学習やプログラムの可読性の向上につながるものです。

基本的な文法を理解しておけばさまざまな操作を行うことができます

プログラムの応用にも使える技術があるので使い方はしっかりと覚えておきましょう!

他の記事では紹介した項目について本記事よりも詳しく解説しているものがあるので興味がある方はぜひ読んでみてくださいね。

関連記事リンク:【Java】 命名規約<命名ルールと予約語、命名規約の目的と注意すべき点>【Java】 変数の種類や定数の特徴、定数にまつわる列挙型の解説【Java】定数をまとめてグループ化⁉可読性向上『列挙型(Enum)』の解説‼【Java】final 修飾子の使い方は?変数やメソッドなどでの利用方法まとめ

【著者】

松倉祥大

はじめまして。フォワードソフト株式会社の松倉です。
システムエンジニアとして働き始めたのが2020年4月です。経験や知識がない状態で入社した私は、フォワードソフトの教育研修で一からプログラミングの勉強をしました。教育研修を卒業後、Javaのプログラミングについて初学者向けの記事を共同で制作しています。
知識や経験はまだまだですが、これからいろんな職場で様々な経験しながら勉強していきたいと思っています。

編集した記事一覧

正社員/フリーランスの方でこのようなお悩みありませんか?

  • 自分に合う案件を定期的に紹介してもらいたい
  • 週2、リモートワークなど自由な働き方をしてみたい
  • 面倒な案件探し・契約周りは任せて仕事に集中したい

そのような方はぜひ、Workteriaサイトをご利用ください!

  • 定期的にご本人に合う高額案件を紹介

  • リモートワークなど自由な働き方ができる案件多数

  • 専属エージェントが契約や請求をトータルサポート

よく読まれている記事
【Java】JSPでタグライブラリを使う(JSTL)

【Java】JSPでタグライブラリを使う(JSTL)

こんにちは。エンジニアの新田です!ここでは、システムエンジニアとして働いている私が、システム開発手法や開発言語について紹介していこうと思います。今回は、JSPの標準タグライブラリ「JSTL」について紹介します。Javaについて勉強している方、Webアプリケーションを構築したいと思っている方の参考になれば幸いです!関連記事リンク: 【Java】JSPの基本的な構文/【Java】JSPのアクションタグ

【Java】Stringクラス文字列を操作するメソッドの使い方まとめ!実例も紹介!

【Java】Stringクラス文字列を操作するメソッドの使い方まとめ!実例も紹介!

こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者✅にも、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!そもそもStringとは何?『 String 』... Java言語において文字列のデータ型を指します。基本デ

【Java】文字列の置き換え(String#format)!エスケープシーケンスのまとめも!!

【Java】文字列の置き換え(String#format)!エスケープシーケンスのまとめも!!

こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者✅にも、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!Stringクラスformatメソッドの文字列整形【java.utilパッケージ】Formatterクラスfo

【Java】文字列格納後に変更可能!?StringBufferクラスとStringBuilderクラス!

【Java】文字列格納後に変更可能!?StringBufferクラスとStringBuilderクラス!

こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者にも✅、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!文字列を扱う3つのクラス【java.langパッケージ】java.langパッケージの文字列を扱うクラスにはS

【Java】値?変数?型??しっかり解説!『データ型(プリミティブ型と参照型)』

【Java】値?変数?型??しっかり解説!『データ型(プリミティブ型と参照型)』

こんにちは。新人エンジニアのサトウです。システムエンジニアとして駆け出したばかりですが、初心者なりの視点でわかりやすい記事を心がけていますので参考になればうれしいです。プログラム初心者✅にも、プログラムに興味がある人✨も、短い時間で簡単にできますのでぜひこの記事を読んで試してみてください!プリミティブ型と参照型プログラム開発では型を持った変数を使ってデータのやり取りをしますが、データ型によって仕様