Javaプログラミング入門

4. データ型

最終更新:

javatutorial

- view
管理者のみ編集可

データ型とは


Javaでは、プログラムの中でさまざまな種類のデータを扱うことができます。
そのデータの種類のことをデータ型、または単にといいます。
Javaが扱うデータの具体例として、数値や文字、文字列といったデータが存在します。
こうしたデータは、それぞれ特定の「型」に分類されており、どのように扱うかが決まっています。

主な型には、次のようなものがあります。

整数値(int, long など):小さな数から大きな数までを扱います。
小数値(float, double):小数点を含む数値を扱います。
文字(char):1文字(例:'A' や '9')を表します。
文字列(String):複数の文字を組み合わせた文字列を扱います。
真偽値(boolean):true(真)または false(偽)のどちらかを持つデータです。

Javaでは、どんな種類のデータを扱うかを事前に決めておくことで、効率的にプログラムを動かすことができます。

データ型は基本型参照型に大きく分けることができます。

以下がJavaが扱うことができるデータ型の一覧になります。
データ型 基本型 論理型 boolean true(真)または false(偽)の2つの値を持ちます
boolean 型はプログラムの意思決定を行う重要なデータ型です
整数型 byte Javaの整数型の中で最も小さいデータ型です
8ビット(1バイト) のサイズを持ちます
-128から127の範囲を表現できます
short Javaの整数型の中で2番目に小さいデータ型です
16ビット(2バイト) のサイズを持ちます
-32,768から32,767の範囲を表現できます
int Javaで最もよく使われる整数型です
32ビット(4バイト) のサイズを持ちます
-2,147,483,648から2,147,483,647の範囲を表現できます
long Javaの基本型で最も大きな範囲の整数を扱うことができるデータ型です
64ビット(8バイト) のサイズを持ちます
-9,223,372,036,854,775,808から9,223,372,036,854,775,807の範囲を表現できます
浮動小数点型 float 小数を扱うためのデータ型です
約7桁の小数値を表現することができます(32ビット(4バイト)のサイズを持ちます)
±1.4 × 10⁻⁴⁵ ~ ±3.4 × 10³⁸の範囲を表現できます(例:3.1415927)
double 小数を扱うためのデータ型です
約15桁の小数値を表現することができます(64ビット(8バイト)のサイズを持ちます)
±4.9 × 10⁻³²⁴ ~ ±1.8 × 10³⁰⁸の範囲を表現できます(例:3.141592653589793)
文字型 char 1つの文字(単一の文字)を表すデータ型です
16ビット(2バイト)のUnicode文字を扱うことができます。
参照型 文字列型 String 文字列(複数の文字の並び)を扱うためのデータ型です

リテラル

プログラム内で命令文と値を識別するために定められた記述方法のことをいいます。
簡単に言うと、プログラムの中で 直接記述するデータや値のことを リテラルといいます。

リテラルの考え方

次の2つの「0」を見てください。
0 0
どちらも 「0」 に見えますが、実は左側は「数字」、右側は「数値」です。
…と言われても、見た目だけでは違いがわかりませんよね?

そこで、区別しやすいように ルール を決めましょう。
ルール①「文字列はダブルクォーテーション("")で囲む」
このルールを適用すると、次のようになります。
0 "0"
こうすると、右側の "0" は「文字列」だとわかります。
ルール② 「数値は 0~9 の数字を直接入力する」
これにより、次のように明確に区別できます。
0 "0"
数値 数字

このように、値を直接記述する方法を「リテラル」と呼びます。
Javaにはこのような、決められた書き方で表すデータの種類が豊富に用意されています。
データ型 説明
int 通常の整数表記 0, 10, 100, -50
long Lまたはlを値の末尾に付与 0L, 1000L, -1234124l
float Fまたはfを値の末尾に付与 0.0F, 1.0F, -539.25f
double 小数点を付ける
(Dまたはdを値の末尾に付与しても良いが省略可能)
3.14, -3.51D, -2.5d
char シングルクォートで囲む 'a', '1', 'B'
boolean true,falseのみ true false
String ダブルクォートで囲む "hoge", "fuga", "こんにちは"

コラム

ビットとバイト

(準備中)

単精度浮動小数点数と倍精度浮動小数点数

(準備中)

Unicodeってなんだろう?

Unicodeは2バイト(16ビット)で一文字を表現する、世界中の文字を一つにまとめ、コンピュータで扱うための国際的な標準規格です。

Javaのchar型は、2バイト(16ビット)の整数型です。
元々は、この2バイトで1つの文字を表すことを意図していました。
しかし、Unicodeの規格が拡張され、21ビットで1文字を表す文字が出現したため、char型だけではすべての文字を表現できなくなってしまいました。
主に絵文字や古代文字など、通常の16ビット形式では表現できない文字を含んでいます。
これには、漢字や特殊記号、さまざまな言語の文字も含まれます。
しかし、Javaのchar型は16ビットまでしか表現できないため、21ビットの文字を扱うことができません。
つまり、char型は厳密には「文字」ではなく、「UTF-16コードユニット」と呼ばれる16ビットの値を表す型となってしまいました。
この問題を解決するために、Java 1.5で導入されたのが「Code Point」という概念です。
Code Pointは、Unicodeで文字に割り当てられた一意の番号であり、21ビットで表現できます。
Javaでは、int型を使ってCode Pointを扱うことができます。
Stringクラスなどには、Code Pointを扱うメソッドが色々追加されるようになりました。
https://www.ne.jp/asahi/hishidama/home/tech/java/string.html#h_code_point

trueとfalseって数値なの?文字列なの?何者なの?

C言語からプログラミング言語を勉強した方は、真偽値はfalseが0、trueが0以外と習うはずです。
Javaではtrueとfalseの真偽値リテラルはどのような値になっているのでしょうか?
System.out.println()で出力してみても、真偽値はtrue,falseしか表示されません。

boolean型の実態は
https://github.com/openjdk/jdk/blob/master/src/java.base/share/native/include/jni.h
にこのように定義されています。


このように符号無しの文字型として定義されており、falseは、trueはとしてJVM上では定義されています。

Javaで使用可能なリテラルの一覧

Javaで使用できるリテラル一覧
データ型 説明
int 通常の整数表記 0, 10, 100, -50
int(2進数) 0bまたは0Bを値の先頭に付与する 0B1010, 0b110001
int(8進数) 0を値の先頭に付与する 012, 077
int(16進数) 0xまたは0Xを値の先頭に付与する 0x4A, 0X3C, 0xff
long Lまたはlを値の末尾に付与 0L, 1000L, -1234124l
float Fまたはfを値の末尾に付与 0.0F, 1.0F, -539.25f
double 小数点を付ける
(Dまたはdを値の末尾に付与しても良いが省略可能)
3.14, -3.51D, -2.5d
double, float(指数表記) eまたはEを使用する 2.5e3, 1.3E-4
char シングルクォートで囲む 'a', '1', 'B'
boolean true,falseのみ true false
String ダブルクォートで囲む "hoge", "fuga", "こんにちは"
String(テキストブロック) ダブルクォート3つで囲む """Java13以降のテキストブロック"""
参照型(nullリテラル) 参照型変数のみに使用可能 null

人気記事ランキング
ウィキ募集バナー