Verwendung von primitiven Datentypen

C

C_A

Gast
Hallo!

Ich hab mal eine grundsätzliche Frage zu primitiven Datentypen. Falls das Thema schon mal diskutiert wurde, wäre ich für einen Hinweis dankbar.

Also: wenn ich das Java-Tutorial richtig verstehe, werden byte und short in der Praxis nicht mehr verwendet - außer man will in großen arrays Platz sparen. Ist das richtig? Wie macht Ihr als Praktiker das? Verwendet Ihr andere Ganzzahl-Typen außer Int und Long?

Mit den Gleitkomma-Zahlen habe ich auch etwas Probleme. Kann ich ... die gleiche Argumentation ... davon ausgehen, dass float nur noch "aus historischen Gründen" in Java enthalten ist? Ich bin grad etwas konfus, weil folgender Programmcode nicht ausgeführt wird, bzw. die Klasse noch nicht einmal übersetzt wird:
Java:
public class Datenfeld
{ 
    public static void main(String[] args)
    {
        float a; 
        float b = 10;       // geht problemlos
        float c = 10.3;    // possible loss of precision
        
        a = 10.3; // possible loss of precision
        b = a; // possible loss of precision
        
        System.out.println("Ergebnis: " + a);
    } 
}
 

Landei

Top Contributor
byte verwende ich sehr selten, short praktisch nie.
Bei deinem Beispiel muss es 10.3F heißen (analog L bei longs die länger sind als int: 1000000000000L).
 

Janus

Bekanntes Mitglied
short, byte und float kommen mir nur noch in low level Datenbankinterfaces in die Tüte. Und dort auch nur, damit das Interface nicht lügt - wenn in ein Feld nur ein short passt, dann soll auch jeder gefälligst nur short übergeben.

Überall sonst verwende ich sie aus zwei Gründen nicht:
1. Intern arbeitet mittlerweile eh fast jede VM mindestens mit int/double für jeden Typen.
2. Und weil das so ist, spart man sich mit int und double viele unnötige casts.

Es spricht nichts dagegen, die Typen zu verwenden. Aber aus Performancegründen oder um Speicher zu sparen, macht es normalerweise keinen Sinn mehr (bei byte evtl. schon eher, aber auch nicht garantiert).
 
C

C_A

Gast
Kann ich eigentlich davon ausgehen, dass die Division von zwei Ganzzahlen immer eine Ganzzahl produziert, jedenfalls die Stellen vor dem Komma? Wenn ich eine oder zwei Gleitkommazahlen bei der Division beteilige, ist das ergebnis eine Gleitkommazahl - kann ich das so allgemein sagen?
 

Landei

Top Contributor
Kann ich eigentlich davon ausgehen, dass die Division von zwei Ganzzahlen immer eine Ganzzahl produziert, jedenfalls die Stellen vor dem Komma?
Immer eine Ganzzahl. Eventuelle Kommastellen fallen untern Tisch, und gerundet wird auch nicht. Man kann aber den Divisionsrest mit % bestimmen.
Wenn ich eine oder zwei Gleitkommazahlen bei der Division beteilige, ist das ergebnis eine Gleitkommazahl - kann ich das so allgemein sagen?
Richtig.
 
C

C_A

Gast
Immer eine Ganzzahl. Eventuelle Kommastellen fallen untern Tisch, und gerundet wird auch nicht. Man kann aber den Divisionsrest mit % bestimmen.

Okay, danke! Dann stimmt es, was ich verstanden haben ;-)

Ich multipliziere also eine zweistellige Ganzzahl mit 11 zum Beispiel so:
Java:
    public static void main(String[] args)
    {  
        int zahl = 99, zehner, quersumme;
        int ergebnis; 
        
        // Einerstelle direkt übernehmen
        ergebnis = zahl % 10; // 10 = Basis
       
        // Quersumme bilden
        quersumme = zahl / 10 + zahl % 10; 
        
        // Zehnerstelle ermitteln
        zehner = (zahl / 10) * 10;
        
        // Zehnerstelle mit Quersumme addieren
        quersumme = quersumme + zehner;
        
        ergebnis = ergebnis + quersumme * 10;
        
        System.out.println(zahl + " * 11 = " + ergebnis);
    }

