Java String Quiz

Willkommen beim Java String Quiz. String ist eine der wichtigsten Klassen in Java. Wenn Sie in Java programmiert haben, haben Sie es wahrscheinlich verwendet.

Der String ist besonders beliebt bei Java-Interviewfragen oder Quiz. Daher habe ich einige großartige und knifflige Java String Quiz-Fragen gesammelt, die Sie ausprobieren sollten.

Java String Quiz

Es gibt 21 Fragen in diesem Quiz. Wenn Sie 15 oder mehr Fragen richtig beantworten können, gelten Sie als wirklich gut in String-Konzepten. Sie können die Antwort und die ausführliche Erklärung anzeigen, indem Sie auf die Schaltfläche „Antwort anzeigen“ nach jeder Frage klicken.

Beginnen wir das String Quiz und viel Erfolg.

1. Was wird die Ausgabe der folgenden Anweisungen sein?

String s = "Java String Quiz";
System.out.println(s.charAt(s.toUpperCase().length()));

A. Convert “Z” to int 90 and prints “90”
B. Runtime Exception
C. Prints “z”
D. Prints “Z”

Click to Reveal Answer

**Richtige Antwort: B
**
Es wird eine Laufzeitfehlermeldung ausgelöst.Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 16 Dies liegt daran, dass der Indexwert bei 0 beginnt.

2. Was wird die Ausgabe der folgenden Anweisungen sein?

String s = "Java String Quiz";
System.out.println(s.substring(5,3));

A. Prints “Str”
B. Runtime Exception
C. IndexOutOfBoundsException Runtime Exception
D. StringIndexOutOfBoundsException Compile-time error

Click to Reveal Answer

**Richtige Antwort: B
**
Es wird eine Laufzeitfehlermeldung mit der Fehlermeldung Exception in thread "main" java.lang.StringIndexOutOfBoundsException: begin 5, end 3, length 16 ausgelöst. Dies liegt daran, dass der Endindex kleiner ist als der Startindex.

3. Wählen Sie alle gültigen Methoden der String-Klasse aus.

A. trim()
B. intern()
C. toLower()
D. split()

Click to Reveal Answer

Richtige Antwort: A, B

Gültige Methoden der String-Klasse sind – trim(), intern(), toLowerCase() und split(String regex).

4. Was wird der Output der folgenden Anweisungen sein?

String s1 = "Cat";
String s2 = "Cat";
String s3 = new String("Cat");
System.out.print(s1 == s2);
System.out.print(s1 == s3);

A. truefalse
B. truetrue
C. falsefalse
D. falsetrue

Click to Reveal Answer

**Richtige Antwort: A
**
Wenn wir doppelte Anführungszeichen verwenden, um einen String zu erstellen, sucht er zuerst nach einem String mit demselben Wert im String-Pool. Wenn er gefunden wird, gibt er die Referenz zurück, sonst erstellt er einen neuen String im Pool und gibt dann die Referenz zurück.

Mit dem new-Operator zwingen wir jedoch die String-Klasse dazu, ein neues String-Objekt im Heap-Speicher zu erstellen. Daher haben s1 und s2 eine Referenz auf denselben String im Pool, während s3 ein anderes Objekt außerhalb des Pools ist, daher der Output.

5. Welche der folgenden Aussagen sind wahr für einen String in einem switch case?

A. String is allowed in switch case for Java 1.5 or higher versions.
B. String is allowed in switch case for Java 1.7 or higher versions.
C. The equals() method is used by switch-case implementation, so add null check to avoid NullPointerException.

Click to Reveal Answer

Richtige Antwort: B, C

Mehr erfahren unter java switch case string

6. Welche der folgenden Aussagen sind wahr für StringBuffer und StringBuilder?

A. StringBuilder is not thread-safe.
B. StringBuffer is thread safe because its methods are synchronized.
C. StringBuilder was introduced in Java 1.4
D. StringBuffer and StringBuilder are immutable.

Click to Reveal Answer

Richtige Antwort: A, B

Ein StringBuffer-Objekt ist thread-sicher, da seine Methoden synchronisiert sind. Aber das ist in den meisten Fällen ein Overhead, daher wurde in Java 1.5 StringBuilder eingeführt. StringBuilder ist nicht thread-sicher. StringBuffer und StringBuilder sind veränderbare Klassen. Mehr erfahren unter String vs StringBuffer vs StringBuilder.

7. Die Implementierung von String folgt welchem der folgenden Designmuster?

A. Flyweight Design Pattern
B. Factory Pattern
C. Singleton Pattern
D. None of the above

Click to Reveal Answer

Richtige Antwort: A

Die String-Pool-Implementierung folgt dem Flyweight-Entwurfsmuster.

8. Was wird das Ergebnis der unten stehenden Anweisungen sein?

String s1 = "abc";
String s2 = "def";
System.out.println(s1.compareTo(s2));

A. 0
B. true
C. -3
D. false

