OCAJP 8 - StringBuilder Mock Questions

In my previous post, I have reviewed an OCAJP 8 mock exam simulator which I have used for the exam preparation.
One of the exam objectives in OCAJP 8 exam is “Manipulate data using the StringBuilder class and its methods”. This exam objective tests your knowledge on how to write StringBuilder class and use its methods. I have prepared a set of good mock questions for the StringBuilder class that might be useful for the readers who are preparing for the OCAJP 8 certification exam.

1. What is the output ?

public class Test {
public static void main(String[] args) {
StringBuilder s1 = new StringBuilder("Java");
String s2 = s1.toString();
String s3 = s1.toString();
StringBuilder s4 = s1;
System.out.println((s2 == s3)+ "  "+ (s1 == s4) );
} }
A. true true
B. false true
C. true false
D. false false
E. Compiler error

2. Which of the following is not a method of StringBuilder ?

A. trim ( ) 
B. ensureCapacity( )
C. append( int a)
D. substring(int i)
E. setLength(int c)

3.How can you initialize a StringBuilder to have a capacity of at least 100 characters? 

Select 2 options 
A. StringBuilder sb = new StringBuilder(100); 
B. StringBuilder sb = StringBuilder.getInstance(100);
C. StringBuilder sb = new StringBuilder(); sb.setCapacity(100); 
D. StringBuilder sb = new StringBuilder(); sb.ensureCapacity(100);

4.What will be the result of attempting to compile and run the following program? 


public class TestClass{ 
public static void main(String args[ ] ){ 
StringBuilder sb = new StringBuilder("OCAJP8"); 
sb.setLength(4); 
sb.setLength(15); 
System.out.println(sb.length()); 
} } 
Select 1 option 
A. It will print 4. 
B. It will print 15. 
C. It will print 11. 
D. Compilation error. 
E. None of the above

5.What is the output ?

public class Test {
public static void main(String[] args) {
StringBuilder sb1 = new StringBuilder("OCAJP8");
StringBuilder sb2 = sb1 ;
sb1.append("J");
System.out.println(sb1 + " "+ sb2+ " " + (sb1==sb2)); 
}
}
A. OCAJP8J OCAJP8J true
B. OCAJP8J OCAJP8 false
C. OCAJP8 OCAJP8  true
D. OCAJP8J OCAJP8J false
E. Compiler error

6. What is the output ?

public class Test {

public static void main(String[] args) {

StringBuilder sb = new StringBuilder(5 + 7 + "Java" + 4 + 5);
sb.append(sb.delete(1, 4));
System.out.println(sb); 
}

}

A. 12Java451va45
B.1va451va45
C.57Java455va45
D.5va455va45
E.Compiler Error 
F. Exception at Run time

7. What is the output ? 

public class Test {
public static void main(String[] args) {
StringBuilder sb1 = new StringBuilder("OCAJP8");
sb1.subSequence(2, 4);
sb1.deleteCharAt(3);
sb1.reverse( );
System.out.println(sb1);

}
}
A. PCO
B. OCAJP8
C. 8PACO
D. 8PJACO
E. Compiler error
F. Exception at Run time

8. What is the output ?

public class Test{

public static void main(String[] args) {
int s = 0;
StringBuilder sb = new StringBuilder("1234567");
s += sb.substring(1, 2).length( );
s += sb.substring(6, 6).length( );
s += sb.substring(6, 5).length( );
System.out.println(s);
}

}
A. 1
B. 2
C. 3
D. 7
E. An exception is thrown.
F. The code does not compile.

9.What is the result of the following code? 

StringBuilder sb= new StringBuilder("0123456789");
sb.delete(2, 8);
sb.append("-").insert(2, "+");
System.out.println(sb);
A. 01+89–
B. 012+9–
C. 012+–9
D. 0123456789
E. An exception is thrown.
F. The code does not compile.

10.What is the result of the following code?

StringBuilder b = "rumble";
b.append(4).deleteCharAt(3).delete(3, b.length() - 1);
System.out.println(b);
A. rum
B. rum4
C. rumb4
D. rumble4
E. An exception is thrown.
F. The code does not compile.

11.Which of the following can replace line 4 to print "avaJ"? (Choose all that apply)

StringBuilder sb= new StringBuilder("Java");
// INSERT CODE HERE
System.out.println(sb);
A. sb.reverse();
B. sb.append("vaJ$").substring(0, 4);
C. sb.append("vaJ$").delete(0, 3).deleteCharAt(sb.length() - 1);
D. sb.append("vaJ$").delete(0, 3).deleteCharAt(sb.length());
E. None of the above.

12) Which are true about StringBuilder class ( choose all that apply ) 

