1. 首頁
  2. 職場

黑馬程式設計師Java培訓和Android培訓-就業面試題學習

黑馬程式設計師Java培訓和Android培訓-就業面試題學習

經典問題:

(1)在JAVA中如何跳出當前的多重巢狀迴圈

法一:在Java中,要想跳出多重迴圈,可以在外面的迴圈語句前定義一個標號,然後在裡層迴圈體的程式碼中使用帶有標號的break 語句,即可跳出外層迴圈。例如,

ok:

for(int i=0;i<10;i++)< p="">

{

for(int j=0;j<10;j++)< p="">

{

System.out.println(“i=” + i + “,j=” + j);

if(j == 5) break ok;

}

}

法二:讓外層的迴圈條件表示式的結果可以受到裡層迴圈體程式碼的控制,例如,要在二維陣列中查詢到某個數字。

int arr[][] = {{1,2,3},{4,5,6,7},{9}};

boolean found = false;

for(int i=0;i<arr.length p="" !found;i++)<="">

{

for(int j=0;j

{

System.out.println(“i=” + i + “,j=” + j);

if(arr[i][j] == 5)

{

found = true;

break;

}

}

}

(2)在switch(expr1)中,expr1只能是一個整數表示式或者列舉常量(更大字型),整數表示式可以是int基本型別或Integer包裝型別(JDK1.5新特性,拆包),由於,byte,short,char都可以隱含轉換為int,所以些型別以及這些型別的包裝型別也是可以的作為expr1的型別

(3)使用final關鍵字修飾一個變數時,是指引用變數(儲存物件地址的變數)不能變,即其中儲存的物件地址值不能變,也就是說引用變數不能指向另外一個物件,儲存另外一個物件的地址,引用變數所指向的物件中的內容還是可以改變的。例如,對於如下語句:個

finalStringBuffera=newStringBuffer("immutable");

執行如下語句將報告編譯期錯誤:

a=newStringBuffer("");

但是,執行如下語句則可以透過編譯:

a.append("broken!");

有人在定義方法的引數時,可能想採用如下形式來阻止方法內部修改傳進來的引數物件:

public void method(final StringBuffer param)

{

}

實際上,這是辦不到的,在該方法內部仍然可以增加如下程式碼來修改引數物件:

param.append("a");

(4)字串的比較基本上都是使用equals方法

(5)27、String s = new String("xyz");建立了幾個String Object? 二者之間有什麼區別?

兩個或一個,”xyz”對應一個物件,這個物件放在字串常量緩衝區,常量”xyz”不管出現多少遍,都是緩衝區中的那一個。New String每寫一遍,就建立一個新的物件,它一句那個常量”xyz”物件的內容來創建出一個新String物件。如果以前就用過’xyz’,這句代表就不會建立”xyz”自己了,直接從緩衝區拿。

關於字串的研究:

清晰的學習String需具備的知識:

1.記憶體棧與堆

詳細知識請看我回答的內容:http://bbs.itheima.com/thread-360-1-1.html

2.String的.關鍵知識點

String是常量,其物件一旦建立完畢就無法改變。當使用+拼接字串時,會生成新的String物件,而不是向原有的String物件追加內容。

String pool(字串池)記憶體棧即你上面說的緩衝池

String s = “aaa”;(採用字面值方式賦值)

1) 查詢String pool中是否存在“aaa”這個物件,如果不存在,則在String pool中建立一個“aaa”物件,然後將String pool中的這個“aaa”物件的地址返回來,賦給引用變數s,這樣s會指向String pool中的這個“aaa”字串物件

2) 如果存在,則不建立任何物件,直接將String pool中的這個“aaa”物件地址返回來,賦給s引用。

String s = new String(“aaa”); 堆記憶體

1) 首先在String pool中查詢有沒有“aaa”這個字串物件,如果有,則不在String pool中再去建立“aaa”這個物件了,直接在堆中(heap)中建立一個“aaa”字串物件,然後將堆中的這個“aaa”物件的地址返回來,賦給s引用,導致s指向了堆中建立的這個“aaa”字串物件。

2) 如果沒有,則首先在String pool中建立一個“aaa“物件,然後再在堆中(heap)建立一個”aaa“物件,然後將堆中的這個”aaa“物件的地址返回來,賦給s引用,導致s指向了堆中所建立的這個”aaa“物件。