Which of the following methods of the stringbuffer class is used to find the length of a string?

The java.lang package contains two string classes: String and StringBuffer. You've already seen the String class on several occasions in this tutorial. You use the String class when you are working with strings that cannot change. StringBuffer, on the hand, is used when you want to manipulate the contents of the string on the fly.

The reverseIt[] method in the following class uses both the String and StringBuffer classes to reverse the characters of a string. If you have a list of words, you can use this method in conjunction with a sort program to create a list of rhyming words [a list of words sorted by ending syllables]. Just reverse all the strings in the list, sort the list, and reverse the strings again. You can see the reverseIt[] method producing rhyming words in the example in Using Input and Output Streams

that shows you how to use piped streams.

class ReverseString { public static String reverseIt[String source] { int i, len = source.length[]; StringBuffer dest = new StringBuffer[len]; for [i = [len - 1]; i >= 0; i--] { dest.append[source.charAt[i]]; } return dest.toString[]; } }
The reverseIt[] method accepts an argument of type String called source that contains the string data to be reversed. The method creates a StringBuffer, dest, the same size as source. It then loops backwards over all the characters in source and appends them to dest, thereby reversing the string. Finally, the method converts dest, a StringBuffer, to a String.

In addition to highlighting the differences between Strings and StringBuffers, this lesson illustrates several features of the String and StringBuffer classes: creating Strings and StringBuffers, using accessor methods to get information about a String or StringBuffer, modifying a StringBuffer, and converting one type of string to another.

Why Two String Classes?

The Java development environment provides two classes that store and manipulate character data: String, for constant strings, and StringBuffer, for strings that can change.

Creating Strings and StringBuffers

The following statement taken from the reverseIt[] method creates a new StringBuffer in three steps: declaration, instantiation, and initialization.
StringBuffer dest = new StringBuffer[len];
These are the same steps for creating an object of any type.

Accessor Methods

The reverseIt[] method uses two accessor methods to obtain information about source: charAt[] and length[]. Both String and StringBuffer provide a number of other accessor methods, including some for inspecting substrings and getting the positions of a specific character.

Modifying StringBuffers

The reverseIt[] method uses StringBuffer's append[] method to add characters to dest. In addition to append[], StringBuffer provides methods to insert characters into the buffer, modify a character at a specific location within the buffer, and so on.

Converting Objects to Strings

reverseIt[] converts the resulting StringBuffer to a String and returns the string. You can convert several different data types to Strings using String's valueOf[] method.

Converting Strings to Numbers

You can also use methods from the Integer, Float, Double, and Long classes to convert the contents of a String to a number.

Other Interesting Features

String and StringBuffer provide several other useful ways to manipulate string data, including concatenation, comparison, substitution, and converting to upper and lower case. java.lang.String
and java.lang.StringBuffer
summarize and list all of the methods and variables supported by these two classes.

Strings and the Java Compiler

Before moving on to another lesson, you need to understand one final, important peculiarity about Strings and StringBuffers. The Java compiler uses Strings and StringBuffers behind the scenes to handle literal strings and concatenation.
Note to C and C++ Programmers: Java Strings are First-Class Objects; unlike C and C++ strings which are simply null-terminated arrays of 8-bit characters.

Welcome to Java String Quiz. String is one of the most important classes in Java. If you have done any programming in java, you must have used it.

The string is very popular when it comes to java interview questions or quiz. So I have gathered some great and tricky java string quiz questions that you should try.

Java String Quiz

There are 21 questions in this quiz. If you can correctly answer 15 or more, then consider yourself really good in String concepts. You can check the answer and detailed explanation by clicking on the “Reveal Answer” button after each question.

Let’s start the String Quiz and best of luck.

1. What will be the output of below statements?

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 Answer: B
**
It will throw the runtime exception.Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 16 It’s because the index value starts from 0.

2. What will be output of below statements?

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 Answer: B
**
It will throw the runtime exception with the error message as Exception in thread "main" java.lang.StringIndexOutOfBoundsException: begin 5, end 3, length 16. It’s because the end index is smaller than the start index.

3. Select all valid methods of String class.

A. trim[]
B. intern[]
C. toLower[]
D. split[]

Click to Reveal Answer

Correct Answer: A, B

Valid methods of String class are - trim[], intern[], toLowerCase[], and split[String regex].

4. What will be the output of below 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 Answer: A
**
When we use double quotes to create a String, it first looks for String with the same value in the String pool. If found, then it returns the reference else it creates a new String in the pool and then returns the reference.

However using new operator, we force String class to create a new String object in heap space. So s1 and s2 will have reference to the same String in the pool whereas s3 will be a different object outside the pool, hence the output.

5. Which of the following statements are true for string in 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 Answer: B, C

Read more at java switch case string

6. Which of the following statements are True for StringBuffer and 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 Answer: A, B

StringBuffer object is thread-safe because its methods are synchronized. But that’s an overhead in most of the cases, hence StringBuilder was introduced in Java 1.5. StringBuilder is not thread-safe. StringBuffer and StringBuilder are mutable classes. Read more at String vs StringBuffer vs StringBuilder.

