Rheinwerk Computing < openbook > Rheinwerk Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

Inhaltsverzeichnis
Vorwort
1 Java ist auch eine Sprache
2 Sprachbeschreibung
3 Klassen und Objekte
4 Der Umgang mit Zeichenketten
5 Eigene Klassen schreiben
6 Exceptions
7 Generics<T>
8 Äußere.innere Klassen
9 Besondere Klassen der Java SE
10 Architektur, Design und angewandte Objektorientierung
11 Die Klassenbibliothek
12 Bits und Bytes und Mathematisches
13 Datenstrukturen und Algorithmen
14 Threads und nebenläufige Programmierung
15 Raum und Zeit
16 Dateien, Verzeichnisse und Dateizugriffe
17 Datenströme
18 Die eXtensible Markup Language (XML)
19 Grafische Oberflächen mit Swing
20 Grafikprogrammierung
21 Netzwerkprogrammierung
22 Verteilte Programmierung mit RMI
23 JavaServer Pages und Servlets
24 Datenbankmanagement mit JDBC
25 Reflection und Annotationen
26 Dienstprogramme für die Java-Umgebung
A Die Begleit-DVD
Stichwort
Ihre Meinung?

Spacer
 <<   zurück
Java ist auch eine Insel von Christian Ullenboom
Das umfassende Handbuch
Buch: Java ist auch eine Insel

Java ist auch eine Insel
geb., mit DVD
1482 S., 49,90 Euro
Rheinwerk Computing
ISBN 978-3-8362-1506-0
Pfeil 2 Sprachbeschreibung
  Pfeil 2.1 Elemente der Programmiersprache Java
    Pfeil 2.1.1 Token
    Pfeil 2.1.2 Textkodierung durch Unicode-Zeichen
    Pfeil 2.1.3 Literale
    Pfeil 2.1.4 Bezeichner
    Pfeil 2.1.5 Reservierte Schlüsselwörter
    Pfeil 2.1.6 Zusammenfassung der lexikalischen Analyse
    Pfeil 2.1.7 Kommentare
  Pfeil 2.2 Anweisungen formen Programme
    Pfeil 2.2.1 Was sind Anweisungen?
    Pfeil 2.2.2 Klassendeklaration
    Pfeil 2.2.3 Die Reise beginnt am main()
    Pfeil 2.2.4 Der erste Methodenaufruf: println()
    Pfeil 2.2.5 Atomare Anweisungen und Anweisungssequenzen
    Pfeil 2.2.6 Mehr zu print(), println() und printf() für Bildschirmausgaben
    Pfeil 2.2.7 Die API-Dokumentation
    Pfeil 2.2.8 Ausdrucksanweisung
    Pfeil 2.2.9 Erste Idee der Objektorientierung
    Pfeil 2.2.10 Modifizierer
  Pfeil 2.3 Datentypen, Typisierung, Variablen und Zuweisungen
    Pfeil 2.3.1 Primitive Datentypen im Überblick
    Pfeil 2.3.2 Variablendeklarationen
    Pfeil 2.3.3 Variablendeklaration mit Wertinitialisierung
    Pfeil 2.3.4 Zuweisungsoperator
    Pfeil 2.3.5 Wahrheitswerte
    Pfeil 2.3.6 Ganzzahlige Datentypen und Literale
    Pfeil 2.3.7 Das binäre (Basis 2), oktale (Basis 8), hexadezimale (Basis 16) Stellenwertsystem *
    Pfeil 2.3.8 Die Fließkommazahlen »float« und »double«
    Pfeil 2.3.9 Alphanumerische Zeichen
    Pfeil 2.3.10 Gute Namen, schlechte Namen
  Pfeil 2.4 Blöcke, Initialisierung und Sichtbarkeit
    Pfeil 2.4.1 Gruppieren von Anweisungen mit Blöcken
    Pfeil 2.4.2 Initialisierung von lokalen Variablen
    Pfeil 2.4.3 Sichtbarkeit und Gültigkeitsbereich
  Pfeil 2.5 Ausdrücke, Operanden und Operatoren
    Pfeil 2.5.1 Ausdrücke
    Pfeil 2.5.2 Arithmetische Operatoren
    Pfeil 2.5.3 Unäres Minus und Plus
    Pfeil 2.5.4 Zuweisung mit Operation
    Pfeil 2.5.5 Präfix- oder Postfix-Inkrement und -Dekrement
    Pfeil 2.5.6 Die relationalen Operatoren und die Gleichheitsoperatoren
    Pfeil 2.5.7 Logische Operatoren: Nicht, Und,Oder, Xor
    Pfeil 2.5.8 Der Rang der Operatoren in der Auswertungsreihenfolge
    Pfeil 2.5.9 Die Typanpassung (das Casting)
    Pfeil 2.5.10 Überladenes Plus für Strings
    Pfeil 2.5.11 Operator vermisst *
  Pfeil 2.6 Bedingte Anweisungen oder Fallunterscheidungen
    Pfeil 2.6.1 Die if-Anweisung
    Pfeil 2.6.2 Die Alternative mit einer if-else-Anweisung wählen
    Pfeil 2.6.3 Der Bedingungsoperator
    Pfeil 2.6.4 Die switch-Anweisung bietet die Alternative
  Pfeil 2.7 Schleifen
    Pfeil 2.7.1 Die while-Schleife
    Pfeil 2.7.2 Die do-while-Schleife
    Pfeil 2.7.3 Die for-Schleife
    Pfeil 2.7.4 Schleifenbedingungen und Vergleiche mit ==
    Pfeil 2.7.5 Ausbruch planen mit break und Wiedereinstieg mit »continue«
    Pfeil 2.7.6 »break« und »continue« mit Marken *
  Pfeil 2.8 Methoden einer Klasse
    Pfeil 2.8.1 Bestandteil einer Methode
    Pfeil 2.8.2 Signatur-Beschreibung in der Java-API
    Pfeil 2.8.3 Aufruf einer Methode
    Pfeil 2.8.4 Methoden ohne Parameter deklarieren
    Pfeil 2.8.5 Statische Methoden (Klassenmethoden)
    Pfeil 2.8.6 Parameter, Argument und Wertübergabe
    Pfeil 2.8.7 Methoden vorzeitig mit return beenden
    Pfeil 2.8.8 Nicht erreichbarer Quellcode bei Methoden
    Pfeil 2.8.9 Rückgabewerte
    Pfeil 2.8.10 Methoden überladen
    Pfeil 2.8.11 Vorgegebener Wert für nicht aufgeführte Argumente *
    Pfeil 2.8.12 Finale lokale Variablen
    Pfeil 2.8.13 Rekursive Methoden *
    Pfeil 2.8.14 Die Türme von Hanoi *
  Pfeil 2.9 Zum Weiterlesen


