Galileo Computing < openbook > Galileo 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 Mathematisches
6 Eigene Klassen schreiben
7 Angewandte Objektorientierung
8 Exceptions
9 Generics, innere Klassen
10 Die Klassenbibliothek
11 Threads und nebenläufige Programmierung
12 Datenstrukturen und Algorithmen
13 Raum und Zeit
14 Dateien und Datenströme
15 Die eXtensible Markup Language (XML)
16 Grafische Oberflächen mit Swing
17 Grafikprogrammierung
18 Netzwerkprogrammierung
19 Verteilte Programmierung mit RMI und Web–Services
20 JavaServer Pages und Servlets
21 Applets
22 Midlets und die Java ME
23 Datenbankmanagement mit JDBC
24 Reflection und Annotationen
25 Logging und Monitoring
26 Sicherheitskonzepte
27 Java Native Interface (JNI)
28 Dienstprogramme für die Java-Umgebung
Stichwort

Download:
- ZIP, ca. 14,1 MB
Buch bestellen
Ihre Meinung?

Spacer
<< zurück
Java ist auch eine Insel (8. Auflage) von Christian Ullenboom
Programmieren mit der Java Standard Edition Version 6
Buch: Java ist auch eine Insel (8. Auflage)

Java ist auch eine Insel (8. Aufl.)
8., aktual. Auflage, geb., mit DVD
1.475 S., 49,90 Euro
Galileo Computing
ISBN 978-3-8362-1371-4
Pfeil 3 Klassen und Objekte
Pfeil 3.1 Objektorientierte Programmierung
Pfeil 3.1.1 Warum überhaupt OOP?
Pfeil 3.1.2 Denk ich an Java, denk ich an Wiederverwendbarkeit
Pfeil 3.2 Eigenschaften einer Klasse
Pfeil 3.2.1 Die Klasse Point
Pfeil 3.3 Die UML (Unified Modeling Language)
Pfeil 3.3.1 Hintergrund und Geschichte zur UML
Pfeil 3.3.2 Wichtige Diagrammtypen der UML
Pfeil 3.3.3 UML-Werkzeuge
Pfeil 3.4 Neue Objekte erzeugen
Pfeil 3.4.1 Anlegen eines Exemplars einer Klasse mit dem new-Operator
Pfeil 3.4.2 Deklarieren von Referenzvariablen
Pfeil 3.4.3 Zugriff auf Variablen und Methoden mit dem ».«
Pfeil 3.4.4 Konstruktoren nutzen
Pfeil 3.5 Pakete und import-Deklarationen nutzen
Pfeil 3.5.1 Volle Qualifizierung und import-Deklaration
Pfeil 3.5.2 import *
Pfeil 3.6 Mit Referenzen arbeiten
Pfeil 3.6.1 Zuweisungen bei Referenzen
Pfeil 3.6.2 Methoden mit nicht-primitiven Parametern
Pfeil 3.7 Identität und Gleichheit
Pfeil 3.7.1 Identität von Objekten
Pfeil 3.7.2 Gleichheit und die Methode equals()
Pfeil 3.7.3 Die null-Referenz
Pfeil 3.8 Wrapper-Klassen und Autoboxing
Pfeil 3.8.1 Erzeugen von Wrapper-Objekten
Pfeil 3.8.2 Konvertierungen in eine String-Repräsentation
Pfeil 3.8.3 Die Klasse Integer
Pfeil 3.8.4 Die Klassen Double und Float für Fließkommazahlen
Pfeil 3.8.5 Die Basisklasse Number für numerische Wrapper-Objekte
Pfeil 3.8.6 Die Boolean-Klasse
Pfeil 3.8.7 Autoboxing: Boxing und Unboxing
Pfeil 3.9 Compilationseinheiten und eigene Pakete schnüren
Pfeil 3.9.1 Die package-Anweisung
Pfeil 3.9.2 Importieren von Klassen mit import
Pfeil 3.9.3 Hierarchische Strukturen und das Default-Package
Pfeil 3.9.4 Paketnamen
Pfeil 3.9.5 Klassen mit gleichen Namen in unterschiedlichen Paketen
Pfeil 3.9.6 Compilationseinheit (Compilation Unit)
Pfeil 3.9.7 Statischer Import
Pfeil 3.9.8 Eine Verzeichnisstruktur für eigene Projekte
Pfeil 3.10 Arrays
Pfeil 3.10.1 Deklaration von Arrays
Pfeil 3.10.2 Arrays mit Inhalt
Pfeil 3.10.3 Die Länge eines Arrays über das Attribut length
Pfeil 3.10.4 Zugriff auf die Elemente über den Index
Pfeil 3.10.5 Array-Objekte mit new erzeugen
Pfeil 3.10.6 Fehler bei Arrays
Pfeil 3.10.7 Die erweiterte for-Schleife
Pfeil 3.10.8 Arrays mit nicht-primitiven Elementen
Pfeil 3.10.9 Mehrdimensionale Arrays
Pfeil 3.10.10 Vorinitialisierte Arrays
Pfeil 3.10.11 Mehrere Rückgabewerte
Pfeil 3.10.12 Methode mit variabler Argumentanzahl (Vararg)
Pfeil 3.10.13 Klonen kann sich lohnen – Arrays vermehren
Pfeil 3.10.14 Feldinhalte kopieren
Pfeil 3.10.15 Die Klasse Arrays zum Vergleichen, Füllen und Suchen
Pfeil 3.11 Der Einstiegspunkt für das Laufzeitsystem: main()
Pfeil 3.11.1 Kommandozeilen-Argumente verarbeiten
Pfeil 3.11.2 Der Rückgabewert von main() und System.exit()
Pfeil 3.12 Zum Weiterlesen


Galileo Computing - Zum Seitenanfang

