Datentypen in Java: Primitive und nicht-primitive Datentypen

Veröffentlicht: 2020-12-01

Inhaltsverzeichnis

Einführung

In jeder Programmiersprache ist ein Datentyp eine Zuschreibung von Daten, die dem Computer oder Compiler mitteilt, wie die Programmierer die Daten zuweisen möchten. Ein Datentyp fügt den Variablen oder einer Funktion beim Zuweisen von Werten eine Einschränkung hinzu.

Diese Datentypen definieren das Verhalten von Daten, wie z. B. die Art und Weise, wie Werte dieses Typs gespeichert werden können, und Operationen, die mit Daten durchgeführt werden können. Werfen wir einen Blick auf alle von Java bereitgestellten Datentypen.

Primitive Datentypen

Ein primitiver Datentyp kann nicht weiter in einen einfacheren Datentyp aufgeteilt werden. Java bietet 8 primitive Datentypen, lassen Sie uns sie untersuchen!

Byte

Ein Byte ist ein Integer-Typ, der ganze Zahlen im Bereich von -128 bis 127 speichert. Dadurch werden die Speicherbeschränkungsprobleme behoben, wenn Sie mit kleinen Zahlen arbeiten, da nur 1 Byte Speicher benötigt wird. Eine Byte-Variable kann mit dem Schlüsselwort „byte“ deklariert werden. Wenn Sie einem Byte einen Wert über 127 zuweisen, wird der Fehler „inkompatible Typen“ ausgegeben.

Byte n1 = 98 ;

System . aus . println(n1);

Das obige Snippet gibt wie erwartet 98 aus.

Kurz

Ein Short ist ein Integer-Typ, der ganze Zahlen im Bereich von -32768 bis 32767 speichert, er verbraucht 2 Bytes Speicherplatz auf der Festplatte. Eine short-Variable kann mit dem Schlüsselwort „short“ deklariert werden. Wenn Sie einer kurzen Variablen einen Wert größer als 32767 zuweisen, wird ein Fehler „inkompatible Typen“ ausgegeben.

kurz n1 = 9876 ;

System . aus . println(n1);

Das obige Snippet gibt 9876 als Ausgabe aus.

Int

Ein int ist ein Integer-Typ, der ganze Zahlen im Bereich von -2147483648 bis 2147483647 speichert, es verbraucht 4 Bytes Speicherplatz auf der Festplatte. Im Allgemeinen ziehen es Programmierer vor, ein int zu verwenden, um eine Variable zu deklarieren, die numerische Werte speichert. Der Java-Compiler gibt einen Fehler „inkompatible Typen“ aus, wenn versucht wird, einen Wert zuzuweisen, der größer als der Bereich ist.

int n1 = 987654 ;

System . aus . println(n1);

Das obige Snippet gibt 987654 als Ausgabe aus.

Lang

Nun, dies ist ein interessanter Datentyp, der 8 Byte Speicher auf der Festplatte verbraucht. Es ist ein Integer-Typ, der ganze Zahlen speichert, die von -9223372036854775808 bis 9223372036854775807 reichen, puh, das dauert ziemlich lange, um diesen Bereich zu lesen.

Dies wird verwendet, wenn der int-Datentyp für die von uns durchgeführten Operationen überläuft. Denken Sie daran, dass wir den Wert beim Zuweisen mit einem 'L' beenden müssen.

lang n1 = 987654321098765L ;

System . aus . println(n1);

Das obige Snippet gibt wie erwartet 987654321098765 aus.

Schweben

Float ist ein Fließkomma-Datentyp, was bedeutet, dass er die Werte einschließlich ihrer Dezimalgenauigkeit speichern kann. Nehmen wir an, Sie haben einen Code entwickelt, um alle Ihre Ausgaben zu notieren, aber Sie sind ziemlich streng und möchten jeden Cent, den Sie ausgegeben haben, im Auge behalten. In diesem Fall wird int die Aufgabe nicht erfüllen, da int nur ganze Zahlen speichern kann.

Für diese Aufgabe benötigen wir einen Fließkomma-Datentyp. Ein Float kann die Bruchzahlen im Bereich von 3,4e-038 bis 3,4e+038 speichern, es kann bis zu 7 Stellen Dezimalgenauigkeit speichern. Denken Sie daran, dass Sie den Wert mit einem 'f' beenden sollten.

Schwimmer n = 98.76f ;

System . aus . println(n);

Das obige Snippet gibt 98,76 als Ausgabe aus.

Lesen Sie: Eigenschaften und Vorteile von JavaBeans: Wie sollten Sie sie verwenden?

Doppelt

Double ist Float ähnlich, aber wie der Name schon sagt, ist es bei dezimaler Genauigkeit das Doppelte von Float. Es kann eine 15-stellige Dezimalgenauigkeit haben und Bruchzahlen im Bereich von 1,7e-308 bis 1,7e+308 speichern. Denken Sie daran, dass Sie den Wert mit einem „d“ beenden müssen.