Rheinwerk Computing - Zum Seitenanfang

2.4 Blöcke, Initialisierung und Sichtbarkeit  Zur nächsten ÜberschriftZur vorigen Überschrift


Rheinwerk Computing - Zum Seitenanfang

2.4.1 Gruppieren von Anweisungen mit Blöcken  Zur nächsten ÜberschriftZur vorigen Überschrift

Ein Block fasst eine Gruppe von Anweisungen zusammen, die hintereinander ausgeführt werden. Anders gesagt: Ein Block ist eine Anweisung, die in geschweiften Klammern { } eine Folge von Anweisungen zu einer neuen Anweisung zusammenfasst:

{
  Anweisung1;
  Anweisung2;
  ...
}

Ein Block kann überall dort verwendet werden, wo auch eine einzelne Anweisung stehen kann. Der neue Block hat jedoch eine Besonderheit in Bezug auf Variablen, da er einen lokalen Bereich für die darin befindlichen Anweisungen inklusive der Variablen bildet.


Codestyle Die Zeilen, die in geschweiften Klammern stehen, werden in der Regel mit Leerraum eingerückt. Üblicherweise sind es zwei (wie in diesem Buch) oder vier Leerzeichen. Viele Autoren setzen die geschweiften Klammern in eine eigene Zeile. Diesem Stil folgt auch dieses Buch in der Regel, es sei denn, der Programmcode soll weniger »vertikal wachsen«.


Leerer Block

Ein Block ohne Anweisung nennt sich leerer Block. Er verhält sich wie eine leere Anweisung, also wie ein Semikolon. In einigen Fällen ist der leere Block mit dem Semikolon wirklich austauschbar, in einigen Fällen erzwingt die Java-Sprache einen Block, der, falls es keine Anweisungen gibt, leer ist, anstatt hier auch ein Semikolon zu erlauben.

Geschachtelte Blöcke

Blöcke können beliebig geschachtelt werden. So ergeben sich innere Blöcke und äußere Blöcke:

{             // Beginn äußerer Block
  {           // Beginn innerer Block
  }           // Ende innerer Block
}             // Ende äußerer Block

Mit leeren Blöcken ist Folgendes in der statischen Methode main() in Ordnung:

public static void main( String[] args )
{
  { System.out.println( "Hallo Computer" ); {{}}{{}{}}}
}

Wichtig werden die Blöcke, wenn in ihnen Variablen deklariert werden. Das werden wir uns gleich anschauen.


Rheinwerk Computing - Zum Seitenanfang

2.4.2 Initialisierung von lokalen Variablen  Zur nächsten ÜberschriftZur vorigen Überschrift

Die Laufzeitumgebung – beziehungsweise der Compiler – initialisiert lokale Variablen nicht automatisch mit einem Nullwert. Vor dem Lesen müssen lokale Variablen von Hand initialisiert werden: [Anders ist das bei Objektvariablen (und statischen Variablen sowie Feldern). Sie sind standardmäßig mit null (Referenzen), 0 (bei Zahlen) oder false belegt. ]

int age;
boolean adult;
System.out.println( age );  // Fehler Local variable age may not have been 
                            // initialized.
age = 18;
if ( age >= 18 )            // Fallunterscheidung in Java
  adult = true;
System.out.println( adult ); // Fehler Local variable adult may not have been 
                             // initialized.

