【Java入門】イラストで解説!データ型と変数・定数/代入の扱いについて

プログラミング

皆さんこんにちは、Taro Techです。
今回は「Javaにおけるデータ型と変数・定数および代入」について解説していきます。

Javaにはデータ型という概念が存在し、数字や文字など扱うデータによって型が異なってきます。

今回のデータ型はJavaをはじめとしたプログラミングならではの考え方なので、初心者の人は基本原則を押さえてコツをつかんでいきましょう。

見本コードと実行結果

public class Training {
	public static void main(String[] args) {
		// データ型を用いた基本文
		byte a = 1; ・・・①
		//または
		String str;・・・②
		str = "データ型";

		System.out.println(a);
		System.out.println(str);
	}
}
実行結果

【書式】
データ型 変数名(任意の変数名) = ;
または
データ型 変数名;
 変数名 = ;


Javaでは値を扱うときに、データ型を宣言したあと任意の変数名をつけてそこへ値を入れて使うイメージです。

代入の扱い

Javaにおいては代入は「=」で扱います
本来「=」といえばa=1は「Aと1が等しい」という意味になりますが、Javaでは「aに1を代入する」という意味になるので注意しましょう。

変数

変数とはプログラム中で扱う変更可能なデータのことを指します。
扱いたいデータのデータ型を宣言した後に、そのデータ型に名前を付けてあげる必要があります。その名前を変数名と呼びます。

public static void main(String args[]){
    int number;
    number = 1;
}

上記の例だと、int型のデータ型を宣言した後にnumberという変数名を付けています。
またこのnumberという変数が使える範囲は、上記の赤色の{}で囲まれた範囲でのみ利用することができます。

1.データ型とは

データ型とは「データを入れる領域の形や使い方」を指します。
一般的に、データ型は箱のようなイメージで説明されることが多いですが、正確に言うと、プログラミングでデータを扱う際にそのデータを格納するための箱のような領域がコンピュータのメモリ上(人間でいう脳みたいなところ)に作られて、そこへデータを格納して使用するイメージです。

データ型のイメージ

扱うデータによって型や扱える範囲が決まっているため、型が異る場合やデータの範囲が超えている場合にはデータを領域に格納することはできません。

2.データ型の種類

データ型は大きく分けて2種類存在します。

基本データ型:数値や文字(文字コード)、真偽値(真or偽)を扱うデータ型
参照型:オブジェクトを使用するための型

2-1.基本データ型

基本データ型は数値や文字、真偽値を扱う型です。

基本データ型

①整数を扱う型(byte、short、int、long)
②実数を扱う型(float、double)
③文字を扱う型(char)
④真偽値を扱う型(boolean)

①整数を扱う型
byte型、short型、int型、long型の4種類があり、それぞれ1バイト、2バイト、4バイト、8バイトで整数を格納することができる型です。
特にプログラミングをする際はint型をよく使いますが、サイズが大きいのでメモリの効率を考えるなら扱う整数の桁数に応じて型を使い分けるのが良いでしょう。
*1バイト=8ビット

byte number1 = 10;
short number2 = 100;
int number3 = 1000;
long number4 = 10000000000000L;
(long型はint型で指定できる範囲を超える整数を指定する場合、末尾にLをつける)

②実数を扱う型
float型、double型の2種類があります。それぞれ4バイト、8バイトで実数値を扱うことができます。
実数は浮動小数点数とも呼ばれ、JavaではIEEE754という浮動小数点数の規格を採用しています。
float型については少数の後ろにF(またはf)をつけてあげて宣言します。

float f = 1.5F;
double d = 2.5;

③文字を扱う型
char型の1種類が存在します。文字1文字を扱うための型で大きさは2バイトです。
プログラム内では文字データを各文字に対応する文字コードに置き換えて扱います。
JavaではUnicodeというコードを用いてすべての文字について1文字2バイトの数値として扱っています。
文字を扱うときは、変数を指定した後に扱いたい文字1文字を「”」(シングルクォーテーション)で囲みます。指定の仕方は文字をそのまま指定するか、\uの後に扱いたい文字に相当する4桁の数字を指定して扱います。

Unicodeエスケープシーケンス変換|コードをホームページに載せる時に便利 | すぐに使える便利なWEBツール | Tech-Unlimited
Unicodeエスケープシーケンスの変換ツール。
//c1、c2ともに平仮名の「あ」を表しています
char c1 = 'あ';
char c2 = '\u3042';

④真偽値を扱う型
boolean型の1種類が存在します。真(true)か偽(false)の2種類のみを扱うことができます。
boolean型は主に、条件判定の際の真偽で使用されます。

boolean b1 = true;
boolean b2 = false;

基本データ型の一覧

2-2.参照型

参照型はオブジェクト型を使用(参照)するための型を総称して参照型といいます。代表的なものに文字列を扱うString型や同一型の変数をまとめて複数格納できる配列などがあります。標準で多くの型がありますが、使いたい型を自由に自分で定義できるという特徴があります。(この話は別記事で紹介します)

参照型

①文字列を扱う型(String)
②配列