Lassen Sie uns einen Code durchgehen, um den Unterschied zwischen Float und Double zu verstehen.

öffentlicher Klassentest { _

public static void main ( String args[])

{

Schwimmer a1 = 1.f / 70 ;

Schwimmer b1 = 0 ;

doppelt a2 = 1.d / 70 ;

doppelt b2 = 0 ;

Schwimmer f1 = 1f ;

doppelt f2 = 1d ;

für ( int i = 0 ;i < 490 ;i ++ ){

b1 = b1 + a1;

b2 = b2 + a2;

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

f1 = f1 * ich;

f2 = f2 * ich;

}

}

System . aus . println(b1); //Linie 1

System . aus . println(b2); //Zeile 2

System . aus . println(f1); //Linie3

System . aus . println(f2); //Linie4

}

}

Die Berechnung des Ausdrucks „(1/70)*490“ auf der Hand gibt uns 7 als Antwort, aber die Ausführung in Java mit float und double gibt eine andere Antwort. Im obigen Ausschnitt werden eine Float-Variable und eine Double-Variable mit 1/70 initialisiert, und das 490-fache Hinzufügen dieses Werts zu einer anderen Variablen sollte 7 als Antwort ergeben.

Beim Ausführen des obigen Snippets gibt Zeile 1 6,9999795 mit einer 7-stelligen Dezimalgenauigkeit aus, während Zeile 2 6,999999999999978 mit 15-stelliger Dezimalgenauigkeit ausgibt. Wenn Float Ihnen also keine genaue Dezimalgenauigkeit liefert, können Sie sich für Double entscheiden. Außerdem ist es wahrscheinlicher, dass ein Float die Unendlichkeit erreicht, da die Reichweite von Float im Vergleich zu Double kleiner ist.

Wenn Sie beispielsweise die Fakultät einer beträchtlich großen Zahl speichern, erreicht diese Variable unendlich. Aus dem obigen Ausschnitt können wir sehen, dass es zwei Variablen gibt, die zum Speichern der Fakultät von 50 verwendet werden, und zu dem Zeitpunkt, an dem wir das Ergebnis drucken, druckt Zeile 3 unendlich und Zeile 4 3,0414093201713376E64, wenn Float also nicht mit Ihrer Zahl übereinstimmt Reichweite, dann können Sie sich für das Doppelte entscheiden.

Sowohl Float als auch Double können als wissenschaftliche Zahlen mit einem „e“ verwendet werden, wobei „e“ die Potenz von 10 bezeichnet. Beispielsweise entspricht 3e2f 300,0 im Float-Datentyp und 3e4d entspricht 30000,0 im Double-Datentyp.

Boolesch

Ein boolescher Datentyp kann nur zwei Werte wahr und falsch annehmen. Er wird mit dem Schlüsselwort boolean in Java deklariert. Dieser Datentyp wird im Allgemeinen als Flag-Variable verwendet, um Änderungen zu verfolgen, die wir in einem Code vornehmen. Setzen Sie zum Beispiel das Flag auf „true“, wenn eine Zahl durch 2 teilbar ist, sonst auf „false“.

boolesches Flag = wahr ;

boolesch b1 = falsch ;

System . aus . println(Flag); // gibt wahr aus

System . aus . println(b1); // gibt falsch aus

Verkohlen

Ein char-Datentyp wird verwendet, um ein einzelnes Zeichen zu speichern, dieser Datentyp kann mit dem char-Schlüsselwort deklariert werden. Denken Sie daran, dass wir das Zeichen während der Zuweisung in einfache Anführungszeichen setzen müssen, es kann sowohl Klein- als auch Großbuchstaben in einem char-Datentyp speichern.

Das Speichern von mehr als einem Zeichen in einem char-Datentyp löst einen Fehler aus. Außerdem gibt es eine lustige Tatsache in Bezug auf den Datentyp char, nämlich die Typumwandlung eines Zeichens in eine Ganzzahl, in der der ASCII-Wert dieses Zeichens gespeichert wird, und umgekehrt.

char c1 = ' a ' ;

Zeichen c2 = 66 ;

System . aus . println(c1); //Linie 1

System . aus . println(c2); //Zeile 2

System . aus . println(( int )c1); //Linie3

In der obigen Snippet-Zeile 1 wird 'a' als Ausgabe ausgegeben, was wie erwartet ist. Zeile 2 gibt 'B' als Ausgabe aus, da 66 auf B in der ASCII-Tabelle verweist. Zeile 3 gibt 97 als Ausgabe aus, da es der ASCII-Wert von 'a' ist.

Aber was, wenn wir mehr als ein Zeichen speichern wollen? Wir kommen in den nächsten Absätzen zu ihnen.

