Verständnisproblem

vjung

Aktives Mitglied
Java:
class TelefonEintrag
{
  String name;      // Name einer Person
  String telefon;   // ihre Telefonnummer

  TelefonEintrag( String name, String telefon )
  {
    this.name = name; this.telefon = telefon;
  }
}

class TelefonBuch
{
  TelefonEintrag[] telefonbuch;

  TelefonBuch()    // Konstruktor
  {
    telefonbuch = new TelefonEintrag[ 5 ] ;

    // das Telefonverzeichnis mit Daten füllen
    . . . .
  }

  TelefonEintrag suchen( String targetName ) //<<<<<<<<<<<<<<<<<<<<<<1.
  {
    // verwenden Sie lineare Suche, um den Zielnamen zu finden
    . . . .
  }
}

class TelefonBuchTester
{
  public static void main ( String[] args )
  {
    TelefonBuch telebuch = new TelefonBuch();

    // suchen for "Violet Smith"
    TelefonEintrag eintrag = telebuch.suchen( "Violet Smith" ); //<<<<<<<<<<<<<<<<<2.

    if ( eintrag != null )
      System.out.println( eintrag.name + ": " + eintrag.telefon );
    else
      System.out.println("Namen nicht gefunden" );
  }
}

Die Zeilen zu denen ich Fragen habe, habe ich mit //<<<<1. und //<<<<2. markiert.

1.: Was für eine Art von Methode ist das? Ich habe hier etwas erwartet wie void suchen, hier steht jedoch der Klassenname einer anderen Klasse, was hat dies somit genau zu bedeuten? (Da keine rechteckigen Klammern, ging ich nicht davon aus das es sich um das Array handelt)

2.: Ich hätte auf der rechten Seite vom = einen Konstrukter erwartet, hier steht jedoch eine methode das auf das Objekt telebuch angewandt wird. Wie habe ich somit die linke Seite zu interpretieren?
 

Tarrew

Top Contributor
1. Das ist der Rückgabewert. Bei void (welches du anscheinend gewöhnt bist), wird nichts zurückgegeben.
public int getNumber() ist zB eine Methode die eine Ganzzahl zurückgibt (Rückgabewert int). Deine markierte Methode hat also als Rückgabewert ein Objekt vom Typ "TelefonEintrag".

2. Aus der 1. Frage ergibt sich im Prinzip auch das 2. Die suchen-Methode gibt ein Objekt vom Typ "TelefonEintrag" zurück. Dieser Rückgabewert wird dann der Variablen 'eintrag' zugewiesen.
 

vjung

Aktives Mitglied
Ah ok, nunja ich kannte bisher nur rückgabewerte von primitiven Datentypen und String-Objekten.
Danke, damit kann ich arbeiten :)
 

vjung

Aktives Mitglied
Da der Rückgabewert ein Objekt vom Typ "TelefonEintrag" ist, bedeutet dies auch das er die selben Eigenschaften besitzt wie ein Objekt das mittels eines Konstruktors erstellt wurde + die return Daten der Methode?
 

Harry Kane

Top Contributor
Kurze Antwort: ja.
Die suchen-methode soll offenbar das array TelefonEintrag[] durchgehen und eineTelefonEintrag Instanz mit passendem Namen zurückgeben. Diese Instanz ist selber auch nur durch einen schnöden Konstruktoraufruf entstanden, der zum Zeitpunkt der Suche aber schon längst "gelaufen" ist.
 

vjung

Aktives Mitglied
Dieser Konstruktoraufruf geschieht somit automatisch im Hintergrund?
Ist dies dann ein Default Konstruktor?
Und was ist wenn ich einen Konstruktor mit Parameterübergabe nur angegeben hätte und keinen weiteren Default Konstruktor.
 

vjung

Aktives Mitglied
Java:
for (int j=0; j<telefonbuch.length; j++)
   {
     if ( telefonbuch[ j ].
       name.equals( targetName))
           return telefonbuch[ j ];
   }
   return null;

So würde übrigens der Inhalt der Methode suchen aussehen. Da der Rückgabetyp ja ein Objekt ist hätte ich eigentlich als return auch ein Objekt erwartet.
 

VfL_Freak

Top Contributor
Moin,
Da der Rückgabetyp ja ein Objekt ist hätte ich eigentlich als return auch ein Objekt erwartet
Du gibst ja mit telefonbuch[j] ein Objekt zurück, es ist doch vom Typ TelefonEintrag (oder eben null, wenn der Name nicht gefunden wird) !!!