①文字列を扱う型
文字列はString型で扱います。冒頭で登場したchar型が文字1文字を扱うのに対して、String型は0文字以上の文字列を扱います。
文字列を扱う際は、変数を指定した後に扱いたい文字列を「””」(ダブルクォーテーション)で囲みます。

//str1は空文字を表す
String str1 = "";
String str2 = "Taro Tech";
//str3の2021は整数ではなく文字列として認識される
String str3 = "2021";

文字列は0文字以上を扱えると述べましたが、0文字というのはJavaでは「空文字」として扱います。
上記のstr1のようにダブルクォーテーションのみ記述してあげることで空文字として指定できます。
またstr3は2021という整数としても扱える値を指定していますが、ダブルクォーテーションで囲むことによってコンピュータ内では文字列として認識されます。

②配列
配列は基本データ型および参照型で同じデータ型の複数データを、同じ名前でまとめて管理できる型です。データは先頭から番号(0から始まる添え字)で区別します。

【配列の指定の仕方】
データ型[] 変数名;
変数名 = new データ型[要素数];

もしくは
データ型[] 変数名 = new データ型[要素数];
もしくは
データ型[] 変数名 = {値, 値, 値,・・・値};

//基本データ型の配列
int[] numbers;
numbers = new int[3];
numbers[0] = 1;
numbers[1] = 2;
numbers[2] = 3;
//もしくは
int[] numbers = new int[3];
numbers[0] = 1;
numbers[1] = 2;
numbers[2] = 3;
//もしくは
String[] messages = {"おはよう", "こんにちは", "こんばんは"};
→要素数を指定していないが自動的に要素数は3と決まる

上記のように配列では、あらかじめ配列のデータ型と変数名を指定してあげます。
そのあとに中身を先頭の0番から指定していきます。
ここで注意なのが、要素数(配列の長さ)をNと指定したら配列の添え字は0~(N-1)となります。

配列のイメージ

2-3.基本データ型および参照型のイメージ

Javaのメモリ領域ではスタック、ヒープ、メタスペースが使用されます。
そのうち基本データ型はスタック領域で完結し、参照型はヒープ領域のアドレスを参照しています。
下記では図説していますが、最初はプログラミングをする際にあまり意識しなくても大丈夫です。

基本データ型および参照型のデータ処理イメージ

3.定数

Javaには変数があれば定数も存在します。
定数は同じ値を繰り返し使いたいときに便利なものとなります。

【書式】
final データ型 変数名(大文字) = 値;

public static void main(String args[]){
    final int MT_FUJI = 3776;
    final double TAX_RATE = 0.1;
}

定数に名前を付ける場合は一般的に大文字で指定し、単語と単語の間は「_」(アンダーバー)で区切ります。また、有効範囲は上記の赤色の{}で囲まれた範囲でのみ利用することができます。

使用例

public class Calculate {
	public static void main(String args[]) {
		final double TAX_RATE = 0.1;
		int chocolatePrice = 100;
		int candyPrice = 20;

		double taxChocolatePrice = chocolatePrice + chocolatePrice * TAX_RATE;
		double taxCandyPrice = candyPrice + candyPrice * TAX_RATE;

		System.out.println("チョコレートの税込み価格は" + taxChocolatePrice + "円です。");
		System.out.println("キャンディーの税込み価格は" + taxCandyPrice + "円です。");
	}
}
実行結果

上記の例のように税込み価格を計算したいときに、あらかじめ定数を宣言しておくことで楽にコーディングできるようになります。

3-1.定数と変数の違い

変数は宣言しても同じ変数に何度も値を代入することができますが、定数は一度値を代入したら再度異なる値を代入することはできません。

変数の場合

public class Training3 {
	public static void main(String args[]) {
		int a = 1;

		System.out.println(a);

		//aに値を再代入
		a = 2;
		System.out.println(a);
	}
}
実行結果

変数の場合、aという変数に1を代入して画面表示させた後に再度2という値を代入して表示させると、上記の実行結果のようにエラー無くそれぞれ1と2が表示されます。

定数の場合

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

		final int TAX = 10;


		System.out.println(TAX);

		//TAXに値を再代入
		TAX = 20;
        System.out.println(TAX);
	}
}
実行結果

このように定数に対して異なる値を再度代入して実行しようとしてもエラーメッセージが表示されてしまいます。

もし異なる値を利用したい場合は異なる変数名で再度定数宣言しましょう。

4.確認問題

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

      //処理を記述
	}
}
実行結果

Q.上記のように値を表示させてみよう。(ただし2021は定数として宣言すること。)

tips
値を表示して改行:System.out.println(表示させたい変数/定数を指定);

5.確認問題の解答

public class Question1 {
	public static void main(String args[]) {
		int a = 1000000;
		double b = 2.55;
		char c = 'A';
		boolean d = false;
		String e = "データ型の確認問題";

		final int THIS_YEAR = 2021;

		System.out.println(a);
		System.out.println(b);
		System.out.println(c);
		System.out.println(d);
		System.out.println(e);
		System.out.println(THIS_YEAR);
	}
}

いかがだったでしょうか?
それぞれデータの型に応じて適切な変数宣言を行うようにしましょう。

コメント

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