Javaのデータ型:プリミティブおよび非プリミティブのデータ型

公開: 2020-12-01

目次

序章

どのプログラミング言語でも、データ型は、プログラマーがデータをどのように割り当てたいかをコンピューターまたはコンパイラーに知らせるデータの属性です。 データ型は、値を割り当てるときに変数または関数に制限を追加します。

これらのデータ型は、その型の値を格納する方法やデータに対して実行できる操作など、データの動作を定義します。 javaが提供するすべてのデータ型を見てみましょう。

プリミティブデータ型

プリミティブデータ型をさらに単純なデータ型に分割することはできません。 Javaは8つのプリミティブデータ型を提供します。それらを調べてみましょう。

バイト

バイトは、-128〜127の範囲の整数を格納する整数型です。これにより、1バイトのメモリしか必要としないため、小さい数値を処理する場合のメモリ制約の問題が解消されます。 バイト変数は、「byte」キーワードを使用して宣言できます。 127より大きい値をバイトに割り当てると、「互換性のないタイプ」エラーがスローされます。

バイトn1 = 98 ;

システム アウト println(n1);

上記のスニペットは、期待どおりに98を出力します。

短い

shortは、-32768〜32767の範囲の整数を格納する整数型であり、ディスクから2バイトのメモリを消費します。 短い変数は、「short」キーワードを使用して宣言できます。 32767より大きい値を短い変数に割り当てると、「互換性のないタイプ」エラーがスローされます。

短いn1 = 9876 ;

システム アウト println(n1);

上記のスニペットは、出力として9876を出力します。

Int

intは、-2147483648から2147483647までの整数を格納する整数型であり、ディスク内で4バイトのメモリを消費します。 一般に、プログラマーは、整数を使用して数値を格納する変数を宣言することを好みます。 範囲より大きい値を割り当てようとすると、Javaコンパイラは「互換性のないタイプ」エラーをスローします。

int n1 = 987654 ;

システム アウト println(n1);

上記のスニペットは、出力として987654を出力します。

長さ

さて、これはディスク内の8バイトのメモリを消費する興味深いデータ型です。 これは、-9223372036854775808から9223372036854775807までの範囲の整数を格納する整数型であり、その範囲の読み取りにはかなりの時間がかかります。

これは、実行する操作でintデータ型がオーバーフローした場合に使用されます。 割り当て中は、値を「L」で終了する必要があることに注意してください。

long n1 = 987654321098765L ;

システム アウト println(n1);

上記のスニペットは、予想どおり987654321098765を出力します。

浮く

Floatは浮動小数点データ型です。つまり、小数点以下の精度を含む値を格納できます。 あなたがすべての支出を記録するためのコードを開発したと仮定しましょう。しかし、あなたは非常に厳格で、あなたが費やした各ペニーを追跡したいと思っています。 その場合、intは整数しか格納できないため、intはその役割を果たしません。

このタスクには浮動小数点データ型が必要です。 floatは、3.4e-038から3.4e + 038の範囲の小数を格納でき、最大7桁の10進数の精度を格納できます。 値は「f」で終了する必要があることに注意してください。

float n = 98.76f ;

システム アウト println(n);

上記のスニペットは、出力として98.76を出力します。

読む: JavaBeansのプロパティと利点:どのように利用する必要がありますか?

ダブル

Doubleはfloatに似ていますが、名前が示すように、小数精度の場合はfloatの2倍になります。 15桁の小数精度を持ち、1.7e-308から1.7e+308の範囲の小数を格納できます。 値は「d」で終了する必要があることに注意してください。

floatとdoubleの違いを理解するために、コードを見ていきましょう。

パブリッククラステスト{

public static void main String args [])

{{

float a1 = 1.f / 70 ;

float b1 = 0 ;

ダブルa2 = 1.d / 70 ;

double b2 = 0 ;

float f1 = 1f ;

double f2 = 1d ;

for int i = 0 ; i < 490 ; i ++ ){

b1 = b1 + a1;

b2 = b2 + a2;

if (i > 1 && i <= 50 ){

f1 = f1 * i;

f2 = f2 * i;

}

}

システム アウト println(b1); //ライン1

システム アウト println(b2); //2行目

システム アウト println(f1); // line3

システム アウト println(f2); // line4

}

}

一方、式「(1/70)* 490」を計算すると、答えとして7が得られますが、floatとdoubleを使用してJavaで実行すると、別の答えが得られます。 上記のスニペットでは、float変数とdouble変数は1/70で初期化されており、この値を別の変数に490回追加すると、答えとして7が得られます。

上記のスニペットを実行すると、1行目は7桁の10進数の精度を持つ6.9999795を出力し、2行目は15桁の10進数の精度を持つ6.999999999999978を出力します。 したがって、floatで正確な小数精度が得られない場合は、doubleを選択できます。 また、フロートの範囲はダブルに比べて小さいため、フロートは無限大に達する可能性が高くなります。

たとえば、かなり大きな数の階乗を格納すると、その変数は無限大になります。 上記のスニペットから、50の階乗を格納するために使用される2つの変数があり、結果を出力するときに、3行目は無限大を出力し、4行目は3.0414093201713376E64を出力するため、floatが数値に合わない場合範囲からあなたはダブルを選ぶことができます。

floatとdoubleはどちらも、「e」の付いた科学的数値として使用できます。「e」は10の累乗を表します。たとえば、3e2fはfloatデータ型の300.0に相当し、3e4dはdoubleデータ型の30000.0に相当します。