Nochmal zu dem, was ich oben geschrieben habe - ich hänge immer noch an den primitiven Datentypen. Sorry, dass ich nerve - ich kann das problem zwar umgehen, aber ich verstehe einfach den Hintergrund nicht. Warum kann folgender Code nicht ausgeführt werden:

Java:
    public static void main(String[] args)
    {  
        short a, b, c;
        
        a = 3;
        b = 5;
        c = a + b; // possible loss of precision
        // c = (short)(a + b);  // mit Cast-Operator würde es gehen
        
        System.out.println("Ergebnis = " + c);        
    }

Wenn man die Variablen als integer deklariert, gibt es keine Schwierigkeiten. Also: wenn ich innerhalb eines Datentyps eine Operation ausführe, erwarte ich eigentlich keinen "loss of precision". Denkbar wäre es, wenn der Ausdruck short + short einen integer-Wert produziert. So verstehe ich auch folgende Antwort von oben

1. Intern arbeitet mittlerweile eh fast jede VM mindestens mit int/double für jeden Typen.

Aber das habe ich in der Dokumentation nicht gefunden.

Entweder mache ich einen Denkfehler oder es geht tatsächlich nicht. Was meint Ihr?

Wie würde man ein großes Array bearbeiten, das z. B. eine Matrize berechnet? Da das fiktive Array riesengroß ist, verwende ich als Datentyp byte oder short anstelle von Integer. Muss ich dann jede Addition mit Cast-Operator versehen? Ich wäre davon ausgegangen, dass es auch so gehen muss: short / byte + short / byte = short / byte

Danke und viele Grüße
Florian
 
Zuletzt bearbeitet von einem Moderator:

nrg

Top Contributor
Java:
        short a, b, c;  
        a = 3;
        b = 5;
        c = a + b;

edit: die Rechnung a+b ergibt einen int. Deshalb musst du wieder explizit in einen short casten. (hatte davor einen kleinen Denkfehler drin)

also zb:
Java:
      short a, b, c;
      a = 3;
      b = 5;
      c = (short) (a + b);

Wie meine Vorredner schon sagten wird short/byte eher weniger verwendet, weil man sich dadruch unnötiges hin- und hercasten erspart (eine normale Ganzzahl ist halt für die VM immer ein int)

grüße
nrg

edit2:
Denkbar wäre es, wenn der Ausdruck short + short einen integer-Wert produziert. So verstehe ich auch folgende Antwort von oben
hast du ja schon selbst richtig erkannt, wie ich gerade sehe :)
 
Zuletzt bearbeitet:
C

C_A

Gast
edit: die Rechnung a+b ergibt einen int. Deshalb musst du wieder explizit in einen short casten. (hatte davor einen kleinen Denkfehler drin)


edit2:
hast du ja schon selbst richtig erkannt, wie ich gerade sehe :)
@nrg: Vielen Dank für Deine ausführliche Antwort!