A. StringBuilder is not a final class
B. StringBuilder is a final class
C. StringBuilder extends String
D. StringBuilder object is Immutable 
E. StringBuilder object is Mutable
F. StringBuilder implements CharSequence 
G. StringBuilder is thread safe.
H. StringBuilder is not a thread safe.

Answers

1) Correct Option :  B
First String Builder object is created assigned to reference s1 . toString method is called on s1. Remember, toString is always creats a new object every time. s2, s3 are referring to two different objects, so s2==s3 gives false because == operator compares only references but not object contents . Next, s1 is assigned to s4.  s1, s4 are referencing to the same object. So s1==s4 gives true.
Find details about toString method in Java Doc here 
https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html#toString--

2) Correct Option :  A 
To answer this type of questions you need to remember StringBuilder class methods which comes with practice and revising multiple times. To know full list of methods in StringBuilder class . Follow this link
https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html

3) Correct Options :  A, D
To answer this type of questions you need to remember StringBuilder class constructors and methods which are used to increase StringBuilder object capacity and also make sure you understand the difference between StringBuilder object capacity and size. Follow this link
https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html

4) Correct Option :  B
StringBuilder object is created with content “OCAJP8” and its size is 6 now.
If stringBuilder object size is more than the setLength method argument then 
setLength method will remove extra characters in the object starting from last index position. If stringBuilder object size is less than the setLength method argument then setLength method will add extra spaces in the object starting from last index+1 position.
Here setLength(4) will remove P8 characters and makes object size is 4 . After that setLength(15) will makes object size is 15 by adding 11 extra spaces in the object starting from last index+1 position. Follow this link
https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html#setLength-int-

5) Correct Option : A
StringBuilder object is created with content “OCAJP8”and reference is sb1.
sb1 is assigned to sb2 , so sb1, sb2 are referencing to the same object. The changes made through one reference will reflect in another one. sb1.append("J"); will append J at the end. If you print sb1 or sb2, the result is same. sb1==sb2 gives true because both references pointing to the same object. Follow this link https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html#append-java.lang.String-

6) Correct Option : B
To answer this question you need to aware about + operator working properly.
1) If both operands numeric values, It performs normal addition.
2) If either operand is String , It performs String concatenation.
StringBuilder object is created with content 12Java45. sb.delete(1, 4) will get remove characters from 1 index to 3 index . Now original object content is 1va45. sb.delete(1, 4) will return StringBuilder Object with content 1va45 which is passes as argument to append method which adds it to the end of object content. So the output is 1va451va45. Follow this link https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html

7)  Correct Option : C
StringBuilder object is created with content OCAJP8. sb1. subSequence(2, 4) will return StringBuilder object with two characters and it doesn’t has no any reference , it is garbage collected. sb1.deleteCharAt(3) will remove character at 3rd index i.e J . sb1.reverse( ) will reverse the character sequence in the object. So the output is 8PACO . Follow this link :
https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html#append-java.lang.String-

8)  Correct Option : E
sb.substring(6, 5) will generate StringIndexOutOfBoundsException at runtime, because the arguments to substring method are invalid.
Java doc says substring throws IndexOutOfBoundsException. But practically it throws StringIndexOutOfBoundsException. Follow this link :
https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html#substring-int-int-

9) Correct Option : A
StringBuilder object is created with content 0123456789.  sb.delete(2, 8) will remove characters from index 2 to 7. Now object contains 0189. sb.append("-") will add ‘-’ at the end. Now object contains 0189- .  The insert(2, "+") will add ‘+’ at the 2nd index. Now object contains 01+89-  
Follow this link :Follow this link :
https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html-

10) Correct Option :  F 

StringBuilder b = "rumble" ; will generate compile time error. Because "rumble" is String object and is assigned StringBuilder  type reference. String and StringBuilder  are incompatible data types. 

11) Correct Options : A, C
The question is asking you about to reverse the character sequence.
sb.reverse(); can reverse the character sequence.
sb.append("vaJ$").delete(0, 3).deleteCharAt(sb.length() - 1) can also reverse the character sequence. Here append("vaJ$") will append the string at the end of object content. Now object content is JavavaJ$ .  delete(0, 3) will remove characters from index 0 to 2. Now object content is avaJ$ . deleteCharAt(sb.length() - 1) removes last index character. So the output is avaJ .

12) Correct Options : B,E,F,H
Follow this link :
https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html- I hope this post will help you to prepare for OCAJP 8 . I will be sharing more such posts in future.

Written by Arpit:

If you have read the post and liked it. Please connect with me on Facebook | Twitter | Google Plus

 

Java tutorial for beginners Copyright © 2012