00 Stimmen

Java: Unsigned Integer deklarieren

Frage von Gast | 05.08.2016 um 17:15

In allen Programmiersprachen, die ich kenne, kann man "unsigned integers", also vorzeichenlose Zahlenwerte deklarieren. Der Vorteil davon ist, dass man bei gleicher Bit-Länge größere (doppelt so große) Zahlen speichern kann, weil auf den negativen Zahlenbereich verzichtet wird (den man ja in vielen Fällen auch gar nicht benötigt).

Die Typen heißen dann für gewöhnlich uint, word oder in SQL auch unsigned int. Nun habe ich mich zum ersten Mal in meinem Leben mit Java auseinandergesetzt und konnte irgendwie keine unsigned-Typen entdecken. Kann mir jemand sagen, wonach ich da suchen soll? Wie heißen die Unsigned-Typen in Java beziehungsweise wie ist dort das Unsigned-Konzept umgesetzt?

AntwortenPositivNegativDatumStimmen
2Beste Antwort2 Stimmen

Ich habe es auch erst kaum geglaubt, aber in Java gibt es keine Unsigned Typen. Du kannst dort nur die normalen Integer-Typen wie int (32 Bit), long (64 Bit), byte (8 Bit) oder short (16 Bit) verwenden, die alle signed sind.

Lediglich der Datentyp char (8-Bit, Wertebereich 0 bis 65535) ist in Java verfügbar, der quasi "unsigned" ist. Für größere Typen gibt es das leider nicht.

Allerdings gibt es ab Java 8 eine kleine Änderung. Zwar sind die Integer-Typen in Java 8 immer noch signed und es gibt auch keine Möglichkeit, einen Integer explizit als unsigned zu deklarieren, jedoch gibt es ein paar neue Methoden, die so designed sind, dass sie intern wie "unsigned Typen" umgehen können:

int i = Integer.parseUnsignedInt("4294967295");
string si = Integer.toUnsignedString(i);
System.out.println(i);   // -1
System.out.println(si);  // 4294967295

long l = Long.parseUnsignedLong("18446744073709551615");
string sl = Long.toUnsignedString(l);
System.out.println(l);   // -1
System.out.println(sl);  // 18446744073709551615

Dieses Beispiel hier zeigt, wie man diese neuen Methoden verwenden kann und wo ihre Grenzen liegen.
05.08.2016 um 17:54

AntwortenPositiv Negativ
00 Stimmen

Wenn es dir sehr wichtig ist, in Java unsigned Integers zu verwenden, kannst du auch eine externe Bibliothek wie beispielsweise Guava verwenden.

Diese Bibliothek enthält zum Beispiel die folgenden Klassen:

Die Klassen enthalten Funktionen wie .plus(), .minus(), .times(), .dividedBy() oder .mod() so dass du mit ihnen rechnen kannst.

Eine einführende Erklärung findest du zum Beispiel hier.
05.08.2016 um 19:20

AntwortenPositiv Negativ
Antworten

Ähnliche Themen

MySQL: Integer Typen

Info | 0 Kommentare

Delphi: Systemweiter HotKey

Tutorial | 3 Kommentare

Wichtiger Hinweis

Bitte beachten Sie: Die Beiträge auf askingbox.de sind Beiträge von Nutzern und sollen keine professionelle Beratung ersetzen. Sie werden nicht von Unabhängigen geprüft und spiegeln nicht zwingend die Meinung von askingbox.de wieder. Mehr erfahren.

Jetzt mitmachen

Stellen Sie Ihre eigene Frage oder schreiben Sie Ihren eigenen Artikel auf askingbox.de. So gehts.