Java面試題之七 (轉)

三十4、編碼轉換,怎樣實現將GB2312 編碼的字符串轉換爲ISO-8859-1 編碼的字符串。 java

String a=new String("中".getBytes("gb2312"),"iso-8859-1"); 程序員

String a=new String("中".getBytes("iso-8859-1")); 安全

具體示例參考:http://blog.csdn.net/u010142437/article/details/11808525 this

三十5、垃圾回收器的基本原理是什麼?垃圾回收器能夠立刻回收內存嗎?有什麼辦法主動通知虛擬機進行垃圾回收? 編碼

對於GC來講,當程序員建立對象時,GC就開始監控這個對象的地址、大小以及使用狀況。一般,GC採用有向圖的方式記錄和管理堆(heap)中的全部對象。經過這種方式肯定哪些對象是"可達的",哪些對象是"不可達的"。當GC肯定一些對象爲"不可達"時,GC就有責任回收這些內存空間。能夠。程序員能夠手動執行System.gc(),通知GC運行,可是Java語言規範並不保證GC必定會執行。 spa

三十6、是否能夠從一個static方法內部發出對非static方法的調用? .net

準確回答是不能直接調用。 線程

由於非static方法是要與對象關聯在一塊兒的,必須建立一個對象後,才能夠在該對象上進行方法調用,而static方法調用時不須要建立對象,能夠直接調用。也就是說,當一個static方法被調用時,可能尚未建立任何實例對象。好比你在main方法中直接去調用一個非static的方法,是不能經過編譯的。可是你若是在靜態方法中,先去實例化一個對象,而後在調用其方法是能夠的。 code

三十7、寫clone()方法時,一般都有一行代碼,是什麼? 對象

super.clone(); Clone 有缺省行爲,他負責產生正確大小的空間,並逐位複製。(首先要把父類中的成員複製到位,而後纔是複製本身的成員)。

三十8、Collection和Collections的區別

1.Collection是集合的根接口,其下有set 及list,關於set和list前面已詳細介紹過。

2.Collections是針對集合類的一個幫助類,他提供一系列靜態方法實現對各類集合的搜索、排序、線程安全化等操做。

三十9、Set 裏的元素是不能重複的,那麼用什麼方法來區分重複與否呢? 是用==仍是equals()? 它們有何區別?用contains來區分是否有重複的對象。仍是都不用。

Set集合元素不可重複,比較元素是否相等,要重寫equals和hashcode 。

在比較時先調用hashCode方法,若是不相同,證實不相等;若是相同,再調用equals方法,若是equals方法相同,證實相等;不相同,證實不相等。

也就是說只有調用hashCode和equals都相等的狀況下,才相等。其他均不相等。

至於equals()和==區別前面已經詳細介紹過。

Contains用來判斷集合中是否包含某個元素。

四10、用java 代碼編寫棧

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
packagecom.lovo;
 
publicclassStack {
    int[] data;
    intmaxSize;
    inttop;
 
    publicStack(intmaxSize) {
        this.maxSize = maxSize;
        data =newint[maxSize];
        top = -1;
    }
 
    /**
     * 依次加入數據
     *
     * @param data
     *            要加入的數據
     * @return 添加是否成功
     */
    publicbooleanpush(intdata) {
        if(top +1== maxSize) {
            System.out.println("棧已滿!");
            returnfalse;
        }
        this.data[++top] = data;
        returntrue;
    }
 
    /**
     * 從棧中取出數據
     *
     * @return 取出的數據
     */
    publicintpop()throwsException {
        if(top == -1) {
            thrownewException("棧已空!");
        }
        returnthis.data[top--];
    }
 
    publicstaticvoidmain(String[] args)throwsException {
        Stack stack =newStack(1000);
        stack.push(1);
        stack.push(2);
        stack.push(3);
        stack.push(4);
        stack.push(5);
        while(stack.top >=0) {
            System.out.println(stack.pop());
        }
    }
}
相關文章
相關標籤/搜索