変数とデータ型

ライン公式アカウント
オンラインレッスンのお得なクーポン配信しています!
このチャプターの目次

変数とは?

変数とは、「データを入れる箱のようなもの」です。データとは、「プログラムの中で扱う値や状態」のことです。値や状態を覚えておく場所として変数を使います。
この変数には、「a」という名前がついています。変数名と言います。aという名前の変数経由でメモリを操作している、ということです。
具体的には、データを保存する場所はコンピュータ内のメモリという記憶装置になります。メモリのどこにデータが格納されているかはアドレスから判定しますが、プログラムではアドレスを意識する必要はありません。
「データを入れる箱」には名前をつけることができるのです。名前のついた変数を操作することで、メモリにアクセスすることができるのです。
値や状態は状況によって変化します。保存するデータは何度も書き換えることができるので「変数」と言います。

データ型

データ型とは、変数に保存するデータの種類のことです。Javaで変数を使用するにはデータ型を意識する必要があります。 ※ Java10より型推論が利用できるようになりましたが、本講座では割愛させていただきます。

基本データ型

値を単体で保存するためのデータ型です。データ型は4種類で8つのデータ型があります。同じ種類にある複数のデータ型の違いはサイズです。変数の箱の大きさが異なるイメージで、「表現能力が違う」ということです。
種類データ型サイズ値の範囲
整数byte8ビット(1バイト)-128〜127
short16ビット(2バイト)-32,768〜32,767
int32ビット(4バイト)-2,147,483,648〜2,147,483,647
long64ビット(8バイト)-9,223,372,036,854,775,808〜9,223,372,036,854,775,807
浮動小数点float32ビット(4バイト)±3.40282347E+38〜±1.40239846E-45
double64ビット(8バイト)±1.79769313486231570E+308〜±4.94065645841246544E-324
文字char16ビット(2バイト)0〜65,535
真偽値boolean(JVMの実装による)true または false
  • 整数
    • 4つのデータ型があります。違いはサイズです。保存できる値の範囲が異なります。整数のデフォルトはint型になります。
  • 浮動小数点
    • 2つのデータ型があります。浮動小数点のデフォルトはdouble型になります。
  • 文字
    • 1文字を格納するためのデータ型です。「’」(シングルクォーテーション)で括られた1つの文字を保存することができます。内部的には数値として扱われます。参照型の文字列とは異なるデータ型です。
  • 真偽値
    • 真か偽かを保存するためのデータ型です。値はtrueまたはfalseの2種類になります。後述の分岐や繰り返しの制御文で利用されます。

参照型

値を単体ではなく、構造物として保存するデータ型のことを参照型と言います。後述の配列やクラスなどがそれにあたります。
Javaの扱えるメモリには
  • スタック
    • 小さなメモリ領域
  • ヒープ
    • 大きなメモリ領域
例えば、以下のような変数を宣言するプログラムがあるとしましょう。
基本データ型のintの変数iに10を代入すると、スタック領域に変数iの箱が作られ、この箱の中に値10が入ります。参照型のStringの変数strに”あいうえお”を代入すると、スタック領域に変数strの箱が作られます。“あいうえお”はヒープ領域に実体が作られ、ここに保存されます。この実体はメモリの1001番地のアドレスに保存されていたとしましょう。変数strの箱にはアドレス1001が代入されます。1001番地の実体を参照するようになります。変数は、メモリの実体を参照しているということです。

文字列

文字列のデータ型は基本データ型ではなく参照型の1つ、String型になります。「“」(ダブルクォーテーション)で括られた文字データのことです。”あいうえお”のような文字群の事で参照型の1つです。char型とは異なりますので注意してください。

変数の操作

変数の宣言

変数の宣言にはデータ型と変数名を指定します。命令文の終わりには必ず「;」(セミコロン)を指定します。
int型のaという名前の変数を宣言するには、
と記述します。メモリ内に4バイトの領域が確保され、aという名前でアクセスできるようになります。

値の代入

変数に値を保存することを「代入」と言います。
「=」という記号を使います。「=」はプログラミングの世界では代入という意味になります。
宣言済みのint型の変数aに数値100を代入しています。

変数の初期化

変数に、初めて値を代入することを「初期化」と言います。
変数の宣言と同時に初期化することができます。

変数への再代入

すでに値の入っている変数に別の値を代入することが可能です。

変数同士の代入

変数同士の代入も可能です。
dとeの値はどちらも150になります。

値の参照

変数(メモリ)から値を取り出して利用することを「参照」と言います。
System.out.printlnという命令文で、標準出力(System.out)に出力するという処理です。この例だと1000が出力されます。

変数とデータ型のルール

変数の命名

変数名はプログラマーが自由につけることができます。以下のようなルールがあります。
  • 英数字と「_」(アンダースコア)と「$」(ドルマーク)が使用可能
  • 数字は1文字目に使えない
  • 予約語は使えない

データ型の変換

あるデータ型の値を別のデータ型に変換する操作を型変換と呼びます。Javaでは、以下の3種類の型変換があります。プログラムで演算をする際のデータ型のルールです。
  1. 暗黙の型変換
    1. 表現力の小さなデータ型の値を表現力の大きなデータ型の変数に代入する際に自動的に行われる型変換の事
      数値10はint型の値です。サイズの大きなlong型に変換可能です。さらに、long型の値は、小さなサイズのfloat型に変換可能です。longは整数、floatは浮動小数点で、longの方がサイズは大きいですが、floatは指数表記(E+38)でlongの値範囲を表現できるので、型変換が可能となります。
      💡 ただし丸めが生じる可能性あり。
  1. 明示的な型変換
    1. 大きなデータ型の値を小さなデータ型の変数に代入する場合、明示的な型変換が必要です。
      の記述で型変換する事をキャストと言います。内のデータ型は、変換先のデータ型を指定します。
  1. 演算による型変換
    1. データ型が異なる値同士の演算がスムーズに行えるように、Javaが自動的に型変換を行うことがあります。
      • データ型が同じであれば演算結果も同じになる
        • 実行結果
      • 整数型の異なるデータ型同士の演算では、大きいデータ型に合わせられる
        • 実行結果
      • 整数と浮動小数点の演算では、浮動小数点型に型変換される
        • 実行結果