【266天】我愛刷題系列(25)

叨叨兩句

  1. 從明天開始,我要製做表格,結構化思考編程步驟

牛客網——java專項練習005

1

下面哪段程序可以正確的實現了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編碼字節數組

2

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外的其餘類型都不能使用賦值語句,不然會提示沒法轉成布爾值。

3

final、finally和finalize的區別中,下述說法正確的有?(A B)編碼

A final用於聲明屬性,方法和類,分別表示屬性不可變,方法不可覆蓋,類不可繼承。
B finally是異常處理語句結構的一部分,表示老是執行。
C finalize是Object類的一個方法,在垃圾收集器執行的時候會調用被回收對象的此方法,能夠覆蓋此方法提供垃圾收集時的其餘資源的回收,例如關閉文件等。
D 引用變量被final修飾以後,不能再指向其餘對象,它指向的對象的內容也是不可變的線程

深刻理解java虛擬機中說到:
當對象不可達後,仍須要兩次標記纔會被回收,首先垃圾收集器會先執行對象的finalize方法,但不保證會執行完畢(死循環或執行很緩慢的狀況會被強行終止),此爲第一次標記。第二次檢查時,若是對象仍然不可達,纔會執行回收。

4

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。
相關文章
相關標籤/搜索