3.6 Mit Referenzen arbeiten Zur nächsten ÜberschriftZur vorigen Überschrift


Galileo Computing - Zum Seitenanfang

3.6.1 Zuweisungen bei Referenzen Zur nächsten ÜberschriftZur vorigen Überschrift

Eine Referenz erlaubt den Zugriff auf das referenzierte Objekt. Es kann durchaus mehrere Kopien dieser Referenz geben, die in Variablen mit unterschiedlichen Namen abgelegt sind – so wie eine Person (ein Personen-Objekt) von den Mitarbeitern als »Chefin« angesprochen wird, aber von ihrem Mann als »Schnuckiputzi«. Dies nennt sich auch Alias.

Wir wollen uns dies an einem Punkt-Objekt näher ansehen, das wir unter einem alternativen Variablennamen ansprechen wollen:

Point p = new Point(); 
Point q = p;

Ein Punkt-Objekt wird erzeugt und mit der Variablen p referenziert. Die zweite Zeile speichert nun dieselbe Referenz in der Variablen q. Danach verweisen p und q auf dasselbe Objekt.


Beispiel Dies hat zur Konsequenz, dass bei einer Änderung des Punkt-Objekts über die in der Variablen p gespeicherte Referenz die Änderung auch bei einem Zugriff über die Variable q beobachtet werden kann.

Point p = new Point(); 
Point q = p; 
p.x = 10; 
System.out.println( q.x );            // 10 
q.y = 5; 
System.out.println( p.y );            // 5


Galileo Computing - Zum Seitenanfang

3.6.2 Methoden mit nicht-primitiven Parametern topZur vorigen Überschrift

Dass sich das gleiche Objekt unter zwei Namen (über zwei verschiedene Variablen) ansprechen lässt, können wir gut bei Methoden beobachten. Eine Methode, die über den Parameter eine Objektreferenz erhält, kann auf das übergebene Objekt zugreifen. Das bedeutet: Die Methode kann dieses Objekt mit den angebotenen Methoden ändern oder auf die Attribute zugreifen.

Listing 3.4 InitPoint.java

import java.awt.*; 
 
public class InitPoint 
{ 
  static void clear( Point p ) 
  { 
    p.setLocation( 0, 0 ); 
  } 
 
  public static void main( String[] args ) 
  { 
    Point q = new Point( 47, 11 );   // Coordinates (x=47,y=11) 
    clear( q ); 
    System.out.println( q.x );   // 0 
  } 
}

In dem Moment, in dem main() die Funktion clear() aufruft, gibt es sozusagen die Namen q und p für das Objekt, wobei nur clear() das Objekt unter p kennt und main() nicht und clear() von dem Namen q keine Ahnung hat.


Hinweis Der Name einer Parametervariablen darf durchaus mit dem Namen einer lokalen Variablen übereinstimmen, was die Semantik nicht verändert. In unserem Fall hätte clear() die Point-Variable auch q nennen können.


Wertübergabe und Referenzübergabe Call by Value

Primitive Variablen werden immer per Wert kopiert (engl. Call by Value). Das Gleiche gilt für Referenzen. Daher hat auch die folgende Funktion keine Nebenwirkungen:

static void clear( Point p ) 
{ 
  p = new Point(); 
}

Nach der Zuweisung referenziert die Variable p ein anderes Punkt-Objekt, und das an die Funktion übergebene Argument geht verloren. Diese Änderung wird nach außen hin nicht sichtbar, was bedeutet, dass der Aufrufer kein neues Objekt unter sich hat.

Call by Reference gibt es in Java nicht – ein Blick auf C und C++

In C++ gibt es eine weitere Argumentübergabe, die sich Call by Reference nennt. Würde eine Funktion wie clear() mit Referenzsemantik deklariert, würde die Variable p ein Synonym darstellen, also einen anderen Namen für eine Variable – in unserem Fall q. Damit würde die Zuweisung im Rumpf den Zeiger auf ein neues Objekt legen. Die swap()-Funktion ist ein gutes Beispiel für die Nützlichkeit von Call by Reference:

void swap( int& a, int& b ) 
{ 
  int tmp = a; 
  a = b; 
  b = tmp; 
}

Zeiger und Referenzen sind in C++ etwas anderes, was Spracheinsteiger leicht irritiert. Denn in C++ und auch C hätte eine vergleichbare swap()-Funktion auch mit Zeigern implementiert werden können:

void swap( int *a, int *b ) 
{ 
   int tmp = *a; 
   *a = *b; 
   *b = tmp; 
}

Die Implementierung gibt in C(++) einen Verweis auf das Argument.



Ihr Kommentar

Wie hat Ihnen das <openbook> gefallen? Wir freuen uns immer über Ihre freundlichen und kritischen Rückmeldungen.






<< zurück
  Zum Katalog
Zum Katalog: Java ist auch eine Insel





Java ist auch eine Insel
Jetzt bestellen


 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Tipp
Zum Katalog: Coding for Fun





 Coding for Fun


 Buchempfehlungen
Zum Katalog: Objektorientierte Programmierung





 Objektorientierte
 Programmierung


Zum Katalog: Einstieg in Eclipse 3.4






 Einstieg in
 Eclipse 3.4


Zum Katalog: Java 6 lernen mit Eclipse






 Java 6 lernen
 mit Eclipse


Zum Katalog: NetBeans Platform 6






 NetBeans
 Platform 6


Zum Katalog: Java und XML






 Java und XML


Zum Katalog: Visual C# 2008






 Visual C# 2008


Zum Katalog: IT-Handbuch für Fachinformatiker






 IT-Handbuch für
 Fachinformatiker


Zum Katalog: C++ von A bis Z






 C++ von A bis Z


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo




Copyright © Galileo Press 2009
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.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de