Click to Reveal Answer

**Richtige Antwort: C
**
Aus der Dokumentation der compareTo()-Methode für Strings:

Die compareTo-Methode vergleicht zwei Strings lexikografisch. Der Vergleich basiert auf dem Unicode-Wert jedes Zeichens in den Strings. Die Zeichenfolge, die von diesem String-Objekt dargestellt wird, wird lexikografisch mit der Zeichenfolge verglichen, die vom Argument-String dargestellt wird. Das Ergebnis ist eine negative Ganzzahl, wenn dieses String-Objekt lexikografisch vor dem Argument-String liegt. Das Ergebnis ist eine positive Ganzzahl, wenn dieses String-Objekt lexikografisch nach dem Argument-String liegt. Das Ergebnis ist null, wenn die Strings gleich sind; compareTo gibt genau dann 0 zurück, wenn die equals(Object)-Methode true zurückgeben würde.

Dies ist die Definition der lexikografischen Reihenfolge. Wenn zwei Strings unterschiedlich sind, haben sie entweder unterschiedliche Zeichen an einer Indexposition, die für beide Strings gültig ist, oder ihre Längen sind unterschiedlich oder beides. Wenn sie unterschiedliche Zeichen an einer oder mehreren Indexpositionen haben, sei k der kleinste solche Index. Dann geht der String, dessen Zeichen an Position k den kleineren Wert hat, wie durch den <-Operator lexikografisch dem anderen String voraus. In diesem Fall gibt compareTo die Differenz der beiden Zeichenwerte an Position k in den beiden Strings zurück – das heißt, den Wert:

this.charAt(k)-anotherString.charAt(k)

In unserem Beispiel kommt „abc“ vor „def“, daher wird eine negative Ganzzahl zurückgegeben. Der niedrigste Index mit einem unterschiedlichen Zeichen ist 0 und „a-d“ entspricht -3.

9. Was wird der Ausgabewert des folgenden Programms sein?

public class Test {
	public static void main(String[] args) {
		String x = "abc";
		String y = "abc";
		x.concat(y);
		System.out.print(x);
	}
}

A. abc
B. abcabc
C. null

Click to Reveal Answer

Richtige Antwort: A

Die Verwendung von x.concat(y) erzeugt eine neue Zeichenkette, die jedoch nicht x zugewiesen wird. Daher wird der Wert von x nicht geändert.

10. Was wird der Ausgabewert des folgenden Programms sein?

public class Test {
	public static void main(String[] args) {
		String s1 = "abc";
		String s2 = "abc";
		System.out.println("s1 == s2 is:" + s1 == s2);
	}
}

A. false
B. s1 == s2 is:true
C. s1 == s2 is:false
D. true

Click to Reveal Answer

Richtige Antwort: A

Die gegebenen Anweisungen ergeben „false“, da in Java der + Operator eine höhere Priorität als der == Operator hat. Daher wird der Ausdruck „s1 == s2 is:abc“ == „abc“ zu false ausgewertet.

11. Was wird der Ausgabewert der folgenden Anweisungen sein?

String s = "Java"+1+2+"Quiz"+""+(3+4);
System.out.println(s);

A. Java3Quiz7
B. Java12Quiz7
C. Java12Quiz34
D. Java3Quiz34

Click to Reveal Answer

Richtige Antwort: B

Zuerst wird der Ausdruck in der Klammer ausgeführt. Dann werden die + Operatoren von links nach rechts ausgeführt.

Wir erhalten eine Zeichenkette mit jeder Konkatenation, daher wird die Ausgabe wie folgt erzeugt.

„Java“+1+2+“Quiz“+““+(3+4)
= „Java“+1+2+“Quiz“+““+7
= „Java1″+2+“Quiz“+““+7
= „Java12″+“Quiz“+““+7
= „Java12Quiz“+““+7
= „Java12Quiz“+7
= „Java12Quiz7“

12. Wie viele String-Objekte werden in den folgenden Anweisungen erzeugt?

String s = "abc"; // statement 1
String s1 = new String("abcd"); // statement 2

A. 1
B. 2
C. 3
D. 4

Click to Reveal Answer

Richtige Antwort: C

In der Anweisung 1 wird „abc“ im String-Pool erzeugt.

In Aussage 2 wird zunächst „abcd“ im String-Pool erstellt. Dann wird es als Argument an den String new Operator übergeben und ein weiterer String wird im Heap-Speicher erstellt.

Es werden also insgesamt 3 String-Objekte erstellt.

13. Was wird die Ausgabe der folgenden Aussagen sein?

String s1 = "abc";
String s2 = new String("abc");
System.out.print(s1==s2);
System.out.println(s1==s2.intern());

A. falsetrue
B. falsefalse
C. truetrue
D. truefalse

Click to Reveal Answer

Richtige Antwort: A

Der s1 befindet sich im String-Pool, während s2 im Heap-Speicher erstellt wird.

Daher wird s1==s2 false zurückgeben.

Wenn die Methode s2.intern() aufgerufen wird, prüft sie, ob es einen String mit dem Wert „abc“ im Pool gibt. Sie gibt also die Referenz von s1 zurück. Daher zeigen nun sowohl s1 als auch s2 auf die gleiche String-Instanz.

Daher wird s1==s2.intern() true zurückgeben.

14. Wählen Sie alle Schnittstellen aus, die von der String-Klasse implementiert werden.

A. Serializable
B. Comparable
C. Constable
D. Cloneable

Click to Reveal Answer

Richtige Antwort: A, B, C

String ist serialisierbar und vergleichbar. Constable ist eine neue Schnittstelle aus der Java 12 Veröffentlichung.

15. Wählen Sie alle Gründe aus, die String zum perfekten Kandidaten für den Map-Schlüssel machen?

A. String is immutable
B. String is final
C. String properly implements hashCode() and equals() method
C. String hashcode is cached

Click to Reveal Answer

**Richtige Antwort: A, B, C
**
Eine korrekte Implementierung der Methoden hashCode() und equals() ist ein Muss für einen Map-Schlüssel. Da der String final und unveränderlich ist, besteht keine Gefahr einer Beschädigung der Schlüsseldaten.

16. Was wird die Ausgabe des folgenden Code-Ausschnitts sein?

String s1 = new String("java");
String s2 = new String("JAVA");
System.out.println(s1 = s2);

A. JAVA
B.java
C. true
D. false

Click to Reveal Answer

**Richtige Antwort: A
**
Es wird „JAVA“ ausgedruckt, weil das Argument in der println()-Methode eine Zuweisung ist. Daher wird es als System.out.println("JAVA") behandelt.

17. Was wird die Ausgabe der folgenden Aussagen sein?

String s1 = "abc";
StringBuffer s2 = new StringBuffer(s1);
System.out.println(s1.equals(s2));

A. false
B. true
C. ClassCastException at runtime
D. Compile-time error

Click to Reveal Answer

Richtige Antwort: A

Es wird false gedruckt, weil s2 nicht vom Typ String ist. Wenn Sie sich die Implementierung der Methode equals() in String ansehen, werden Sie eine Überprüfung mit dem instanceof-Operator finden, um zu überprüfen, ob der Typ des übergebenen Objekts String ist. Wenn nicht, dann wird false zurückgegeben.

18. Was wird die Ausgabe des folgenden Code-Schnipsels sein?

String s1 = "abc";
String s2 = new String("abc");
s2.intern();
System.out.println(s1 == s2);

A. false
B. true
C. null

Click to Reveal Answer

Richtige Antwort: A

Es ist eine trickreiche Frage und die Ausgabe wird false sein. Wir wissen, dass die Methode intern() die String-Objektreferenz aus dem String-Pool zurückgeben wird, aber da wir sie nicht zurück zu s2 zugewiesen haben, gibt es keine Änderung in s2. Daher haben sowohl s1 als auch s2 eine unterschiedliche Referenz.

Wenn wir den Code in Zeile 3 zu s2 = s2.intern(); ändern, wird die Ausgabe wahr sein.

19. Wählen Sie alle Klassen aus, die die String-Klasse erweitern.

A. StringBuffer
B. StringBuilder
C. StringWriter
D. None

Click to Reveal Answer

**Richtige Antwort: D
**
**
Es ist eine trickreiche Frage. String ist eine finale Klasse, daher können Sie sie nicht erweitern.

20. Welche der folgenden Aussagen sind wahr über String in Java?

A. We can extend String class like StringBuffer does it.
B. String class is defined in java.util package.
C. String is immutable in Java.
D. String is thread-safe in Java.
E. String is case sensitive in Java.

Click to Reveal Answer

Richtige Antwort: C, D, E

Wir können die String-Klasse nicht erweitern, weil sie final ist. StringBuffer erweitert sie nicht. Die String-Klasse ist im Paket java.lang definiert. Der String ist unveränderlich und daher in Java threadsicher. String ist fallempfindlich, daher ist „abc“ nicht gleich „ABC“.

21. Was wird die Ausgabe der folgenden Anweisungen sein?

String s1 = null;
System.out.print(s1); // line 2
System.out.print(s1.toString()); // line 3

A. nullnull
B. null followed by NullPointerException
C. NullPointerException

Click to Reveal Answer

Richtige Antwort: B

Zeile 2 wird null drucken, weil die print-Methode eine Nullüberprüfung hat, wie diese:

if (s == null) { s = "null";}

Zeile 3 wirft eine NullPointerException, weil wir versuchen, die toString() Funktion auf null aufzurufen.

Schlussfolgerung

I have tried to cover most of the important points about String in this Quiz. If you think some interesting concept has been missed, please let me know through comments. If you liked the Quiz, share it with others too.

Source:
https://www.digitalocean.com/community/tutorials/java-string-quiz