Vielleicht solltest Du mal Deine Namensgebung überdenken, da sie nicht nur mich, sondern auch Dich verwirrt :D

Gruß Klaus
 

Harry Kane

Top Contributor
Dieser Konstruktoraufruf geschieht somit automatisch im Hintergrund?
Nein. TelefonEintrag[] muss vorher explizit mit TelefonEintrag-Instanzen befüllt werden. Für jede TelefonEintrag-Instanzen muss der Konstruktor von TelefonEintrag aufgerufen werden. Das ganze passiert offenbar in dem Codeabschnitt, den du in deinem ersten Post mit // das Telefonverzeichnis mit Daten füllen abgekürzt hast.
Ist dies dann ein Default Konstruktor?
Vielleicht.
Und was ist wenn ich einen Konstruktor mit Parameterübergabe nur angegeben hätte und keinen weiteren Default Konstruktor.
Dann muss eben der Konstruktor mit Parameterübergabe aufgerufen werden.
 

vjung

Aktives Mitglied
Stiiiimt telefonbuch[j] referenziert ja ein Objekt von TelefonEintrag. In dem Skript das ich verfolgt habe kam das auf einmal so plötzlich ohne Erklärung das ich (auch wie gesagt, durch die Namensgebungen) total verwirrt war. Danke euch! :))
 

vjung

Aktives Mitglied
Ja genau, mir war in dem Moment noch nicht klar das telefonbuch[j] auf ein Objekt verweist. Habe einen Tag vorher erst mit Arrays angefangen gehabt, bin da dann ein bischen durcheinander gekommen :p Aber ich glaube es nun zu verstehen :)
 

vjung

Aktives Mitglied
Aber ich lerne seit 100 Seiten über Referenzen das telefonbuch[j] eine Referenz auf ein Objekt ist oO

Bitte sag mir nicht das war alles umsonst 0(-.-)0

Unser Dozent zieht uns immer die Ohren lang wenn jemand bei einem Ausdruck wie

Telefonbuch t1 = new Telefonbuch();
behauptet t1 sei ein Objekt. Sondern nur die Referenz dazu. Und bei String objekten war es zumindest so das zb telefonbuch[1] die Referenz auf den Slot im Array ist der ein String Objekt enthält
 

VfL_Freak

Top Contributor

vjung

Aktives Mitglied
Da Strings unveränderbar sind, wäre es doch dann eigentlich nicht möglich bei einem String Array einem Slot einen neuen String zuzuweisen, da man ja somit das StringObjekt ändern würde. Ich dachte jedoch das dabei der alte String zu Ausschuss wird und der Garbage Collector sich um ihn kümmert.
Bin aber noch ziemlich Neuling in java und komme bei manchen Sachen noch durcheinander :p
 

VfL_Freak

Top Contributor
Bin mir jetzt sicher, ob ich das richtig verstanden, was Du damit sagen willst .... ;)

Vielleicht es dies hier:
http://stackoverflow.com/questions/...-between-mutable-and-immutable-string-in-java
http://stackoverflow.com/questions/3801343/what-is-string-pool-in-java
http://www.javaschubla.de/2007/javaerst0150.html
Aber der Stringpool ist auch am Anfang nicht leicht zu verstehen :)

Der Garbage Collector kümmert sich nur um Objekte, die nicht mehr referenziert werden! Auch das ist nicht simpel :(
https://www.codecentric.de/publikation/der-garbage-collector-das-unbekannte-wesen/
http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/gc01/index.html

So, genug für Dich zu lesen am Wochenende :cool:
Gruß Klaus
 

vjung

Aktives Mitglied
Danke dir :)

Muss an diesem Wochenende meinen Terminkalender abgeben den ich für das Testat programmieren muss, werde mich daher sicherlich noch ein paar mal hier im Forum melden müssen :rolleyes:
 

vjung

Aktives Mitglied
Mir wurde jetzt nochmal gesagt das ein ausdruck wie waerme nur auf den slot des Arrays verweist, (hier i) aber der Wert bzw das Objekt nicht waerme ist... Nun bin ich verwirrt :/
 

vjung

Aktives Mitglied
ups meinte waerme[ i ], was nur als anderes beispiel dienen sollte. also arrays im allgemeinen und nicht nur für telefonbücher.
z.B.
Java:
String[] waerme = new String[1];
waerme[0] = "zehn grad";
System.out.println(waerme[0]);
waerme[0] = "elf grad";
System.out.println(waerme[0]);

