Kurs:Einführung in die Informatik mit Java/Kurs 2007/Part 3/Kapitel 8

Aus Wikiversity

Das Kapitel startet hier und endet mit der Sitemap. --Michael Reschke 14:57, 12. Jun. 2007 (CEST)

Kurze Zusammenfassung[Bearbeiten]

  • Der Computer (Festplatte und Arbeitsspeicher?) speichert beliebige Bitmuster. Wenn den Mustern ein Datentyp zugewiesen wird, erhalten sie erst ihren Sinn.
  • Es gibt Datentypen, die so elementar sind, dass sie fest in Java integriert sind und deshalb primitive Datentypen heißen. Selbst ausgedachteAndere Datentypen heißen Objekte.
    Einspruch: Nicht nur "Selbst ausgedachte Datentypen heißen Objekte". Im Java-Paket gibt es bereits in der Grundausstattung eine ganze Menge mitgelieferter Objekte, wie zB. "String" oder eben auch "System" - sonst könnte man ja gar nichts ausgeben wie zB. mittels:
    System.out.println("Irgendein Text");
    
    --Exxu 19:18, 13. Jun. 2007 (CEST)
Ich habe es nach "Andere" geändert. Du hast in der Tat Recht, das steht so auch bei Gailer im Kursbuch... --Michael Reschke 00:33, 14. Jun. 2007 (CEST)
  • Java ist case sensitive, Groß- und Kleinschreibung macht einen Unterschied.
  • Die primitiven Datentypen sind:
    • byte
    • short
    • int
    • long
    • float
    • double
    • char
    • boolean
  • Eine Übersicht der "Numerischen Primitiven Datentypen" findet sich hier. Das Kapitel fand ich etwas umfangreich, da hätte ich mir kleinere Einheiten oder zumindest den Hinweis: Wird später nochmal wiederholt gewünscht ;-)
  • Quiz und Vokabelübungen habe ich gemacht, waren sehr hilfreich, auch sinnvoll (finde, dass ich etwas gelernt habe!). Die Programmieraufgaben stehen noch aus. Seite ch08_6 habe ich mir ausgedruckt und erstmals mir Notizen gemacht, char und boolean werden erst auf den Folgeseiten erklärt. --Michael Reschke 16:03, 13. Jun. 2007 (CEST)

Programmieraufgaben[Bearbeiten]

Hier werden die Programmieraufgaben besprochen. --Michael Reschke 16:03, 13. Jun. 2007 (CEST)

Anmerkung zur Ausgabeanweisung[Bearbeiten]

Die Beispielaufgaben 1 bis 4 aus dem angegebenen Link verwenden allesamt die Ausgabeanweisung:

System.out.println("irgendein Text" + variable_eines_primitiven_typs);

Diese Beispiele sind zwar weit verbreitet, aber leider verführen sie den Java-Lerner dazu, auch im späteren Java-Programmiererleben solche Ausgaben von mittels "+"-Zeichen verketteten unterschiedlichen Datentypen (hier also: ein String, gefolgt von einem primitiven Typ) einzusetzen.

Was in solch einem Übungsbeispiel keinen Schaden anrichtet, wird aber innerhalb von vielfach durchlaufenen Schleifen schnell zum zeitfressenden Engpass.

Eine kleine Abschweifung für Interessierte
Was passiert denn hier im Hintergrund?: Da in Java unterschiedliche Datentypen existieren, muss natürlich auch geklärt sein, wass denn das Zeichen "+" im Zusammenhang mit einem "String" bewirken soll. Und tatsächlich wird im Hintergrund eine implizite Typangleichung durchgeführt - es wird jeder Datentyp, der kein String-Objekt darstellt, also auch der primitive Datentyp, ebenfalls in einen "String" konvertiert. Um den Aufwand noch etwas zu erhöhen, kommt nun noch hinzu, dass Strings, wenn sie erst mal angelegt sind, nicht einfach verändert werden können. Also eine Verknüpfung von zwei Strings mittels "+"-Zeichen bewirkt, dass in einem sogenannten "StringBuffer"[1] ein neuer String gebildet werden muss, der den bisherigen Inhalt der jeweiligen Teilstrings aufnimmt. Und dieser neue String wird dann ausgegeben.

Letztendlich geschieht also folgendes:

System.out.println(new StringBuffer("irgendein Text").append(String.valueOf(variable_eines_primitiven_typs)).toString())

Was die einzelnen Bestandteile der letzten Anweisung im Einzelnen bedeuten, kommt allerdings erst später im Kurs zur Sprache.

Wie sähe ein möglicher Ausweg aus?
Um zu verdeutlichen, dass jeder Datentyp beim Ausgeben eine individuelle Behandlung erfährt, könnte die Ausgabeanweisung in zwei Anweisungen aufgeteilt werden, also:
System.out.print("irgendein Text ");
System.out.println(variable_eines_primitiven_typs);

Hier sieht man meiner Meinung nach klarer, dass jeder Typ einzelnen Ausgabeaufwand verursacht. Gruß, --Exxu 09:25, 14. Jun. 2007 (CEST)

Ich habe es jetzt sogar verstanden, worum es geht. Ein String enthält - wie ich das nun verstanden habe - Text, also mehr als ein Zeichen. Die Eingabe erfolgt immer durch "...Text...", also bei einem String Anführungszeichen statt Hochkommata. (In so einem Fall wäre es schön, die Einführung stände unter GNU FDL und würde bei Wikibooks zu finden sein...) --Michael Reschke 23:33, 14. Jun. 2007 (CEST)
Stimmt. Ein String besteht aus einer Ansammlung von Zeichen des primitiven "char"-Typs.[2]
Es gibt ja auch noch das Buch von Guido Krüger: "Handbuch der Java-Programmierung" als HTML-Version zum freien Download. --Exxu 07:47, 15. Jun. 2007 (CEST)

Referenzen[Bearbeiten]

  1. siehe API-Dokumentation zu "StringBuffer"
  2. siehe API-Dokumentation zu "String"