不知道 自己理解 有哪些 不到之處,還望高手們, 不吝指教,一點點貼出我的分析 過程,錯誤之處還請批評指教。
13.下面關於字符串的描述,正確的是(C)
A.通過Strinf s1=new String(“abc”)和String s2=”abc”,額s1==s2爲true;
B.”abc”+”def”則會創建三個字符串對象,第三個是”abcdefg”,也就是說,在Java中對字符串
的一切操作,都會產生一個新的字符串對象。
C.StringBuffer是線程安全的,它比String快。
D.StringBuider是線程安全的,它比String快。
首先,我們排除了A,根據Java的堆棧賦值原理,我們知道。s1在堆中,s2在棧中,是false;
字符串拼接我們經常會使用StringBuider(在單線程裏面),這樣做的原因就是減少了”abc”+“def”浪費空間的緣故,還浪費時間(這一點是在資料上查的,我曾用拼接前後的時間差對比,可是ms級別上得不到結果啊!)。
在《java核心技術基礎卷I的第51頁》我查到,StringBuider是java1.5以後引入的,它的前身就是StringBuffer,StringBuffer的效率略低,但允許採用多線程方式執行添加或刪除字符的操作。而在單線程中,應該使用StringBuider。所以我覺得答案應該是C,不知道對不對。
14.以 下操作中,可 能的解決 java內存泄露問題的手段有; 【 多選】 ( )
A.在 程序中調用 system.gcr);
B.關掉不再使用的網絡數據庫連接 ;
C.在程序中調用finalize();
D.清理集合類中的無用對象;
E.在 程序中調用Runtime.getRuntime().runFinalization().
不知道爲啥,這種題對我很抓狂啊....求大俠指點。
15.假設如下代碼中,若t1線程在t2線程啓動之前就已經完成啓動,代碼輸出是()。
public static void main(String[] args) throws Exception {
final Object obj = new Object();
Thread t1 = new Thread() {
public void run() {
synchronized (obj) {
try {
obj.wait();
System.out.println("Thread 1 wake up.");
} catch (InterruptedException e) {
}
}
}
};
t1.start();
Thread.sleep(1000);
Thread t2 = new Thread() {
public void run() {
synchronized (obj) {
obj.notifyAll();
System.out.println("Thread 2 sent notify.");
}
}
};
t2.start();
}
A.
Thread 1 wake up.
Thread 2 sent notify.
B.
Thread 2 sent notify.
Thread 1 wake up.
C.A、B皆有可能
D.程序無法輸出,卡死。
這是很基礎的一道題,看過java併發編程的一些資料的朋友應該都很清楚這個wait、notify/notifyAll的工作機制,wait要等到有對象發出nitify(ALL)通知它時纔會執行,選B。
16.Math.floor(-8.5)=(B)
A.(float)-8.5 B.(long)-9 C.(long)-8 D.不能確定,與軟硬件相關。
這個不多說了,我的android論壇的java板塊有BOSS的一篇文章,http://www.eyeandroid.com/thread-10639-1-1.html,說的很詳細,選B。
17.synchronize關鍵字可以作用在下列哪些選項(多選)(BCD)
A.int值 B.字符串常量 C一個Integer對象 D.ExampIe.Class E.數組
我們知道,synchronize的主要作用是多線程中,不同線程對一個對象的加鎖訪問機制,就是爲了併發訪問的安全性。而synchronize的用法一般是這樣的吧(不知道我說的全不全):
1.放在方法作用域和返回值類型之間Synchronize,同一時刻只允許一個線程訪問此方法;
Public Synchronize int add();
2.Synchronize(anObject),這樣同一時刻,anObject就只允許一個線程訪問了,當然,這裏面必須是對象,基本類型是不行的。 我特意試了下數組,是不行的,這爲什麼,其實給我的錯覺 E是可以的, 應該是BCD
Prototype模式和Factory Method模式之間的區別可以理解爲 【多選】 ( BC)
A.Factory Method模 式是利用現有的對象進行克隆。
B.Prototype模 式是利用現有的對象進行克隆。
C.Factory Method模 式是重新創建一個對象。
D.Prototype模 式是重新創建一個對象。
Prototype模式通過複製原型(Prototype)而獲得新對象創建的功能,這裏Prototype本身就是“對象工廠”(因爲能夠生產對象),實際上Prototype模式和Builder模式、AbstractFactory模式都是通過一個類(對象實例)來專門負責對象的創建工作(工廠對象),它們之間的區別是:Builder模式重在複雜對象的一步步創建(並不直接返回對象),AbstractFactory模式重在產生多個相互依賴類的對象,而Prototype模式重在從自身複製自己創建新類。