データ型

基本型と参照型とは

プログラムのデータ型は「文字列」「整数」「小数」「論理値」など色々ありますが、Javaでは 「基本型(プリミティブ型)」と「参照型」 の2つ大きくわかれます。

基本型(プリミティブ型)

基本データ型はプリミティブ型ともいいます。プリミティブ型の一覧です。

データ型 タイプ サイズ データ範囲
void なし 型がない
boolean 論理型 1bit true or false
char 文字型 16bit \u0000~\uFFFF(Unicode)
byte 整数型 8bit -128~127
short 整数型 16bit -32,768~32,767
int 整数型 32bit -2,147,483,648 ~ 2,147,483,647
long 整数型 64bit -9,223,372,036,854,775,808~9,223,372,036,854,775,807
float 浮動小数型 32bit ±3.4028235E+38~ ±1.401298E-45
double 浮動小数型 64bit ±1.79769313486231570E+308 ~ ±4.94065645841246544E-324

参照型

参照型は以下に分類できます。

  • クラス型
  • 配列型
  • インタフェース型

どれを利用するかは、プログラムの考え方によって人それぞれです。

クラス型

Javaではプリミティブ型ごとに対応したクラスファイル(ラッパークラス)が用意されており、これをクラス型といいます。クラス型はオブジェクトというものに自動変換され、より簡単にデータ処理することが可能です。

クラス型 タイプ プリミティブ型
Boolean 論理型 boolean
Integer 整数型 int
Character 文字型 char
String 文字列型 なし
Float 実数型 float
Double 実数型 double

配列型

配列とは、複数の変数を格納する箱のようなもので、Javaではデータ型を配列と組み合わせて定義できます。配列に関しては別の章で説明します。

データ型 タイプ
int[] 整数配列
String[] 文字列配列

インタフェース型

インターフェイス型は別の章で説明しますが、実際に値を代入したり処理はせず、定義を抽象化するためのデータ型です。

interface Item {
	String name;
	int price;
	int amount;
}

リテラル

リテラルとは

リテラルは、プログラムに記述する文字列や数字のことです。「コーヒー」は文字リテラル、「120」は整数リテラルといいます。

変数にリテラルを代入

=(イコール)を使って、変数に値を入れることを代入といいます。

データ型 変数 = 値;

= は数学でいう「同じ」という意味ではなく、右辺の値を左辺に代入することです。

文字列リテラルの代入

文字列リテラルは "(ダブルクォーテーション)で囲みます。

String name = "コーヒー";

文字列のシンタックスエラー

文字列を"(ダブルクォーテーション)で囲まないとシンタックスエラーになります。

整数リテラルの代入

「120」や「5」は整数なので、整数リテラルで代入します。

price = 120;
amount = 5;

小数(float)のリテラルの代入

float型は小数をあつかえますが、リテラル値は数値の最後に「f」 をつけます。

0.1f

データ型違う代入はエラー

整数型(int)の変数に、実数型(float)のリテラル値を代入するとコンパイルエラーになります。

//int に float を代入しようとしてエラー
amount = 0.1f;

論理値(boolean)のリテラルの代入

boolean型は true か false のどちらか入力します。

isSale = true;

リテラル値代入のまとめ

変数定義とリテラル値の代入のコードです。

package item;

public class Drink {

	public static void main(String[] args) {
		String name;
		int price;
		int amount;
        boolean isSale;
		
		name = "コーヒー";
		price = 120;
		amount = 5;
        isSale = true;
	}

}

変数のコンソール出力

コンソール表示

System.out.println() で、変数に入っている値をコンソール表示してみましょう。

System.out.println(name);
System.out.println(price);
System.out.println(amount);
System.out.println(is_sale);
結果
コーヒー
120
5
true

定数

定数は代入したら変更はできない定まった値です。Javaの定数は先頭にfinalを記述します。

final データ型 定数名 = 値;

定数の定義

定数に小数値を代入して、コンソール表示してみましょう。

final float TAX_RATE = 0.1f;
System.out.println(TAX_RATE);
結果
0.1

代入エラー

定数にあとから値を代入しようとすると、コンパイルエラーになります。

final float TAX_RATE = 0.1f;
TAX_RATE = 0.08f;
System.out.println(TAX_RATE);

ソースコード

item/Drink.java
package item;

public class Drink {

	public static void main(String[] args) {
		String name;
		int price;
		int amount;
		
		String name;
		int price;
		int amount;
        boolean isSale;
		
		name = "コーヒー";
		price = 120;
		amount = 5;
        isSale = true;

		System.out.println(name);
		System.out.println(price);
		System.out.println(amount);
        System.out.println(isSale);
		
		System.out.println(name + "の価格は" + price + "円です");
		
		final float TAX_RATE = 0.1f;
		System.out.println(TAX_RATE);
	}

}

演習問題

問題1

つぎのデータ型で「整数型」はどれですか?

  1. int
  2. boolean
  3. char
  4. float

問題2

つぎのデータ型で「文字列型」はどれですか?

  1. Integer
  2. Boolean
  3. String
  4. Float

問題3

「100」や「東京」などの値のことを、プログラムでは何といいますか?

  1. クラス
  2. リテラル
  3. 変数
  4. 定数

問題4

つぎの変数の定義で正しいのはどれですか?

  1. String city = "東京";
  2. int city = "東京";
  3. Boolean city = "東京";
  4. final city = "東京";

問題5

つぎの定数の定義で正しいのはどれですか?

  1. final TOKYO = "東京";
  2. final int TOKYO = "東京";
  3. String TOKYO = "東京";
  4. final String TOKYO = "東京";