Page: 3
10. Java.lang Package
Question: 11
Given:
11. public String makinStrings() {
12. String s = “Fred”;
13. s = s + “47”;
14. s = s.substring(2, 5);
15. s = s.toUpperCase();
16. return s.toString();
17. }
How many String objects will be created when this method is invoked?
A. 1 B. 2
C. 3 D. 4
E. 5 F. 6
Answer: E
12. Which statements are true about comparing two instances of the same class, given that the equals() and hashCode() methods have been properly overridden? (Choose all that apply.)
A. If the equals() method returns true, the hashCode() comparison == might return false.
B. If the equals() method returns false, the hashCode() comparison == might return true.
C. If the hashCode() comparison == returns true, the equals() method must return true.
D. If the hashCode() comparison == returns true, the equals() method might return true.
E. If the hashCode() comparison != returns true, the equals() method might return true.
Answer:
- > B and D. B is true because often two dissimilar objects can return the same hashcode value.
D is true because if the hashCode() comparison returns ==, the two objects might
or might not be equal.
->A, C, and E are incorrect. C is incorrect because the hashCode() method is very flexible in its return values, and often two dissimilar objects can return the same hash code value. A and E are a negation of the hashCode() and equals() contract.
13. Given:
1. class Convert {
2. public static void main(String[] args) {
3. Long xL = new Long(456L);
4. long x1 = Long.valueOf("123");
5. Long x2 = Long.valueOf("123");
6. long x3 = xL.longValue();
7. Long x4 = xL.longValue();
8. Long x5 = Long.parseLong("456");
9. long x6 = Long.parseLong("123");
10. }
11. }
Which will compile using Java 5, but will NOT compile using Java 1.4? (Choose all that apply.)
A. Line 4.
B. Line 5.
C. Line 6.
D. Line 7.
E. Line 8.
F. Line 9.
Answer:
-> A, D, and E are correct. Because of the methods’ return types, these method calls required
autoboxing to compile.
-> B, C, and F are incorrect based on the above. (Objective 3.1)
14. Given:
class TKO {
public static void main(String[] args) {
String s = "-";
Integer x = 343;
long L343 = 343L;
if(x.equals(L343)) s += ".e1 ";
if(x.equals(343)) s += ".e2 ";
Short s1 = (short)((new Short((short)343)) / (new Short((short)49)));
if(s1 == 7) s += "=s ";
if(s1 < new Integer(7+1)) s += "fly ";
System.out.println(s);
} }
Which of the following will be included in the output String s? (Choose all that apply.)
A. .e1 B. .e2
C. =s D. fly
E. None of the above. F. Compilation fails.
G. An exception is thrown at runtime.
Answer:
- > B , C, and D are correct. Remember, that the equals() method for the integer wrappers
will only return true if the two primitive types and the two values are equal. With C, it's okay to unbox and use ==. For D, it's okay to create a wrapper object with an expression, and unbox it for comparison with a primitive.
-> A, E, F, and G are incorrect based on the above. (Remember that A is using the equals() method to try to compare two different types.) (Objective 3.1)
15. Which about the three java.lang classes String, StringBuilder, and StringBuffer are true? (Choose all that apply.)
A. All three classes have a length() method.
B. Objects of type StringBuffer are thread-safe.
C. All three classes have overloaded append() methods.
D. The "+" is an overloaded operator for all three classes.
E. According to the API, StringBuffer will be faster than StringBuilder under most
implementations.
F. The value of an instance of any of these three types can be modified through various
methods in the API.
Answer:
-> A and B are correct.
-> C is incorrect because String does not have an "append" method. D is incorrect because only String objects can be operated on using the overloaded "+" operator. E is backwards, StringBuilder is typically faster because it's not thread-safe. F is incorrect because String objects are immutable. A String reference can be altered to refer to a different String object, but the objects themselves are immutable. (Objective 3.1)
16. Given:
class Polish {
public static void main(String[] args) {
int x = 4;
StringBuffer sb = new StringBuffer("..fedcba");
sb.delete(3,6);
sb.insert(3, "az");
if(sb.length() > 6) x = sb.indexOf("b");
sb.delete((x-3), (x-2));
System.out.println(sb);
}
}
What is the result?
A. .faza
B. .fzba
C. ..azba
D. .fazba
E. ..fezba
F. Compilation fails.
G. An exception is thrown at runtime.
Answer:
-> C is correct. Remember that StringBuffer methods use zero-based indexes, and that
ending indexes are typically exclusive.
-> A, B, D, E, F, and G are incorrect based on the above. (Objective 3.1)
Page: 3
1
2
3