- 相關(guān)推薦
黑馬程序員Java培訓(xùn)和Android培訓(xùn)-就業(yè)面試題學(xué)習(xí)
經(jīng)典問(wèn)題:
(1)在JAVA中如何跳出當(dāng)前的多重嵌套循環(huán)
法一:在Java中,要想跳出多重循環(huán),可以在外面的循環(huán)語(yǔ)句前定義一個(gè)標(biāo)號(hào),然后在里層循環(huán)體的代碼中使用帶有標(biāo)號(hào)的break 語(yǔ)句,即可跳出外層循環(huán)。例如,
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;
}
}
法二:讓外層的循環(huán)條件表達(dá)式的結(jié)果可以受到里層循環(huán)體代碼的控制,例如,要在二維數(shù)組中查找到某個(gè)數(shù)字。
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只能是一個(gè)整數(shù)表達(dá)式或者枚舉常量(更大字體),整數(shù)表達(dá)式可以是int基本類型或Integer包裝類型(JDK1.5新特性,拆包),由于,byte,short,char都可以隱含轉(zhuǎn)換為int,所以些類型以及這些類型的包裝類型也是可以的作為expr1的類型
(3)使用final關(guān)鍵字修飾一個(gè)變量時(shí),是指引用變量(存儲(chǔ)對(duì)象地址的變量)不能變,即其中存儲(chǔ)的對(duì)象地址值不能變,也就是說(shuō)引用變量不能指向另外一個(gè)對(duì)象,存儲(chǔ)另外一個(gè)對(duì)象的地址,引用變量所指向的對(duì)象中的內(nèi)容還是可以改變的。例如,對(duì)于如下語(yǔ)句:個(gè)
finalStringBuffera=newStringBuffer("immutable");
執(zhí)行如下語(yǔ)句將報(bào)告編譯期錯(cuò)誤:
a=newStringBuffer("");
但是,執(zhí)行如下語(yǔ)句則可以通過(guò)編譯:
a.append("broken!");
有人在定義方法的參數(shù)時(shí),可能想采用如下形式來(lái)阻止方法內(nèi)部修改傳進(jìn)來(lái)的參數(shù)對(duì)象:
public void method(final StringBuffer param)
{
}
實(shí)際上,這是辦不到的,在該方法內(nèi)部仍然可以增加如下代碼來(lái)修改參數(shù)對(duì)象:
param.append("a");
(4)字符串的比較基本上都是使用equals方法
(5)27、String s = new String("xyz");創(chuàng)建了幾個(gè)String Object? 二者之間有什么區(qū)別?
兩個(gè)或一個(gè),”xyz”對(duì)應(yīng)一個(gè)對(duì)象,這個(gè)對(duì)象放在字符串常量緩沖區(qū),常量”xyz”不管出現(xiàn)多少遍,都是緩沖區(qū)中的那一個(gè)。New String每寫(xiě)一遍,就創(chuàng)建一個(gè)新的對(duì)象,它一句那個(gè)常量”xyz”對(duì)象的內(nèi)容來(lái)創(chuàng)建出一個(gè)新String對(duì)象。如果以前就用過(guò)’xyz’,這句代表就不會(huì)創(chuàng)建”xyz”自己了,直接從緩沖區(qū)拿。
關(guān)于字符串的研究:
清晰的學(xué)習(xí)String需具備的知識(shí):
1.內(nèi)存棧與堆
詳細(xì)知識(shí)請(qǐng)看我回答的內(nèi)容:http://bbs.itheima.com/thread-360-1-1.html
2.String的關(guān)鍵知識(shí)點(diǎn)
String是常量,其對(duì)象一旦創(chuàng)建完畢就無(wú)法改變。當(dāng)使用+拼接字符串時(shí),會(huì)生成新的String對(duì)象,而不是向原有的String對(duì)象追加內(nèi)容。
String pool(字符串池)內(nèi)存棧即你上面說(shuō)的緩沖池
String s = “aaa”;(采用字面值方式賦值)
1) 查找String pool中是否存在“aaa”這個(gè)對(duì)象,如果不存在,則在String pool中創(chuàng)建一個(gè)“aaa”對(duì)象,然后將String pool中的這個(gè)“aaa”對(duì)象的地址返回來(lái),賦給引用變量s,這樣s會(huì)指向String pool中的這個(gè)“aaa”字符串對(duì)象
2) 如果存在,則不創(chuàng)建任何對(duì)象,直接將String pool中的這個(gè)“aaa”對(duì)象地址返回來(lái),賦給s引用。
String s = new String(“aaa”); 堆內(nèi)存
1) 首先在String pool中查找有沒(méi)有“aaa”這個(gè)字符串對(duì)象,如果有,則不在String pool中再去創(chuàng)建“aaa”這個(gè)對(duì)象了,直接在堆中(heap)中創(chuàng)建一個(gè)“aaa”字符串對(duì)象,然后將堆中的這個(gè)“aaa”對(duì)象的地址返回來(lái),賦給s引用,導(dǎo)致s指向了堆中創(chuàng)建的這個(gè)“aaa”字符串對(duì)象。
2) 如果沒(méi)有,則首先在String pool中創(chuàng)建一個(gè)“aaa“對(duì)象,然后再在堆中(heap)創(chuàng)建一個(gè)”aaa“對(duì)象,然后將堆中的這個(gè)”aaa“對(duì)象的地址返回來(lái),賦給s引用,導(dǎo)致s指向了堆中所創(chuàng)建的這個(gè)”aaa“對(duì)象。
【黑馬程序員Java培訓(xùn)和Android培訓(xùn)-就業(yè)面試題學(xué)習(xí)】相關(guān)文章:
學(xué)java和android哪個(gè)就業(yè)前景好?07-14
黑馬程序員-7K面試題07-13
求java,PHP,android,iOS,linux面試題07-13
關(guān)于java的學(xué)習(xí)和就業(yè)前景等相關(guān)問(wèn)題07-14
Java程序員就業(yè)前景分析07-14
32道java程序員面試題及答案07-13
誰(shuí)有近幾年華為和中興公司的Java程序員面試題07-11