Datentyp: Unterschied zwischen den Versionen

Aus EINI
Wechseln zu: Navigation, Suche
(Primitive Datentypen)
K (Objektdatentypen)
 
(18 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Vor der Kompelierung eine Java Programms muss dem Java Compiler bekannt sein, wie groß die verwendeten Variablen sein müssen. Dafür gibt es definierte Datentypen mit definierten Speicherplatz.
+
'''Datentyp''' ist die Bezeichnung für die Interpretation und Semantik einer Menge von Daten. Zu einem Datentyp gehören Informationen wie Größe, Struktur und erlaubte [[Methode | Methoden]] und [[Operator | Operatoren]].
https://de.wikibooks.org/wiki/Java_Standard:_Primitive_Datentypen
+
  
==Primitive Datentypen==
+
Zu den Datentypen in [[Java]] gehört die Unterscheidung von '''primitiven Datentypen''' und '''Objektdatentypen'''.
  
{| class = "wikitable" width=100% align = "center"
+
= Primitive Datentypen =
 +
 
 +
Diese Datentypen werden als primitiv bezeichnet, da sie die grundlegenden Bausteine für andere Datentypen sind. Sie alle repräsentieren numerische Werte.
 +
 
 +
Die Größe, Struktur und Interpretation der primitiven Datentypen ist im Java-Standard vorgegeben (siehe: https://de.wikibooks.org/wiki/Java_Standard:_Primitive_Datentypen):
 +
{| class = "wikitable" width=100% align = "center"
 
  ! Datentyp!! Größe!! Wertebereich
 
  ! Datentyp!! Größe!! Wertebereich
 
|-
 
|-
|[http://terraria.salbeira.de/mediawiki/index.php/Boolean boolean] || undefiniert|| true / false
+
|[[Boolean | boolean]] || undefiniert|| true / false
 
|-
 
|-
|[http://terraria.salbeira.de/mediawiki/index.php/Char char]|| 16 Bit || 0 ... 65.535
+
|[[Char | char]]|| 16 Bit || 0 ... 65.535
 
|-
 
|-
|[http://terraria.salbeira.de/mediawiki/index.php/Byte byte]|| 8 Bit || -128 ... 127
+
|[[Byte | byte]]|| 8 Bit || -128 ... 127
 
|-
 
|-
|[http://terraria.salbeira.de/mediawiki/index.php/Short short]|| 16 Bit || -32.768 ... 32.767
+
|[[Short | short]]|| 16 Bit || -32.768 ... 32.767
 
|-
 
|-
|[http://terraria.salbeira.de/mediawiki/index.php/Integer int]|| 32 Bit || -2.147.483.648 ... 2.147.483.647
+
|[[Integer | int]]|| 32 Bit || -2.147.483.648 ... 2.147.483.647
 
|-
 
|-
|[http://terraria.salbeira.de/mediawiki/index.php/Long long]|| 64 Bit || -2<sup>63</sup> bis 2<sup>63</sup>-1
+
|[[Long | long]]|| 64 Bit || -2<sup>63</sup> bis 2<sup>63</sup>-1
 
|-
 
|-
|[http://terraria.salbeira.de/mediawiki/index.php/Float float] || 32 Bit || +/- 1,4*10<sup>-45</sup> ... +/-3,4*10<sup>+38</sup>
+
|[[Float | float]] || 32 Bit || +/- 1,4*10<sup>-45</sup> ... +/-3,4*10<sup>+38</sup>
 
|-
 
|-
|[http://terraria.salbeira.de/mediawiki/index.php/Double double] || 64 Bit || +/-4,9*10<sup>-324</sup> ... +/-1,7*10<sup>+308</sup>
+
|[[Double | double]] || 64 Bit || +/-4,9*10<sup>-324</sup> ... +/-1,7*10<sup>+308</sup>
 
|}
 
|}
 +
 +
Variablen primitiver Datentypen werden beim Aufrufen von Funktionen per [[Call by Value]] übergeben. Das heißt, dass Veränderungen der [[Parametervariable|Parametervariablen]] einer Funktion keinen Einfluss auf die übergebenen Variablen haben.
 +
 +
= Objektdatentypen =
 +
 +
==Erläuterung==
 +
 +
Alle nicht primitiven Datentypen werden in Java durch ihre eigene [[Klasse]] definiert. Diese sind daher immer eine Kombination aus diversen primitiven oder anderen Objektdatentypen. Wie diese Daten zusammengesetzt werden und was sie bedeuten, ist im Quellcode zu definieren und zu dokumentieren.
 +
 +
Zudem gibt es viele nützliche Objektdatentypen in der Java-Standard-Bibliothek (z.B. [[String]] oder [[Array]]), die nicht zusätzlich in das Programm [[Import | importiert]] werden müssen, sondern immer zur Verfügung stehen.
 +
 +
== Beispiele ==
 +
 +
1. Eine Position auf der 2-Dimensionalen Ebene ist durch zwei '''double''' zu repräsentieren. Entsprechend wird dem ersten der '''double''' die Semantik der '''x'''-Koordinate und dem zweiten die Semantik der '''y'''-Koordinate zugewiesen. Dies kann in Java z.B. folgendermaßen geschehen:
 +
 +
<source lang="java">
 +
public class Coordinate {
 +
    public double x;
 +
    public double y;
 +
    /* Konstruktoren und Methoden *
 +
    * [...]                      */
 +
}
 +
</source>
 +
 +
2. Die folgende [[Klasse]] kann ein Bankkonto repräsentieren. Die [[Methode|Methoden]] dieser Klasse können z.B. aus der Bank und Kontonummer eine IBAN generieren, die zurückgegeben wird. Als Typen der Attribute wurden hier [[String|Strings]] gewählt, da man mit den Nummern eines Bankkontos sowieso nicht rechnen muss und eine Aneinanderreihung der Nummern für die IBAN als String einfacher zu programmieren ist.
 +
 +
<source lang="java">
 +
public class Bankaccount {
 +
    private String accountNumber;
 +
    private String bankNumber;
 +
    private String bic;
 +
   
 +
    private long balance;
 +
    /* Konstruktoren und Methoden *
 +
    * [...]                      */
 +
    public String getIBAN(){
 +
        return this.bankNumber + this.accountNumber;
 +
    }
 +
}
 +
</source>
 +
 +
3. Ein Student für eine Datenbank ließe sich folgendermaßen programmieren:
 +
 +
<source lang="java">
 +
public class Student {
 +
    private String name;
 +
    private int matriculationNumber;
 +
    private int semester;
 +
    private String faculty;
 +
 +
    /* Konstruktoren und Methoden *
 +
    * [...]                      */
 +
}
 +
</source>
 +
 +
= Datenstrukturen =
 +
 +
Wie komplexe Datenstrukturen zusammengesetzt und verwendet werden können, findet man in ihren eigenen entsprechenden Artikeln:
 +
 +
* [[Baum]]
 +
* [[Liste]]
 +
* [[Heap]]
 +
 +
Die Aufgabe eines Programmierers besteht jedoch meistens darin, aus den verschiedenen Datentypen und anderen Informationen seinen eigenen Datentyp zu basteln, der das Problem und die Lösungswege am besten repräsentiert.

Aktuelle Version vom 26. Juli 2016, 15:16 Uhr

Datentyp ist die Bezeichnung für die Interpretation und Semantik einer Menge von Daten. Zu einem Datentyp gehören Informationen wie Größe, Struktur und erlaubte Methoden und Operatoren.

Zu den Datentypen in Java gehört die Unterscheidung von primitiven Datentypen und Objektdatentypen.

Primitive Datentypen

Diese Datentypen werden als primitiv bezeichnet, da sie die grundlegenden Bausteine für andere Datentypen sind. Sie alle repräsentieren numerische Werte.

Die Größe, Struktur und Interpretation der primitiven Datentypen ist im Java-Standard vorgegeben (siehe: https://de.wikibooks.org/wiki/Java_Standard:_Primitive_Datentypen):

Datentyp Größe Wertebereich
boolean undefiniert true / false
char 16 Bit 0 ... 65.535
byte 8 Bit -128 ... 127
short 16 Bit -32.768 ... 32.767
int 32 Bit -2.147.483.648 ... 2.147.483.647
long 64 Bit -263 bis 263-1
float 32 Bit +/- 1,4*10-45 ... +/-3,4*10+38
double 64 Bit +/-4,9*10-324 ... +/-1,7*10+308

Variablen primitiver Datentypen werden beim Aufrufen von Funktionen per Call by Value übergeben. Das heißt, dass Veränderungen der Parametervariablen einer Funktion keinen Einfluss auf die übergebenen Variablen haben.

Objektdatentypen

Erläuterung

Alle nicht primitiven Datentypen werden in Java durch ihre eigene Klasse definiert. Diese sind daher immer eine Kombination aus diversen primitiven oder anderen Objektdatentypen. Wie diese Daten zusammengesetzt werden und was sie bedeuten, ist im Quellcode zu definieren und zu dokumentieren.

Zudem gibt es viele nützliche Objektdatentypen in der Java-Standard-Bibliothek (z.B. String oder Array), die nicht zusätzlich in das Programm importiert werden müssen, sondern immer zur Verfügung stehen.

Beispiele

1. Eine Position auf der 2-Dimensionalen Ebene ist durch zwei double zu repräsentieren. Entsprechend wird dem ersten der double die Semantik der x-Koordinate und dem zweiten die Semantik der y-Koordinate zugewiesen. Dies kann in Java z.B. folgendermaßen geschehen:

public class Coordinate {
    public double x;
    public double y;
    /* Konstruktoren und Methoden *
     * [...]                      */
}

2. Die folgende Klasse kann ein Bankkonto repräsentieren. Die Methoden dieser Klasse können z.B. aus der Bank und Kontonummer eine IBAN generieren, die zurückgegeben wird. Als Typen der Attribute wurden hier Strings gewählt, da man mit den Nummern eines Bankkontos sowieso nicht rechnen muss und eine Aneinanderreihung der Nummern für die IBAN als String einfacher zu programmieren ist.

public class Bankaccount {
    private String accountNumber;
    private String bankNumber;
    private String bic;
    
    private long balance;
    /* Konstruktoren und Methoden *
     * [...]                      */
    public String getIBAN(){
        return this.bankNumber + this.accountNumber;
    }
}

3. Ein Student für eine Datenbank ließe sich folgendermaßen programmieren:

public class Student {
    private String name;
    private int matriculationNumber;
    private int semester;
    private String faculty;

    /* Konstruktoren und Methoden *
     * [...]                      */
}

Datenstrukturen

Wie komplexe Datenstrukturen zusammengesetzt und verwendet werden können, findet man in ihren eigenen entsprechenden Artikeln:

Die Aufgabe eines Programmierers besteht jedoch meistens darin, aus den verschiedenen Datentypen und anderen Informationen seinen eigenen Datentyp zu basteln, der das Problem und die Lösungswege am besten repräsentiert.