ブール値

ブールデータ型は、trueとfalseの2つの値のみを取ることができます。これは、Javaでbooleanキーワードを使用して宣言されます。 このデータ型は通常、コードで行った変更を追跡するためのフラグ変数として使用されます。 たとえば、数値が2で割り切れる場合はフラグをtrueに設定し、それ以外の場合はfalseに設定します。

ブールフラグ= true ;

ブールb1 = false ;

システム アウト println(フラグ); //trueを出力します

システム アウト println(b1); //falseを出力します

チャー

charデータ型は、単一の文字を格納するために使用されます。このデータ型は、charキーワードを使用して宣言できます。 割り当てるときは文字を一重引用符で囲む必要があることに注意してください。charデータ型に小文字と大文字の両方を格納できます。

charデータ型に複数の文字を格納すると、エラーがスローされます。 また、charデータ型に関しては面白い事実があります。つまり、charを整数に型キャストすると、その文字のASCII値が格納されます。その逆も同様です。

char c1 = ' a ' ;

char c2 = 66 ;

システム アウト println(c1); //ライン1

システム アウト println(c2); //2行目

システム アウト println(( int )c1); // line3

上記のスニペットの1行目では、期待どおりの出力として「a」が出力されます。 行2は、66がASCIIテーブルのBを参照しているため、出力として「B」を出力します。 3行目は、ASCII値の「a」であるため、出力として97を出力します。

しかし、複数のキャラクターを保存したい場合はどうでしょうか? 次の段落でそれらに行きます。

また読む:初心者のための17の興味深いJavaプロジェクトのアイデアとトピック

非プリミティブデータ型

Javaの非プリミティブデータ型は、オブジェクトを参照するため、参照型とも呼ばれます。 非プリミティブデータ型はプログラマーによって作成され、事前定義されていません。 非プリミティブはオブジェクトと呼ばれるため、nullを割り当てることができますが、プリミティブ型の場合はそうではありません。

プリミティブデータ型とは異なり、非プリミティブデータ型は大文字で始める必要があります。 すべての非プリミティブデータ型は同じサイズであり、ディスク上の同じメモリを消費します。これは、プリミティブデータ型の場合とは異なります。

ストリング

文字列はJavaの特殊なデータ型であり、非プリミティブ型がプログラマーによって定義されているという事実と矛盾します。 文字列データ型は非プリミティブデータ型ですが、Javaで事前定義されており、特別な9番目のプリミティブデータ型と呼ばれることもあります。

これは、charが複数の文字を格納できない場合を解決し、文字列データ型を使用して文字のシーケンスを格納します。 テキストのシーケンスを二重引用符で囲む必要があることに注意してください。

String s1 = Hey There ;

システム アウト println(s1);

上記のスニペットは、期待どおりに「HeyThere」を出力します。

配列、クラス、インターフェースなどは、Javaの他のいくつかの非プリミティブデータ型です。

データ型の範囲を計算する方法は?

プリミティブデータ型の範囲を見た後、これを覚えておく必要があるのか​​疑問に思うかもしれません。 まあ、答えはノーでしょう。 ただし、各データ型のサイズを覚えておく必要があります。そうすれば、そのデータ型の範囲を計算できます。

たとえば、バイトデータ型はディスク上の1バイトのメモリを消費します。 コンパイラレベルでは、すべてのデータがビット形式で格納され、1バイトには8ビットが含まれます。 現在、8ビットのうちの1つは数値の符号を指定するために使用され、残りの7ビットは実際の数値を格納できるため、7ビットを使用して格納できる最大数は128です。

したがって、-128はバイトデータ型の下限であり、+ 127は上限です。これは、ゼロが負の数の後の数直線の最初の数値であるためです。

同様に、浮動小数点型では、データは3つの部分の符号付きビット、仮数、および指数に分割されます。 仮数部は小数精度を格納するために使用され、floatには23個の仮数ビットと1個の隠しビットがあり、doubleには52個の仮数ビットと1個の隠しビットがあります。

floatの場合、log(2 ^ 24)/ log(10)はほぼ7に等しいため、10進数の精度は7桁です。

doubleの場合、log(2 ^ 53)/ log(10)はほぼ15に等しいため、10進数の精度は15桁です。

世界のトップ大学のソフトウェアエンジニアリングコースに登録します。 エグゼクティブPGプログラム、高度な証明書プログラム、または修士プログラムを取得して、キャリアを早急に進めましょう。

結論

Javaでさまざまなデータ型を確認し、プリミティブと非プリミティブのデータ型、プリミティブと非プリミティブの違いを理解しました。 サンプルコードスニペットをウォークスルーして、データ型の宣言に関する基本的な知識を習得しました。

整数データ型のさまざまなデータ型の範囲を計算する方法、浮動小数点データ型の小数精度を計算する方法を理解しました。

Javaのさまざまなデータ型に気付いたので、それらの調査を開始してください。

Java、OOP、フルスタックソフトウェア開発の詳細に興味がある場合は、upGrad&IIIT-Bのフルスタックソフトウェア開発のエグゼクティブPGプログラムをチェックしてください。これは、働く専門家向けに設計されており、500時間以上の厳格なトレーニングを提供します。 9以上のプロジェクトと割り当て、IIIT-B卒業生のステータス、実践的な実践的なキャップストーンプロジェクト、トップ企業との仕事の支援。

未来のキャリアに備える

ソフトウェアエンジニアリングの修士号を今すぐ申し込む