logo

Crowdly

SEW2b 1xHIT String-Objekte und weitere Kontrollstrukturen

Шукаєте відповіді та рішення тестів для SEW2b 1xHIT String-Objekte und weitere Kontrollstrukturen? Перегляньте нашу велику колекцію перевірених відповідей для SEW2b 1xHIT String-Objekte und weitere Kontrollstrukturen в elearning.tgm.ac.at.

Отримайте миттєвий доступ до точних відповідей та детальних пояснень для питань вашого курсу. Наша платформа, створена спільнотою, допомагає студентам досягати успіху!

Können zwei Referenzvariablen auch den gleichen Inhalt haben?

Zwei Referenzvariablen haben dann den gleichen Inhalt, wenn sie auf das

selbe Objekt verweisen. Das kann z.B. sein, wenn der Inhalt der einen

Referenzvariablen direkt der anderen zugewiesen wird. Dies erreicht man,

wenn man zum obigen Beispiel folgende Zeilen hinzufügt.

Dabei wird die Referenz, die in text1 gespeichert ist, kopiert und der Variablen text3 zugewiesen. Danach haben beide Variablen den gleichen "Speicher-Ort" als Referenz und verweisen beide auf den selben Text. Das zugehörige Bild im Speicher kann man sich so vorstellen:

Ein Vergleich der beiden Variablen text1 und text3 mit == vergleicht nun die Referenzen, d.h. den "Speicher-Ort". Deshalb kommt dieser Vergleich zu dem Ergebnis, dass beide Variablen auf den selben "Ort" verweisen und damit ist das Ergebnis true.

Und wie kann man nun zwei Strings inhaltlich vergleichen?

Dies kann nur mit Hilfe von Objekt-Methoden erreicht werden. Dazu muss

man sich die API-Dokumentation der Klasse String ansehen (oder einfach

weiterlesen).

Ergänze folgende Zusammenfassung:

  • Referenzen können auch durch

    von einer Referenzvariablen in eine andere Referenzvariable kopiert werden.

  • Danach haben beide Variablen

    Referenz gespeichert.

  • Anders ausgedrückt verweisen beide Referenzvariablen auf

    Speicher-Ort.

  • In diesem Fall liefert ein Vergleich mit == das Ergebnis

Переглянути це питання

Referenzdatentypen vergleichen

Wenn man den Inhalt von Referenzdatentypen vergleichen möchte, stößt man

auf ein Problem. Ein Beispiel dafür ist, wenn man überprüfen möchte, ob

ein eingegebener Text mit einem gespeicherten Text übereinstimmt. Das

folgende Programmbeispiel zeigt dieses Problem:

Was passiert hier in diesem Beispiel? Wenn man sich das Speicherbild

vorstellt, kommt man der Lösung näher:

Beim Vergleich mit == (oder auch !=

) wird der Inhalt der Variablen

verglichen. Der Inhalt einer Referenzvariablen ist aber

die Referenz

auf ihr zugehöriges Objekt, d.h. ein Verweis auf den Ort, wo das Objekt

gespeichert ist (Schnur, Fernsteuerung, ...). Das eine

String

-Objekt

ist aber nicht an genau der gleichen Stelle gespeichert, wie das andere

String

-Objekt (was ja auch nicht sein kann, da zwei unterschiedliche

Objekte nicht an der gleichen Stelle sein können - oder hast du schon

einmal 2 Dinge genau an der gleichen Stelle gesehen?). Deshalb ist auch

ihre Referenz nicht gleich. Und damit liefert der Vergleich der beiden

Referenzen

false.

Ergänze folgende Zusammenfassung und beantworte die Fragen:

  • Wenn zwei String-Variablen mit == verglichen werden, kommt zunächst

    Compiler-Fehler.

  • Obwohl beide String-Variablen auf den inhaltlich gleichen Text verweisen, ist das Ergebnis eines String-Vergleiches mit == oft (speziell wenn einer der String-Werte eingelesen wurde).

  • Der Grund dafür ist, dass mit == der Inhalt der Variablen verglichen wird, und dieser ist jeweils eine .

  • Eine Referenz gibt aber

    an. Und dieser kann bei 2 Objekten eben
    gleich sein.

Переглянути це питання

Referenzdatentypen im Arbeitsspeicher

Mit Referenzvariablen läuft es zunächst ganz ähnlich ab. Wenn sie

deklariert werden, wird zunächst eine leere Variable auf dem Stack

erzeugt.

String text1;

 

Wenn dieser String

-Variablen jedoch ein Text zugewiesen wird, dann kann

dieser Text

nicht innerhalb der String

-Variablen gespeichert werden.

Texte können beliebig groß sein. Daher kann man nicht wie bei einfachen

Datentypen von vornherein eine bestimmte Anzahl an Bytes als Größe

festlegen. Deshalb sind Texte als

Objekte

umgesetzt worden. Objekte

werden auf einem viel größeren Speicherbereich dem

Heap

(engl. für

Haufen) gespeichert. Damit man sie dort findet wird in der Variablen am

Stack eine

Referenz

auf dieses Objekt abgelegt. Diese Referenz (bzw.

Verweis) kann man sich als Adresse vorstellen oder als Schnur zum Objekt

am Heap oder auch als Fernsteuerung, mit der ich das Objekt am Heap

ansprechen kann. In Grafiken stelle ich sie meist als Pfeil dar. Die

folgende Zeile erzeugt ein

String-Objekt mit dem Inhalt Ich mag SEW!

und