Die beiden lokalen Variablen age und adult werden nicht automatisch initialisiert, und so kommt es bei der versuchten Ausgabe von age zu einem Compilerfehler, da ein Lesezugriff nötig ist, aber vorher noch kein Schreibzugriff stattfand. Erst die nächste Zeile mit age = 18 ist in Ordnung.

Weil Zuweisungen in bedingten Anweisungen vielleicht nicht ausgeführt werden, meldet der Compiler auch einen Fehler, wenn er sich vorstellen kann, dass es einen Programmfluss ohne die Zuweisung gibt. Da adult nur nach der if-Abfrage auf den Wert true gesetzt wird, wäre nur unter der Bedingung, dass age größer gleich 18 ist, ein Schreibzugriff auf adult erfolgt und ein folgender Lesezugriff möglich. Doch da der Compiler annimmt, dass es andere Fälle geben kann, wäre ein Zugriff auf eine nicht initialisierte Variable ein Fehler.

Eclipse
Eclipse zeigt einen Hinweis und Verbesserungsvorschlag an, wenn eine lokale Variable nicht initialisiert ist.


Rheinwerk Computing - Zum Seitenanfang

2.4.3 Sichtbarkeit und Gültigkeitsbereich  topZur vorigen Überschrift

In jedem Block und auch in jeder Klasse [Das sind die so genannten Objektvariablen oder Klassenvariablen, doch dazu später mehr. ] können Variablen deklariert werden. Jede Variable hat einen Geltungsbereich (engl. scope), auch Gültigkeitsbereich genannt. Nur in ihrem Gültigkeitsbereich kann der Entwickler auf die Variable zugreifen, außerhalb des Gültigkeitsbereichs nicht. Genauer gesagt: Im Block und in den tieferen geschachtelten Blöcken ist die Variable gültig. Der lesende Zugriff ist nur dann erlaubt, wenn die Variable auch initialisiert wurde.

Der Gültigkeitsbereich bestimmt direkt die Lebensdauer der Variable. Eine Variable ist nur in dem Block »lebendig«, in dem sie deklariert wurde. In dem Block ist die Variable lokal.

Dazu ein Beispiel mit zwei statischen Methoden:

Listing 2.8  Scope.java

public class Scope
{
  public static void main( String[] args )
  {
    int foo = 0;

    {
      int bar = 0;             // bar gilt nur in diesem Block
      System.out.println( bar );
      System.out.println( foo );

      double foo = 0.0;        // Fehler Fehler: Duplicate local variable foo
    }

    System.out.println( foo );
    System.out.println( bar ); // Fehler Fehler: bar cannot be resolved
  }

  static void qux()
  {
    int foo, baz;              // foo hat nichts mit foo aus main() zu tun

    {
      int baz;                 // Fehler Fehler: Duplicate local variable baz
    }
  }
}

Zu jeder Zeit können Blöcke aufgebaut werden. Außerhalb des Blocks sind deklarierte Variablen nicht sichtbar. Nach Abschluss des inneren Blocks, der bar deklariert, ist ein Zugriff auf bar nicht mehr möglich; auf foo ist der Zugriff innerhalb der statischen Methode main() weiterhin erlaubt. Dieses foo ist aber ein anderes foo als in der statischen Methode qux(). Eine Variable im Block ist so lange gültig, bis der Block durch eine schließende geschweifte Klammer beendet ist. Innerhalb des Blocks kann die Variable auch nicht umdefiniert werden. Daher schlägt der Versuch, die Variable foo ein zweites Mal vom Typ double zu deklarieren, fehl.

Innerhalb eines Blocks können Variablennamen nicht genauso gewählt werden wie Namen lokaler Variablen eines äußeren Blocks oder wie die Namen für die Parameter einer Methode. Das zeigt die zweite statische Methode am Beispiel der Deklaration baz. Obwohl andere Programmiersprachen diese Möglichkeit erlauben – und auch eine Syntax anbieten, um auf eine überschriebene lokale Variable eines höheren Blocks zuzugreifen –, haben sich die Java-Sprachentwickler dagegen entschieden. Gleiche Namen in den inneren und äußeren Blöcken sind nicht erlaubt. Das ist auch gut so, denn es minimiert Fehlerquellen. Die in Methoden deklarierten Parameter sind ebenfalls lokale Variablen und gehören zum Methodenblock.



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen. >> Zum Feedback-Formular
 <<   zurück
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchempfehlungen
Zum Katalog: Java ist auch eine Insel






 Java ist auch
 eine Insel


Zum Katalog: Java SE Bibliotheken






 Java SE Bibliotheken


Zum Katalog: Professionell entwickeln mit Java EE 7






 Professionell
 entwickeln mit
 Java EE 7


Zum Katalog: Einstieg in Eclipse






 Einstieg in
 Eclipse


Zum Katalog: Einstieg in Java






 Einstieg in
 Java


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Rheinwerk Verlag GmbH 2011
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Nutzungsbestimmungen | Datenschutz | Impressum

Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de

Cookie-Einstellungen ändern