Looking for SEW2b 1xHIT String-Objekte und weitere Kontrollstrukturen test answers and solutions? Browse our comprehensive collection of verified answers for SEW2b 1xHIT String-Objekte und weitere Kontrollstrukturen at elearning.tgm.ac.at.
Get instant access to accurate answers and detailed explanations for your course questions. Our community-driven platform helps students succeed!
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 ) wird der Inhalt der Variablen verglichen. Der Inhalt einer Referenzvariablen ist aber auf ihr zugehöriges Objekt, d.h. ein Verweis auf den Ort, wo das Objekt gespeichert ist (Schnur, Fernsteuerung, ...). Das eine -Objekt ist aber nicht an genau der gleichen Stelle gespeichert, wie das andere -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 ==
(oder auch !=
String
String
false
.
Wenn zwei String
-Variablen mit ==
verglichen werden, kommt zunächst
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
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 -Variablen jedoch ein Text zugewiesen wird, dann kann dieser Text -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 umgesetzt worden. Objekte werden auf einem viel größeren Speicherbereich dem (engl. für Haufen) gespeichert. Damit man sie dort findet wird in der Variablen am Stack eine 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 und speichert die Referenz zu diesem Objekt in der Variablen String
String
String
-Objekt mit dem Inhalt Ich mag SEW!text1
:
text1 = "Ich mag SEW!";
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
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 )
Eine lokale Variable wird im Arbeitsspeicher angelegt (erinnere dich an das Konservenglas-Bild). Der Bereich des Arbeitsspeichers, in dem lokale Variablen angelegt werden, wird (engl. für Stapel) genannt. Das folgende Programmstück deklariert zwei Variablen für ganze Zahlen auf dem Stack.
public classMeinProgramm {
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
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
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. Dies ist an dem 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 auch eine Klasse ist. Damit haben wir zusammenfassend, folgende Eigenschaften von String
ist ein Referenzdatentyp bzw. ObjektdatentypString
String
:
String
ist ein Datentyp
ist kein einfacher Datentyp, sondern ein Referenzdatentyp bzw. ObjektdatentypString
ist eine Klasse (alle Referenzdatentypen sind Klassen und alle Klassen sind Referenzdatentypen)String
Daraus ergeben sich ein paar Besonderheiten bei der Verwendung vonString
im Unterschied zu anderen einfachen Datentypen.
String
ist
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
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?
Im Gegensatz zu den bisherigen Schleifen ( ) steht bei fußgesteuerten Schleifen die Bedingung erst in der -Schleife (manchmal auch einfach nur while
und for
do
-while
do
-Schleife genannt). Sie ist folgendermaßen aufgebaut:
In der Kopfzeile befindet sich lediglich das Schlüsselwort . Anschließend beginnt der Schleifenblock mit einer geschwungenen Klammer. Erst in der Fußzeile findet man neben dem Schlüsselwort auch die Laufbedingung. Wichtig ist hier auch noch, dass die fußgesteuerte Schleife do
while
Bei der fußgesteuerten Schleife steht die Bedingung
Die Kopfzeile der fußgesteuerten Schleife in Java besteht nur aus dem Schlüsselwort .
Wie bei den anderen Kontrollstrukturen wird der Block der Schleife durch begonnen und durch beendet.
Das Schlüsselwort steht am Ende der Schleife nach dem Schleifenblock und gibt an, dass jetzt die Bedingung folgt.
Wie bei den kopfgesteuerten Schleifen handelt es sich bei der Bedingung um eine . Sie besagt, dass die Schleife weiter läuft, solange die Bedingung
Gerne vergessen wird der Abschluss der Schleifenanweisung mittels .
Im Gegensatz zur kopfgesteuerten Schleife,
Get Unlimited Answers To Exam Questions - Install Crowdly Extension Now!