Lesen Sie auch: 17 interessante Java-Projektideen und -themen für Anfänger

Nicht primitive Datentypen

Nicht primitive Datentypen in Java werden auch als Referenztypen bezeichnet, da sie sich auf Objekte beziehen. Nicht primitive Datentypen werden vom Programmierer erstellt und sind nicht vordefiniert. Da Nicht-Primitive als Objekte bezeichnet werden, kann ihnen null zugewiesen werden, was bei primitiven Typen nicht der Fall ist.

Im Gegensatz zu primitiven Datentypen muss ein nicht primitiver Datentyp mit einem Großbuchstaben beginnen. Alle nicht primitiven Datentypen haben die gleiche Größe und verbrauchen den gleichen Speicherplatz auf der Festplatte, was bei primitiven Datentypen anders ist.

Schnur

Ein String ist ein spezieller Datentyp in Java, wo er der Tatsache widerspricht, dass nicht primitive Typen von Programmierern definiert werden. Der String-Datentyp ist ein nicht primitiver Datentyp, aber er ist in Java vordefiniert, manche Leute nennen ihn auch einen speziellen neunten primitiven Datentyp.

Dies löst den Fall, in dem ein Zeichen nicht mehrere Zeichen speichern kann, ein String-Datentyp wird verwendet, um die Folge von Zeichen zu speichern. Denken Sie daran, dass Sie die Textsequenz in doppelte Anführungszeichen setzen müssen.

String s1 = Hallo da ;

System . aus . println(s1);

Das obige Snippet gibt wie erwartet „Hey There“ aus.

Arrays, Klassen, Schnittstellen usw. sind einige andere nicht primitive Datentypen in Java.

Wie berechnet man den Bereich der Datentypen?

Nachdem Sie sich die Bereiche primitiver Datentypen angesehen haben, kommen Sie möglicherweise in Zweifel, ob wir uns das merken müssen. Nun, die Antwort wäre NEIN. Aber wir müssen uns die Größe jedes Datentyps merken und dann können wir den Bereich dieses Datentyps berechnen.

Beispielsweise verbraucht ein Byte-Datentyp 1 Byte Speicher auf der Festplatte. Auf der Compilerebene werden alle Daten in Form von Bits gespeichert und ein Byte hat 8 Bits. Jetzt wird eines der 8 Bits verwendet, um das Vorzeichen der Zahl anzugeben, und die verbleibenden 7 Bits können die tatsächliche Zahl speichern, sodass die maximale Zahl, die wir mit 7 Bits speichern können, 128 ist.

Also ist -128 die Untergrenze des Byte-Datentyps und +127 die Obergrenze, da Null die erste Zahl auf der Zahlengeraden nach negativen Zahlen ist.

In ähnlicher Weise werden bei Gleitkommatypen die Daten in drei Teile mit Vorzeichen, Mantisse und Exponent aufgeteilt. Der Mantissenteil wird verwendet, um die Dezimalgenauigkeit zu speichern, ein Float hat 23 Mantissenbits plus ein verstecktes Bit und ein Double hat 52 Mantissenbits plus ein verstecktes Bit.

Für Gleitkommazahl log(2^24)/log(10), was ungefähr 7 entspricht, also eine Dezimalgenauigkeit von 7 Stellen.

Für Double log(2^53)/log(10), was ungefähr 15 entspricht, also 15 Dezimalstellen.

Melden Sie sich für Software Engineering-Kurse an den besten Universitäten der Welt an. Verdienen Sie Executive PG-Programme, Advanced Certificate-Programme oder Master-Programme, um Ihre Karriere zu beschleunigen.

Fazit

Wir haben verschiedene Datentypen in Java gesehen, verstandene primitive und nicht primitive Datentypen, den Unterschied zwischen primitiv und nicht primitiv. Beispielcodeausschnitte durchgegangen, um grundlegende Kenntnisse über die Deklaration von Datentypen zu erlangen.

Verstehen, wie der Bereich verschiedener Datentypen von Integer-Datentypen berechnet wird, wie die Dezimalgenauigkeit von Fließkomma-Datentypen berechnet wird.

Jetzt, da Sie sich der verschiedenen Datentypen in Java bewusst sind, fangen Sie an, sie zu erkunden!

Wenn Sie mehr über Java, OOPs und Full-Stack-Softwareentwicklung erfahren möchten, schauen Sie sich das Executive PG-Programm in Full-Stack-Softwareentwicklung von upGrad & IIIT-B an, das für Berufstätige konzipiert ist und mehr als 500 Stunden strenge Schulungen bietet. Über 9 Projekte und Aufgaben, IIIT-B-Alumni-Status, praktische praktische Abschlussprojekte und Arbeitsunterstützung bei Top-Unternehmen.

Bereiten Sie sich auf eine Karriere der Zukunft vor

Bewerben Sie sich jetzt für den Master in Software Engineering