Mit meinem momentanen Wissensstand meinte ich zu wissen das String-Objekte unveränderbar sind und wenn waerme[0] nicht nur den Slot des String-Objektes referenziert, sondern dieses ist, erschien es mir unlogisch das es sich dann hier ändert. Vielleicht versteht ihr jetzt besser was mich so verwirrt, vielleicht verwirre ich euch damit aber auch nur umso mehr :p
Ich akzeptiere jetzt einfach mal das array[ i ] das Objekt an sich ist anstatt die Referenz und gehe damit davon aus das es wohl Regeln gibt in denen Strings doch änderbar sind, wie z.B. wenn sie Teil eines Arrays sind. Ach ich habe doch keinen Plan o_O

EDIT: Der Texteditor sieht anscheinend eckige Klammern als Code für den Texteditor an, deswegen wurden die Array Klammern erst nicht mitgedruckt. Dachte gerade eben ich habe sie nochmal vergessen :p (Macht ja auch Sinn, da das einbetten von Codes durch eckige Klammern dargestellt wird)
 
Zuletzt bearbeitet:

Harry Kane

Top Contributor
In deinem Code erzeugst du ein neues String-Objekt und packst es in das array. Das alte Stringobjekt mit dem Inhalt "zehn grad" wird nirgendwo mehr referenziert und dürfte alsbald vom garbage collected abgeräumt werden.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Verständnisproblem bei Server/Client Java Basics - Anfänger-Themen 3
nonickatall Grundsätzliches Verständnisproblem des Aufbaus eines Programms Java Basics - Anfänger-Themen 19
X Verständnisproblem Call-By-Reference Java Basics - Anfänger-Themen 5
P JavaFX: Verständnisproblem bei ComboBox/ChoiceBox etc. Java Basics - Anfänger-Themen 9
T Verständnisproblem mit Assoziationen Java Basics - Anfänger-Themen 7
M Verständnisproblem der Rekursion bei Arrays Java Basics - Anfänger-Themen 8
A Erste Schritte Verständnisproblem Java Basics - Anfänger-Themen 5
S Verständnisproblem Aufgabe Java Basics - Anfänger-Themen 9
S Model View Controller: Verständnisproblem Java Basics - Anfänger-Themen 13
temi Verständnisproblem Class.forName() Java Basics - Anfänger-Themen 3
2 Verständnisproblem bei Anwendung von Lower Bounded Wildcards Java Basics - Anfänger-Themen 5
L [Verständnisproblem] Array wird trotz void rückgabe verändert. Java Basics - Anfänger-Themen 5
A Verständnisproblem Ausgabe Do-While-Schleife Java Basics - Anfänger-Themen 3
J Verständnisproblem einer Methode Java Basics - Anfänger-Themen 20
M Konstruktur - Verständnisproblem Java Basics - Anfänger-Themen 4
C Postinkrement und println - Verständnisproblem Java Basics - Anfänger-Themen 8
T Verständnisproblem beim Vigenere-Verfahren Java Basics - Anfänger-Themen 2
Q MVC Verständnisproblem: Controller vs model.modelChanged() Java Basics - Anfänger-Themen 0
N Verständnisproblem InsertionSort. Java Basics - Anfänger-Themen 2
D Verständnisproblem Java Basics - Anfänger-Themen 2
B VerständnisProblem mit Beispielaufgabe aus Buch Java Basics - Anfänger-Themen 1
H Polymorphie Verständnisproblem Vererbung/Polymorphie Java Basics - Anfänger-Themen 4
FrankR2 Grundsätzliches Verständnisproblem: Java 32/64-bit; Windows 7/8, 32/64-bit-System Java Basics - Anfänger-Themen 5
S Verständnisproblem bei Interfaces Java Basics - Anfänger-Themen 6
V Verständnisproblem Java Basics - Anfänger-Themen 5
V Arrays-verständnisproblem Java Basics - Anfänger-Themen 4
M Collections HashSet verständnisproblem Java Basics - Anfänger-Themen 9
S Verständnisproblem einer Übungsaufgabe Java Basics - Anfänger-Themen 6
H Abstrakte Basisklasse Verständnisproblem! Java Basics - Anfänger-Themen 8
G Verständnisproblem mit swing Java Basics - Anfänger-Themen 6
F Methoden Cannot refer to a non-final variable.. verständnisproblem. Java Basics - Anfänger-Themen 7
P Verständnisproblem main Methode Java Basics - Anfänger-Themen 9
S Klassen Verständnisproblem Konstruktor Java Basics - Anfänger-Themen 7
I e.getMessage(); - Verständnisproblem Java Basics - Anfänger-Themen 6
lesni Vererbung Vererbung - Verständnisproblem Java Basics - Anfänger-Themen 2
M OOP Polymorphie/Vererbung Verständnisproblem Java Basics - Anfänger-Themen 2
J Verständnisproblem Methoden-Kettung Java Basics - Anfänger-Themen 3
A Vererbung Verständnisproblem bei Übung Java Basics - Anfänger-Themen 5
E Verständnisproblem Typkonvertierung Java Basics - Anfänger-Themen 4
S OOP Verständnisproblem Umsteiger Java Basics - Anfänger-Themen 22
C Array Verständnisproblem Java Basics - Anfänger-Themen 3
P White-Box-Test Verständnisproblem Java Basics - Anfänger-Themen 11
D : ? Operator -Verständnisproblem Java Basics - Anfänger-Themen 24
G Verständnisproblem: Exceptions Java Basics - Anfänger-Themen 17
L Eclipse verlangt "{" nach ";"... Verständnisproblem Java Basics - Anfänger-Themen 5
D charAt(i) verständnisproblem Java Basics - Anfänger-Themen 4
D Verständnisproblem Marken und Schleifen Java Basics - Anfänger-Themen 19
M Verständnisproblem bei Ternären Operanten bzw. Bedingungsoperator Java Basics - Anfänger-Themen 8
T Datentypen Verständnisproblem mit main Methode Java Basics - Anfänger-Themen 3
M Verständnisproblem Threads Java Basics - Anfänger-Themen 7
X Threads und synchronized - Verständnisproblem Java Basics - Anfänger-Themen 3
W ArrayLists: Verständnisproblem bei remove() Java Basics - Anfänger-Themen 2
B Verständnisproblem zu Swing und Methoden Java Basics - Anfänger-Themen 8
A Postinkrement-Verständnisproblem Java Basics - Anfänger-Themen 12
R Iterator Liste, Verständnisproblem Java Basics - Anfänger-Themen 4
1 Verständnisproblem mit Foreach Java Basics - Anfänger-Themen 4
B Verständnisproblem bei Vererbung Java Basics - Anfänger-Themen 3
W generisches Programmieren - Verständnisproblem Java Basics - Anfänger-Themen 4
A Verständnisproblem Nr 2 Java Basics - Anfänger-Themen 14
A Verständnisproblem Java Basics - Anfänger-Themen 6
A Array Verständnisproblem Java Basics - Anfänger-Themen 8
G Verständnisproblem --> JTree Java Basics - Anfänger-Themen 6
M Verständnisproblem mit der Klasse Thread Java Basics - Anfänger-Themen 10
N BufferedReader Verständnisproblem Java Basics - Anfänger-Themen 12
G Verständnisproblem: Code kompelieren und interpretieren Java Basics - Anfänger-Themen 3
S Polymorphie Verständnisproblem Java Basics - Anfänger-Themen 4
G Verständnisproblem Türme von Hanoi Java Basics - Anfänger-Themen 4
G Verständnisproblem Serverinput einlesen. Java Basics - Anfänger-Themen 4
J Array und Schleifen Verständnisproblem Java Basics - Anfänger-Themen 25
G Verständnisproblem Java Basics - Anfänger-Themen 4
N Verständnisproblem: Mehrere Objekte einer Klasse erstellen Java Basics - Anfänger-Themen 2
S SelectionListener + repaint().Verständnisproblem ;) Java Basics - Anfänger-Themen 7
V Verständnisproblem mit Abstrakten zu Konkreten Klassen Java Basics - Anfänger-Themen 7
A Problem mit der Stringgrösse, bzw Verständnisproblem? Java Basics - Anfänger-Themen 14
A Verständnisproblem mit ScrollPanel Java Basics - Anfänger-Themen 3
R Verständnisproblem mit Hibernate Java Basics - Anfänger-Themen 2
T Verständnisproblem mit equals() Java Basics - Anfänger-Themen 4
N datei byte für byte auslesen (verständnisproblem) Java Basics - Anfänger-Themen 2
T Verständnisproblem packages/import Java Basics - Anfänger-Themen 9
Chucky Lineare Listen Programm Verständnisproblem Java Basics - Anfänger-Themen 38
D Verständnisproblem Java Basics - Anfänger-Themen 6
S for Schleifen: Verständnisproblem Java Basics - Anfänger-Themen 15
T Vererbung von Attributen und Methoden, Verständnisproblem Java Basics - Anfänger-Themen 4
bernd while-Schleife: Verständnisproblem Java Basics - Anfänger-Themen 7
S verständnisproblem drucken Java Basics - Anfänger-Themen 11
G GridBagLayout: Verständnisproblem Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben