Java String Quiz

Welkom bij de Java String Quiz. String is een van de belangrijkste klassen in Java. Als je ooit hebt geprogrammeerd in Java, moet je het hebben gebruikt.

De string is erg populair als het gaat om Java-interviewvragen of quizzen. Daarom heb ik een aantal geweldige en lastige Java-stringquizvragen verzameld die je zou moeten proberen.

Java String Quiz

Er zijn 21 vragen in deze quiz. Als je 15 of meer vragen correct kunt beantwoorden, beschouw jezelf dan echt goed in String-concepten. Je kunt het antwoord en de gedetailleerde uitleg controleren door op de “Onthul antwoord” knop te klikken na elke vraag.

Laten we de String Quiz starten en veel succes.

1. Wat zal de uitvoer zijn van de onderstaande instructies?

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

**Correct Antwoord: B
**
**
Het zal een runtime-uitzondering veroorzaken.Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 16 Dit komt omdat de indexwaarde begint vanaf 0.

2. Wat zal de uitvoer zijn van de onderstaande instructies?

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

**Correct Antwoord: B
**
Het zal een runtime-uitzondering veroorzaken met de foutmelding Exception in thread "main" java.lang.StringIndexOutOfBoundsException: begin 5, end 3, length 16. Dit komt doordat het eindindex kleiner is dan het startindex.

3. Selecteer alle geldige methoden van de String-klasse.

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

Click to Reveal Answer

Correct Antwoord: A, B

Geldige methoden van de String-klasse zijn: trim(), intern(), toLowerCase() en split(String regex).

4. Wat zal de output zijn van onderstaande statements?

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

**Correct antwoord: A
**
Wanneer we dubbele aanhalingstekens gebruiken om een String te maken, zoekt het eerst naar een String met dezelfde waarde in de String-pool. Als het gevonden wordt, retourneert het de referentie, anders maakt het een nieuwe String in de pool en retourneert het de referentie.

Door echter de new-operator te gebruiken, dwingen we de String-klasse om een nieuw String-object in het heapgeheugen te maken. Dus s1 en s2 zullen verwijzen naar dezelfde String in de pool, terwijl s3 een ander object buiten de pool zal zijn, vandaar de output.

5. Welke van de volgende uitspraken zijn waar voor een string in een 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

Correct antwoord: B, C

Lees meer op java switch case string

6. Welke van de volgende uitspraken zijn waar voor StringBuffer en 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

Correct antwoord: A, B

StringBuffer-object is thread-safe omdat de methoden ervan gesynchroniseerd zijn. Maar dat is in de meeste gevallen overhead, vandaar dat StringBuilder geïntroduceerd werd in Java 1.5. StringBuilder is niet thread-safe. StringBuffer en StringBuilder zijn mutabele klassen. Lees meer op String vs StringBuffer vs StringBuilder.

7. Welk ontwerppatroon volgt de implementatie van String?

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

Click to Reveal Answer

Correct antwoord: A

String pool-implementatie volgt het flyweight designpatroon.

8. Wat zal de output zijn van onderstaande instructies?

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

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

Click to Reveal Answer

**Correct antwoord: C
**
Uit de documentatie van de String compareTo() methode:

De compareTo-methode vergelijkt twee strings lexicografisch. De vergelijking is gebaseerd op de Unicode-waarde van elk teken in de strings. De tekenreeks die wordt vertegenwoordigd door dit String-object, wordt lexicografisch vergeleken met de tekenreeks die wordt vertegenwoordigd door de argumentstring. Het resultaat is een negatief geheel getal als dit String-object lexicografisch voorafgaat aan de argumentstring. Het resultaat is een positief geheel getal als dit String-object lexicografisch volgt op de argumentstring. Het resultaat is nul als de strings gelijk zijn; compareTo retourneert 0 precies wanneer de equals(Object)-methode true zou retourneren.

Dit is de definitie van lexicografische volgorde. Als twee strings verschillend zijn, hebben ze verschillende tekens op een index die een geldige index is voor beide strings, of hun lengtes zijn verschillend of beide. Als ze verschillende tekens hebben op een of meer indexposities, laat k dan de kleinste dergelijke index zijn; dan gaat de string waarvan het teken op positie k de kleinere waarde heeft, zoals bepaald door het gebruik van de < operator, lexicografisch vooraf aan de andere string. In dit geval retourneert compareTo het verschil tussen de twee tekenwaarden op positie k in de twee strings – dat wil zeggen, de waarde:

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

In ons voorbeeld komt “abc” voor “def”, dus wordt er een negatief getal teruggegeven. Dan is de laagste index met een ander teken 0 en a-d is gelijk aan -3.

9. Wat zal de output zijn van het onderstaande programma?

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

Correct antwoord: A

Het x.concat(y) zal een nieuwe string creëren maar het wordt niet toegewezen aan x, dus de waarde van x wordt niet veranderd.

10. Wat zal de output zijn van het onderstaande programma?

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

Correct antwoord: A

De gegeven statements output zal “false” zijn omdat in Java de + operator voorrang heeft boven de == operator. Dus de gegeven expressie zal geëvalueerd worden als “s1 == s2 is:abc” == “abc”, dus false.

11. Wat zal de output zijn van de onderstaande statements?

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

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

Click to Reveal Answer

Correct antwoord: B

Eerst wordt de expressie tussen haken uitgevoerd. Dan worden alle + operators uitgevoerd, dus ze worden van links naar rechts uitgevoerd.

We krijgen een String bij elke concatenatie, dus de output wordt geproduceerd zoals hieronder getoond.

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

12. Hoeveel String-objecten worden er gemaakt in de onderstaande statements?

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

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

Click to Reveal Answer

Correct antwoord: C

In statement 1 wordt “abc” gemaakt in de String pool.

In verklaring 2 wordt allereerst “abcd” aangemaakt in de stringpool. Vervolgens wordt het als argument doorgegeven aan de String new operator en wordt er een andere string aangemaakt in het heapgeheugen.

Dus in totaal worden er 3 stringobjecten aangemaakt.

13. Wat zal de uitvoer zijn van onderstaande statements?

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

Correct antwoord: A

De s1 bevindt zich in de stringpool, terwijl s2 wordt aangemaakt in het heapgeheugen.

Dus s1==s2 zal false retourneren.

Wanneer de methode s2.intern() wordt aangeroepen, controleert deze of er een string is met de waarde “abc” in de pool. Daarom retourneert het de referentie van s1. Nu verwijzen zowel s1 als s2 naar dezelfde stringinstantie.

Dus s1==s2.intern() zal true retourneren.

14. Selecteer alle interfaces geïmplementeerd door de String-klasse.

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

Click to Reveal Answer

Correct antwoord: A, B, C

String is serializable en comparable. Constable is een nieuwe interface vanaf de Java 12-release.

15. Selecteer alle redenen die String tot een perfecte kandidaat maken voor een Map-sleutel?

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

**Correct antwoord: A, B, C
**
Een goede implementatie van de hashCode() en equals() methode is essentieel voor een Map-sleutel. Aangezien de string final en onveranderlijk is, is er geen kans op corruptie van de sleutelgegevens.

16. Wat zal de uitvoer zijn van onderstaande codefragment?

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

**Correct antwoord: A
**
Het zal “JAVA” afdrukken omdat het argument in de println() methode een toewijzing is. Dus het zal worden behandeld als System.out.println("JAVA").

17. Wat zal de uitvoer zijn van onderstaande statements?

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

Correct Antwoord: A

Het zal false afdrukken omdat s2 niet van het type String is. Als je naar de implementatie van de String equals() methode kijkt, zul je een controle vinden met behulp van de instanceof operator om te controleren of het type van het doorgegeven object String is. Zo niet, dan wordt false geretourneerd.

18. Wat zal de output zijn van onderstaand codefragment?

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

Correct Antwoord: A

Het is een lastige vraag en de output zal false zijn. We weten dat de intern() methode de String-objectreferentie uit de stringpool retourneert, maar omdat we het niet hebben toegewezen aan s2, is er geen verandering in s2. Daarom hebben zowel s1 als s2 een verschillende referentie.

Als we de code op regel 3 wijzigen naar s2 = s2.intern();, dan zal de output true zijn.

19. Selecteer alle klassen die de String-klasse uitbreiden.

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

Click to Reveal Answer

**Correct Antwoord: D
**
**
Het is een lastige vraag. String is een laatste klasse, dus je kunt het niet uitbreiden.

20. Welke van de volgende uitspraken zijn waar over 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

Correct Antwoord: C, D, E

We kunnen de String-klasse niet uitbreiden omdat deze final is. StringBuffer breidt het niet uit. De String-klasse is gedefinieerd in het java.lang pakket. De string is onveranderlijk en daarom thread-safe in Java. String is hoofdlettergevoelig, dus “abc” is niet gelijk aan “ABC”.

21. Wat zal de output zijn van onderstaande uitspraken?

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

Correct Antwoord: B

Regel 2 zal null afdrukken omdat de print methode een null-check heeft zoals deze:

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

Regel 3 zal een NullPointerException veroorzaken omdat we proberen de toString() functie aan te roepen op null.

Conclusie

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