Ich habe einfach in keiner Dokumentation etwas entsprechendes gefunden :-(

Und für mich war die Frage da, ob ich die Dokumentation falsch gelesen habe, oder ob es da auch andere Möglichkeiten gibt.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Verwendung jna Java Basics - Anfänger-Themen 15
L Zufälligen Zahlencode, ohne mehrfacher Verwendung einer Ziffer Java Basics - Anfänger-Themen 15
Kirby.exe Frage zur Verwendung von Interfaces Java Basics - Anfänger-Themen 6
S Exception bei Verwendung von LocalDate Java Basics - Anfänger-Themen 19
S Try-Catch in Verwendung einer while Schleife Java Basics - Anfänger-Themen 2
A OOP Richtige Verwendung von ArrayList und equals Java Basics - Anfänger-Themen 24
kilopack15 Verständnisfrage zur Verwendung von notify() bei Threads Java Basics - Anfänger-Themen 2
b1ck Scanner schließen, erneute Verwendung Java Basics - Anfänger-Themen 12
H Datentypen Fehler bei Verwendung von enum Java Basics - Anfänger-Themen 9
A Verwendung von Interfaces Java Basics - Anfänger-Themen 7
G Variablen Verwendung von Variablen in anderer Klasse Java Basics - Anfänger-Themen 6
G Verwendung von Konstruktor Java Basics - Anfänger-Themen 8
M Verwendung von System.exit(0) problematisch? Java Basics - Anfänger-Themen 1
D native Methoden, Verwendung? Java Basics - Anfänger-Themen 8
fLooojava kleines Projekt - Verwendung von Youtube Java Basics - Anfänger-Themen 22
X Array Ausgabe bei Verwendung von 2 Schleifen erklären Java Basics - Anfänger-Themen 8
G verwendung von regex Java Basics - Anfänger-Themen 3
K Problem bei der Verwendung von Gregorian Calender Java Basics - Anfänger-Themen 3
T NullPointerException bei Verwendung einer Klasse einer anderen .jar datei Java Basics - Anfänger-Themen 3
B Wie wichtig ist Verwendung von StringBuffer in Schleifen? Java Basics - Anfänger-Themen 10
B Verwendung von Arrays Java Basics - Anfänger-Themen 2
U Verwendung von Interface Java Basics - Anfänger-Themen 33
A Methoden Verwendung von crypt? Java Basics - Anfänger-Themen 2
D Muss ich eigentlich immer auf die Verwendung des richtigen Datentyps achten? Java Basics - Anfänger-Themen 7
D reg Exp, verwendung des endezeichen "$" Java Basics - Anfänger-Themen 5
C Verwendung von Schleifen? Java Basics - Anfänger-Themen 18
J Datentypen Array - Verwendung im Konstruktor Java Basics - Anfänger-Themen 8
J Problem mit NullPointerException bei Verwendung eines Arrays Java Basics - Anfänger-Themen 6
D Frage zur Verwendung einer Schnittstelle Java Basics - Anfänger-Themen 4
A Verwendung von abstrakten Klassen Java Basics - Anfänger-Themen 17
D Verwendung der Klasse Map Java Basics - Anfänger-Themen 9
C Verwendung von Matrizen in einer Schleife Java Basics - Anfänger-Themen 5
F Umlaute eines Strings entfernen (Verwendung von this?) Java Basics - Anfänger-Themen 2
Daniel_L Verwendung von try und catch bei exceptions Java Basics - Anfänger-Themen 7
I Verwendung von Constant Field Values Java Basics - Anfänger-Themen 4
J Verwendung von eigenen Klassen in JSP Java Basics - Anfänger-Themen 2
G try. catch Verwendung Java Basics - Anfänger-Themen 11
Z Beispiel Würfelspiel mit Verwendung von Feldern Java Basics - Anfänger-Themen 7
H Verwendung lokaler Einstellungen Java Basics - Anfänger-Themen 4
G getName, substring Verwendung Java Basics - Anfänger-Themen 3
I Fehler bei Verwendung von substring Java Basics - Anfänger-Themen 4
S Verwendung von Super Java Basics - Anfänger-Themen 7
M Verwendung von Robot... wie? Java Basics - Anfänger-Themen 6
M Verwendung von "this" Java Basics - Anfänger-Themen 2
U Liste importieren und für weitere Verwendung sichern Java Basics - Anfänger-Themen 4
feuervogel Integral unter Verwendung der Java-Bibliothek berechnen Java Basics - Anfänger-Themen 10
frau-u Probleme mit richtiger Verwendung von FileInputStream Java Basics - Anfänger-Themen 2
S valueOf() vs. toString() Verwendung??? Java Basics - Anfänger-Themen 13
A Kurze Frage zur Verwendung von this Java Basics - Anfänger-Themen 9
S Verwendung bitweiser Operatoren Java Basics - Anfänger-Themen 6
F Verwendung von this in statischen Kontext nicht möglich Java Basics - Anfänger-Themen 8
D Verwirrung bei Streams aus primitiven Arrays Java Basics - Anfänger-Themen 2
M Wann eine Wrapper Klasse verwenden und wann einen primitiven Datentypen? Java Basics - Anfänger-Themen 8
B Variablen Wie macht man eine call by reference mit primitiven Datentypen in Java? Java Basics - Anfänger-Themen 2
M Datentypen Frage zu Variablen primitiven Datentyps Java Basics - Anfänger-Themen 8
M HashMap mit primitiven Datentypen Java Basics - Anfänger-Themen 10
S Methode die Wrapper Klasse fuer einen primitiven Typ zurueck Java Basics - Anfänger-Themen 11
D String in einen primitiven datentypen parsen Java Basics - Anfänger-Themen 3
R Datentypen Das Verhalten von Strings als Datentypen Java Basics - Anfänger-Themen 7
T Unterschiedliche Datentypen - worin abspeichern? Java Basics - Anfänger-Themen 18
N Verschiedene Konstruktoren mit gleichen Datentypen Java Basics - Anfänger-Themen 8
J Einige Anfängerfragen (Datentypen, Wertebereich) Java Basics - Anfänger-Themen 11
thor_norsk Datentypen unter Java Java Basics - Anfänger-Themen 3
T Datentypen Eigene Datentypen Java Basics - Anfänger-Themen 15
T for-each-Schleife, verschiedene Datentypen Java Basics - Anfänger-Themen 1
G Methoden Methoden mit versch. Datentypen Java Basics - Anfänger-Themen 1
Nicolex3 Größere Datentypen Java Basics - Anfänger-Themen 35
FelixN Array mit verschiedene Datentypen als Rückgabewert? (Long und Double) Java Basics - Anfänger-Themen 3
mihe7 Von Datentypen und (mehrdimensionalen) Arrays Java Basics - Anfänger-Themen 4
P Datentypen, Klassen, Operatoren, Wrapperklassen Java Basics - Anfänger-Themen 2
W Vergleiche bei generischen Datentypen Java Basics - Anfänger-Themen 7
D Eingabe einscannen, ohne vorher einen Datentypen anzugeben? Java Basics - Anfänger-Themen 1
M Datentypen Generische Datentypen - Syntax Java Basics - Anfänger-Themen 25
L Binären Bäume für beliebige Datentypen Java Basics - Anfänger-Themen 15
L Datentypen Ausgabe von eigenem Datentypen Java Basics - Anfänger-Themen 2
T Datentypen Kann Java 2 verschiedene Datentypen vergleichen? Java Basics - Anfänger-Themen 2
A Datentypen Unterschiedliche Datentypen in einer Eingabe einlesen Java Basics - Anfänger-Themen 2
Queiser Datentypen 2 generische Datentypen für eine Schnittstelle Java Basics - Anfänger-Themen 1
SHasteCode Datentypen Überlauf primitiver Datentypen Java Basics - Anfänger-Themen 4
S Datentypen Java Basics - Anfänger-Themen 14
Antegra Tekkrebell Primitive Datentypen Literal 8072 Java Basics - Anfänger-Themen 21
N Array gleiche Datentypen zusammenrechnen Java Basics - Anfänger-Themen 28
S Datentypen Java Basics - Anfänger-Themen 4
S generische methode mit verschiedenen datentypen Java Basics - Anfänger-Themen 3
H wählen des kleinstmöglichen Datentypen für Gleitkommazahlen. Java Basics - Anfänger-Themen 2
S Datentypen Java Basics - Anfänger-Themen 2
S Datentypen Abstrakte Datentypen Java Basics - Anfänger-Themen 0
J Zusammenhang Numbers und nummerische Datentypen Java Basics - Anfänger-Themen 2
F Variablen unterschiedlicher Datentypen Java Basics - Anfänger-Themen 6
A Abstrakte Datentypen - Methode delete Java Basics - Anfänger-Themen 6
J Generics Datentypen vergleichen Java Basics - Anfänger-Themen 16
D Spezifikation abstrakter Datentypen Java Basics - Anfänger-Themen 3
W Datentypen Datentypen vergleichen Java Basics - Anfänger-Themen 4
B JAVA Datentypen/Überlauf Java Basics - Anfänger-Themen 4
I Erste Schritte HILFE bei Datentypen Java Basics - Anfänger-Themen 2
J Wertebereiche und Datentypen Java Basics - Anfänger-Themen 12
N Methode mit 2 Datentypen. Fehler? Java Basics - Anfänger-Themen 1
N Probleme mit Datentypen Java Basics - Anfänger-Themen 6
S Datentypen Unterschied elementare und zusammengesetzte/strukturierte Datentypen Java Basics - Anfänger-Themen 5
L Beliebigen Datentypen aus String parsen Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben