- 從明天開始,我要製做表格,結構化思考編程步驟
下面哪段程序可以正確的實現了GBK編碼字節流到UTF-8編碼字節流的轉換:
byte[] src,dst;java
正確答案: B 編程
A dst=String.fromBytes(src,"GBK").getBytes("UTF-8")
B dst=new String(src,"GBK").getBytes("UTF-8")
C dst=new String("GBK",src).getBytes()
D dst=String.encode(String.decode(src,"GBK")),"UTF-8" )數組
操做步驟就是先解碼再編碼 用new String(src,"GBK")解碼獲得字符串 用getBytes("UTF-8")獲得UTF8編碼字節數組
What is the result of compiling and executing the following fragment of code:(C)ui
Boolean flag = false; if (flag = true) { System.out.println(「true」); } else { System.out.println(「false」); }
A The code fails to compile at the 「if」 statement.
B An exception is thrown at run-time at the 「if」 statement.
C The text「true」 is displayed.
D The text「false」is displayed.
E Nothing is displayed.this
Boolean修飾的變量爲包裝類型,初始化值爲false,進行賦值時會先調用Boolean.valueOf(boolean b)方法自動裝箱,而後在if條件表達式中自動拆箱,所以賦值後flag值爲true,輸出文本true。 若是使用==比較,則輸出文本false。if的語句比較,除boolean外的其餘類型都不能使用賦值語句,不然會提示沒法轉成布爾值。
final、finally和finalize的區別中,下述說法正確的有?(A B)編碼
A final用於聲明屬性,方法和類,分別表示屬性不可變,方法不可覆蓋,類不可繼承。
B finally是異常處理語句結構的一部分,表示老是執行。
C finalize是Object類的一個方法,在垃圾收集器執行的時候會調用被回收對象的此方法,能夠覆蓋此方法提供垃圾收集時的其餘資源的回收,例如關閉文件等。
D 引用變量被final修飾以後,不能再指向其餘對象,它指向的對象的內容也是不可變的線程
深刻理解java虛擬機中說到: 當對象不可達後,仍須要兩次標記纔會被回收,首先垃圾收集器會先執行對象的finalize方法,但不保證會執行完畢(死循環或執行很緩慢的狀況會被強行終止),此爲第一次標記。第二次檢查時,若是對象仍然不可達,纔會執行回收。
public class NameList { private List names = new ArrayList(); public synchronized void add(String name) { names.add(name); } public synchronized void printAll() { for (int i = 0; i < names.size(); i++) { System.out.print(names.get(i) + 」」); } } public static void main(String[]args) { final NameList sl = new NameList(); for (int i = 0; i < 2; i++) { new Thread() { public void run() { sl.add(「A」); sl.add(「B」); sl.add(「C」); sl.printAll(); } } .start(); } } } Which two statements are true if this class is compiled and run? 正確答案: E G A An exception may be thrown at runtime. B The code may run with no output, without exiting. C The code may run with no output, exiting normally(正常地). D The code may rum with output 「A B A B C C 「, then exit. E The code may rum with output 「A B C A B C A B C 「, then exit. F The code may ruin with output 「A A A B C A B C C 「, then exit. G The code may ruin with output 「A B C A A B C A B C 「, then exit.
在每一個線程中都是順序執行的,因此sl.printAll();必須在前三句執行以後執行,也就是輸出的內容必有(連續或非連續的)ABC。 而線程之間是穿插執行的,因此一個線程執行 sl.printAll();以前可能有另外一個線程執行了前三句的前幾句。 E答案至關於線程1順序執行完而後線程2順序執行完。 G答案則是線程1執行完前三句add以後線程2插一腳執行了一句add而後線程1再執行 sl.printAll();輸出ABCA。接着線程2順序執行完輸出ABCABC 輸出加起來即爲ABCAABCABC。
第一次println的字符個數確定大於等於3,小於等於6;第二次println的字符個數確定等於6;因此輸出的字符中,後6位確定是第二次輸出的,前面剩下的就是第一次輸出的。並且第一次的輸出結果確定是第二次輸出結果的前綴。因此選E、G。