speichert die Referenz zu diesem Objekt in der Variablen

text1:

   text1 = "Ich mag SEW!"

;

 

Ergänze folgende Zusammenfassung und beantworte die Fragen:

  • Die lokale Variable selbst wird auch bei Referenzdatentypen im -Bereich des Arbeitsspeichers angelegt.

  • Der "Inhalt" einer Referenzvariablen (z.B. der Text) wird in einem Speicherbereich namens gespeichert.

  • Im Heap werden alle

    gespeichert.

  • Der Text, den wir in eine String-Variable speichern wollen (z.B. Ich mag SEW!), ist also auch ein und wird am gespeichert.

  • Damit ein Objekte am Heap gefunden werden kann, wird eine auf dieses Objekt benötigt.

  • Diese Referenz wird dann in die am Stack gespeichert.

  • Welche der folgenden Umschreibungen kann man für den Begriff "Referenz!" verwenden?

  • Das folgende Bild zeigt anschaulich die Organisation eines Stacks und eines Heaps. Dabei ist 0 der und 1 der

(Und auf dem Heap findet man eben ohne Referenzen kaum das gesuchte Kleidungsstück lächelnd )

Переглянути це питання

Einfache Datentypen im Arbeitsspeicher:

Eine lokale Variable wird im Arbeitsspeicher angelegt (erinnere dich an

das Konservenglas-Bild). Der Bereich des Arbeitsspeichers, in dem lokale

Variablen angelegt werden, wird

Stack

(engl. für Stapel) genannt.

Das folgende Programmstück deklariert zwei Variablen für ganze Zahlen

auf dem Stack.

public class

MeinProgramm {

public static void

main(String[] args) {

int

zahl1;

int

zahl2;

 

Diese zwei Anweisungen erzeugen zwei leere Variablen, die noch keinen

Inhalt haben. Man könnte sich das entsprechende Speicherbild so

vorstellen:

Erst wenn die Variablen mit einem Wert initialisiert werden, haben sie

auch einen Wert in ihrem Speicherbereich im Stack gespeichert.

   zahl1 = 75

;

zahl2 = -

19

;

 

Diese Werte werden bei einfachen Variablen

direkt in den Speicherplatz im Stack gespeichert.

Ergänze folgende Zusammenfassung und beantworte die Fragen:

  • Lokale Variablen werden in einem speziellen Bereich des Arbeitsspeichers angelegt, der genannt wird.

  • Direkt nach der Deklaration (noch vor der Initialisierung) ist der Speicherbereich der Variablen

    .

  • Bei lokalen Variablen von einfachen Datentypen wird der zugewiesene Wert

    im Stack gespeichert.

  • Bei welchen Datentypen werden die Werte der lokalen Variablen direkt im Stack gespeichert?

  • Bei welchen Datentypen werden die Werte der lokalen Variablen NICHT im Stack gespeichert?

Переглянути це питання

String als Referenzdatentyp

String ist ein Referenzdatentyp bzw. Objektdatentyp

. Dies ist an dem

großen Anfangsbuchstaben

erkennbar. Nachdem laut Java-Regelungen nur

Klassennamen mit einem Großbuchstaben beginnen und dann mit

Kleinbuchstaben fortgesetzt werden, bedeutet der große Anfangsbuchstabe

außerdem, dass

String

auch eine Klasse ist. Damit haben wir

zusammenfassend, folgende Eigenschaften von

String:

  • String ist ein Datentyp

  • String

    ist kein einfacher Datentyp, sondern ein Referenzdatentyp bzw.

    Objektdatentyp

  • String

    ist eine Klasse (alle Referenzdatentypen sind Klassen und

    alle Klassen sind Referenzdatentypen)

Daraus ergeben sich ein paar Besonderheiten bei der Verwendung von

String im Unterschied zu anderen einfachen Datentypen.

*Ergänze folgende Zusammenfassung und beantworte die Fragen:

  • String ist

    einfacher Datentyp.

  • String ist ein

  • Jeder Referenzdatentyp ist auch eine

  • Klassen beginnen in Java immer mit einem Anfangsbuchstaben.

  • Am großen Anfangsbuchstaben ist erkennbar, dass String auch

    ist.

Переглянути це питання

Zu welcher von 2 grundsätzlichen Kategorien von Datentypen gehört String.

Переглянути це питання

Es soll eine Zufallszahl zwischen -4 und +3 erzeugt werden. Welcher Wert muss zu der von Math.random() gelieferten Zufallszahl ganz am Schluss addiert werden (nach der Multiplikation), damit der gewünschte Zahlenbereich erreicht wird?

Переглянути це питання

Mit welcher Zahl muss die von Math.random() gelieferte Zufallszahl multipliziert werden, um einen Zahlenbereich von -5 bis +3 zu erhalten?

Переглянути це питання

Es soll eine Zufallszahl zwischen -3 und +3 erzeugt werden. Welcher Wert muss zu der von Math.random() gelieferten Zufallszahl ganz am Schluss addiert werden (nach der Multiplikation), damit der gewünschte Zahlenbereich erreicht wird?

Переглянути це питання

Mit welcher Zahl muss die von Math.random() gelieferte Zufallszahl Multipliziert werden, um einen Zahlenbereich von -5 bis +1 zu erhalten?

Переглянути це питання

Хочете миттєвий доступ до всіх перевірених відповідей на elearning.tgm.ac.at?

Отримайте необмежений доступ до відповідей на екзаменаційні питання - встановіть розширення Crowdly зараз!