7. String implementation follows which of the below design pattern?

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

Click to Reveal Answer

Correct Answer: A

String pool implementation follows the flyweight design pattern.

8. What will be the output of below statements?

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 Answer: C
**
From String compareTo[] method documentation:

compareTo method compares two strings lexicographically. The comparison is based on the Unicode value of each character in the strings. The character sequence represented by this String object is compared lexicographically to the character sequence represented by the argument string. The result is a negative integer if this String object lexicographically precedes the argument string. The result is a positive integer if this String object lexicographically follows the argument string. The result is zero if the strings are equal; compareTo returns 0 exactly when the equals[Object] method would return true.

This is the definition of lexicographic ordering. If two strings are different, then either they have different characters at some index that is a valid index for both strings, or their lengths are different or both. If they have different characters at one or more index positions, let k be the smallest such index; then the string whose character at position k has the smaller value, as determined by using the < operator lexicographically precedes the other string. In this case, compareTo returns the difference of the two character values at position k in the two string – that is, the value:

this.charAt[k]-anotherString.charAt[k]

In our example the “abc” precedes “def”, hence negative integer is returned. Then the lowest index with different char is 0 and a-d equals to -3.

9. What will be the output of below program?

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 Answer: A

The x.concat[y] will create a new string but it’s not assigned to x, so the value of x is not changed.

10. What will be the output of below program?

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 Answer: A

The given statements output will be “false” because in java + operator precedence is more than == operator. So the given expression will be evaluated to “s1 == s2 is:abc” == “abc” i.e false.

11. What will be the output of below 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 Answer: B

First of all, the expression in the bracket is executed. Then it’s all + operators, so they get executed from left to right.

We get String with each concatenation, hence the output gets produced as shown below.

“Java”+1+2+“Quiz”+“”+[3+4]
= “Java”+1+2+“Quiz”+“”+7
= “Java1”+2+“Quiz”+“”+7
= “Java12”+“Quiz”+“”+7
= “Java12Quiz”+“”+7
= “Java12Quiz”+7
= “Java12Quiz7”

12. How many String objects created in below 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 Answer: C

In statement 1, “abc” is created in the String pool.

In statement 2, first of all “abcd” is created in the string pool. Then it’s passed as an argument to the String new operator and another string gets created in the heap memory.

So a total of 3 string objects gets created.

13. What will be the output of below 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 Answer: A

The s1 is in the string pool whereas s2 is created in heap memory.

Hence s1==s2 will return false.

When s2.intern[] method is called, it checks if there is any string with value “abc” in the pool. So it returns the reference of s1. So both s1 and s2 are pointing to the same string instance now.

Hence s1==s2.intern[] will return true.

14. Select all the interfaces implemented by String class.

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

Click to Reveal Answer

Correct Answer: A, B, C

String is serializable and comparable. The Constable is a new interface from the Java 12 release.

15. Select all the reasons that make String perfect candidate for Map key?

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 Answer: A, B, C
**
The proper implementation of hashCode[] and equals[] method is a must for a Map key. Since the string is final and immutable, there are no chances of corruption of the key data.

16. What will be the output of below code snippet?

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 Answer: A
**
It will print “JAVA” because the argument inside the println[] method is an assignment. So it will be treated as System.out.println["JAVA"].

17. What will be the output of below 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 Answer: A

It will print false because s2 is not of type String. If you will look at the String equals[] method implementation, you will find a check using instanceof operator to check if the type of passed object is String? If not, then return false.

18. What will be the output of below code snippet?

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 Answer: A

It’s a tricky question and output will be false. We know that intern[] method will return the String object reference from the string pool, but since we didn’t assign it back to s2, there is no change in s2. Hence both s1 and s2 are having a different reference.

If we change the code in line 3 to s2 = s2.intern[]; then the output will be true.

19. Select all the classes that extend String class.

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

Click to Reveal Answer

**Correct Answer: D
**
It’s a tricky question. The String is a final class, so you can’t extend it.

20. Which of the following statements are true about 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 Answer: C, D, E

We can’t extend String class because it’s final. StringBuffer doesn’t extend it. String class is defined in java.lang package.The string is immutable and hence thread-safe in java. String is case sensitive, so “abc” is not equal to “ABC”.

21. What will be the output of below statements?

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 Answer: B

Line 2 will print null because print method has null check like this:

if [s == null] { s = "null";}

Line 3 will throw NullPointerException because we are trying to invoke toString[] function on null.

Conclusion

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.

Which of the method of class String is used to obtain a length of String object?

Which of this method of class String is used to obtain a length of String object? Explanation: Method length[] of string class is used to get the length of the object which invoked method length[].

Which method of StringBuffer class is used to?

It is used to increase the capacity of a StringBuffer object. ... StringBuffer class in Java..

Which of this method of class StringBuffer is used to concatenate the String data?

1] StringBuffer Class append[] Method The append[] method concatenates the given argument with this String.

Which of these methods of class StringBuffer is used to extract a substring from a String object?

The substring[int start] method of StringBuffer class is the inbuilt method used to return a substring start from index start and extends to end of this sequence.

Chủ Đề