SCJP 1.6版考題 041
出自 陳富國維基館
1. public class KungFu{ 2. public static void main(String[] args){ 3. Integer x = 400; 4. Integer y = x; 5. x++; 6. StringBuilder sb1 = new StringBuilder("123"); 7. StringBuilder sb2 = sb1; 8. sb1.append("5"); 9. System.out.println((x == y) + " " + (sb1 == sb2)); 10. } 11.} What is the result? A. true true B. false true C. true false D. false false E. Compilation fails. F. An exception is thrown at runtime.
解答
Ans: B
解說:
Integer x = 400; -> (auto boxing) Integer x = new Integer(400); Integer y = x; -> (auto boxing) Integer y = new Integer (x); //Integer的建構子要代入的是整數值,因此,x被unboxing成整數 -> Integer (400) x++ -> x.add(1); x與y應看成二個整數變數,不是物件參考 String是不可變的字串物件 Ex. String s = “ABC”; s.concat(“D”); 此時會產生一個新字串物件”ABCD”,只是,s還是指向舊的字串物件”ABC” StringBuilder和StringBuffer物件其內含的字串是可變的 Ex. StringBuilder s = new StringBuilder("ABC"); s.append("D"); s所指向的字串物件內容由”ABC”變為”ABCD”
|