【Java徹底解説-番外編-】参照型とプリミティブ型の違いについて分かりやすく解説!

Javaのデータ型は参照型とプリミティブ型の二つに分類することができます。

プログラミング始めてからすぐのうちは、あまり意識する必要はありませんが参照型とプリミティブ型を理解することは上級プログラマへの一歩です。

実際に仕事の現場でテストをしているとベテランのプログラマでもよくあるミスの原因にもなっています。

この機会にぜひ覚えていきましょう。

参照型とプリミティブ型とは?

参照型とプリミティブ型とは何かということを説明する前にまずはデータ型を二つに分類すると次のようになる。

プリミティブ型:byte, short, int, long, char, float, double, boolean
参照型:String, Array, Class, 配列

プリミティブ型とはメモリに直接値を書き込むことができる変数のことで、原則メソッドを持つことができないデータ型のことです。

といってもコンピュータの中身のことは人間にはよく分からないため、プログラミングをする上では一番簡単な型という認識で問題ありません。

 

プリミティブ型の特徴

・データをメモリに直接書き込める値

・メソッドを原則持たない。

逆に参照型とはメソッドを持つ変数のことで、例えばString型などは比較するためのequals()メソッドなどを持っています。

また、メモリに直接値を書き込むことができない変数のためC言語でいうポインタと呼ばれる値を参照するためのアドレスなどを保持しています。

 

参照型の特徴

・メモリを参照するためのアドレスを保持している

・メソッドを持つデータ型

この時点ではプログラミングをする上で参照型とプリミティブ型の違いを覚える意味ってあるの?と思ってしまいますね。

では次に参照型とプリミティブ型を意識する重要性を確認していきましょう。

 参照型とプリミティブ型を覚えることの重要性

それでは参照型とプリミティブ型の重要性を確認するため次のプログラムの実行結果を予想してみましょう。

public class dataSample {
public static void main(String[] args) {
String str1 = new String(“Good”);
String str2 = new String(“Good”);

System.out.println(“str1 = str2 : ” + (str1 == str2));
System.out.println(“str1.equals(str2) : ” + str1.equals(str2));

}
}

str1とstr2は同じ”Good”という値が入っているから二つともTRUE・・・ではないのです。

実行結果は次のようになります。

str1 == str2 : false

str1.equals(str2) : false

それでは同じ値が格納されているのになぜこのような結果になったのでしょうか。

“equals()”と”==演算子”について

 

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

ABOUTこの記事をかいた人

某私立有名大学に在学中、有名ポータルサイト企業のハッカソン出場経験複するが、周囲とのプログラミングや技術力の差を実感する。 大学卒業時の就職活動で技術力をアピールするためプログラミングの学習をひたすら行い、現在某有名企業でWebアプリケーションエンジニアとして活躍中。これからは自分が経験した学習方法を発信してプログラミングが分かる楽しさを伝えていきたいと思っています!