型の分類とその他の主な型

目次
  • 解説
  • 1. 基本型
  • 2. 参照型
  • 3. 先頭が大文字の基本型?
問題に挑戦!
進捗を変更する




解説

1. 基本型


基本型はさらに4つの分類に分かれますが、種類としてはこれまでに学習した8種類のみです。改めて下表に整理します。

分類読み方/呼び方扱うデータ
論理値型booleanブーリアン型・
論理値型・真偽値型
正しい/真:true
正しくない/偽:false
整数型byteバイト型・
1byte符号付整数型
-128 ~ 127
※通常は整数に使用しない
shortショート型・
2byte符号付整数型
-32768 ~ 32767
※あまり使用しない
intイント型・整数型・
インテジャー型・
4byte符号付整数型
-2147483648 ~ 2147483647
longロング型・
8byte符号付整数型
-9223372036854775808
~ 9223372036854775807
浮動小数
点数型
floatフロート型・
単精度浮動小数点数型
±1.40239846×10の-45乗
~ ±3.40282347×10の38乗
doubleダブル型・
倍精度浮動小数点数型
±4.94065645841246544×10の-324乗
~ ±1.79769313486231570×10の308乗
文字型charチャー型・文字型・
キャラクター型
0 ~ 65,535
※Unicode形式で \u0000 ~ \uFFFF
※2byte符号無整数でもある

Javaプログラム上で扱うデータはすべてこのいずれかの型になります。これ以外の型、つまり参照型では、必ずその内部に基本型でデータを管理しているのです。

なお、基本型は元の英語表記のままプリミティブ型(primitive=根元的な、原始的な、基本的な)とも呼ばれます。

2. 参照型


参照型はさらに3つの分類に分かれます。なお、インターフェースはこのコースの最後に、配列はこのコースの中盤に詳細を学習します。

分類概要
クラス型String型のように「データとメソッドを内部に持つクラス」
を型として扱う。
インターフェース型「クラスがどんなデータとメソッドを持つべきかを定義する
インターフェース」を型として扱う。
この型のインターフェースに従っているクラスであれば、
この型の変数に入れることができる。
配列型「同じ型のデータを複数まとめた配列」を型として扱う。
例えば複数のStringならば「String[]」型になり、
複数のintならば「int[]」型になる。

参照型は元の英語表記のままリファレンス型(reference=参照)とも呼ばれます。基本型であれば、コンピューター内でそのデータ用に確保した領域に、実際のデータだけ入れれば済みます。しかし、クラスとなるともっとたくさんの領域が必要となりますが、毎回それを移動したり複製したりするのは大変です。そのため、「ここにあるよ」という住所のようなものをやり取りして、使う際にはそこを参照するという仕組みであるため、参照型と呼ばれるのです。

クラス型の例を下表にいくつか挙げておきます。

型名(クラス名)特徴
String・java.langパッケージに含まれる
・文字を複数管理しており、文字列として扱える
・文字列の長さ取得、文字列の置換、などのメソッドを持っている
LocalDateTime・java.timeパッケージに含まれる
・年月日時分秒などを管理しており、時点(時刻)として扱える
・時点間の加減算、時差の取得、などのメソッドを持っている
DateTimeFormatter・java.time.formatパッケージに含まれる
・LocalDateTimeなどの時点を扱うデータを
 任意の文字列に整形するための情報を扱える
・時点情報を文字列変換するためのメソッドを持っている
BigInteger・java.mathパッケージに含まれる
・long型の範囲を超える巨大な整数を扱える
・足し算:add、引き算:subtract、掛け算:multiply、
 割り算:divide、などのメソッドを持っている
BigDecimal・java.mathパッケージに含まれる
・小数点以下の桁数、または小数点以下も含む桁数の範囲内で
 誤差が発生しないように精度を指定した整数・小数を扱える
・足し算:add、引き算:subtract、掛け算:multiply、
 割り算:divide、などのメソッドを持っている

3. 先頭が大文字の基本型?


ネットで見かけるJavaのサンプルコードの中に、先頭大文字で書かれたLong型を見かける場合がありますが、これは間違いではありません。

基本型は内部にそのデータを持つ同名のクラス型(intはInteger、charはCharacter)が存在するため、それを使用しているのです。これをラッパークラス(wrapper class=包み込むクラス)と呼びます。

基本型の代わりにラッパークラスを型にすると、「null」という値自体が存在しないことを示す特殊な値を代入できることや、便利なメソッドを使用できるというメリットがあります。また、基本型を受け付けないメソッドを持つクラスなどもあり、その場合にはラッパークラスが必須となります。

ただし、nullの場合の考慮が必要になったり、大量の計算では性能が落ちるなど、正しく使わないとデメリットが発生します。まずは基本型を選択して、必要な場合のみラッパークラスに切り替えるようにしましょう。

問題

確認問題


確認問題1

この中での説明として正しいものはどれか?

確認問題2

この中での使い方として正しいものはどれか?