はじめに
Javaの内容で知らなくてもコードが書けてしまうことがあります。
ただし、知らないことで予期せぬ事態に繋がることはよくあることです。
Javaで知らずに使っていたけど、そういうことだったんだ!とかそうやって使い分けるんだ!というような内容をまとめていきます。
今回は値(プリミティブ)型と参照(オブジェクト)型の違いについて説明します。
値(プリミティブ)型
値型(またはプリミティブ型)は、基本的なデータ型であり、Javaでは以下の8つのプリミティブ型が提供されています。
型 | 説明 |
---|---|
byte | 8ビット整数 |
short | 16ビット整数 |
int | 32ビット整数 |
long | 64ビット整数 |
float | 単精度32ビット浮動小数点数 |
double | 倍精度64ビット浮動小数点数 |
char | 16ビットUnicode文字 |
boolean | 真偽値(trueまたはfalse) |
プリミティブ型は、メモリ上に直接値を保持し、オーバーヘッドが少なく、効率的に動作します。
しかし、プリミティブ型にはメソッドが存在しません。
参照(オブジェクト)型
参照型は、オブジェクトを参照するための型です。
Javaでは、クラス、インターフェース、配列が参照型に該当します。
参照型の変数は、実際のオブジェクトを指す参照(ポインタ)を保持します。
例として、以下のクラス型があります。
データ型 | 説明 |
---|---|
Integer |
int のラッパークラス |
Double |
double のラッパークラス |
String | 文字列を扱うクラス |
参照型は、メソッドを持つことができ、オブジェクトに対する操作を行うための豊富な機能を提供します。
値型と参照型の具体例
intとInteger
intはプリミティブ型であり、Integerはそのラッパークラスです。以下に例を示します。
int num = 10; // プリミティブ型
Integer obj = Integer.valueOf(num); // オブジェクト型
Integerクラスを使用することで、さまざまなメソッドを利用できます。
int num = 10;
Integer obj = Integer.valueOf(num);
// メソッドの使用例
String str = obj.toString(); // numを文字列に変換
int hash = obj.hashCode(); // ハッシュコードを取得
charとString
charは単一の文字を表すプリミティブ型であり、Stringは文字列を扱うクラスです。
char c = 'A'; // プリミティブ型
String str = "Hello"; // オブジェクト型
Stringクラスを使用すると、文字列操作に関する多くのメソッドを利用できます。
String str = "Hello";
// メソッドの使用例
int length = str.length(); // 文字列の長さを取得
char ch = str.charAt(0); // 文字列の特定の位置にある文字を取得
String upper = str.toUpperCase(); // 文字列を大文字に変換
まとめ
Javaでは、値(プリミティブ)型と参照(オブジェクト)型の違いを理解することが重要です。
プリミティブ型は軽量で効率的ですが、メソッドを持ちません。
一方、参照型はオブジェクト指向の特性を活かして、多くのメソッドと機能を提供します。
これらの違いを理解し、適切に使い分けることで、より効果的でメンテナブルなコードを書くことができます。
特に、ラッパークラスを使ってプリミティブ型の利便性を向上させる方法や、文字列操作におけるStringクラスの活用法は、Javaプログラマーにとって知っておくべき重要な知識です。