更新時(shí)間:2020-04-27 14:00:39 來源:動力節(jié)點(diǎn) 瀏覽2625次
1、如果main方法被聲明為private會怎樣?
能正常編譯,但運(yùn)行的時(shí)候會提示”main方法不是public的”。
2、說說&和&&的區(qū)別。
&和&&都可以用作邏輯與的運(yùn)算符,表示邏輯與(and),當(dāng)運(yùn)算符兩邊的表達(dá)式的結(jié)果都為true時(shí),整個(gè)運(yùn)算結(jié)果才為true,否則,只要有一方為false,則結(jié)果為false。
&&還具有短路的功能,即如果第一個(gè)表達(dá)式為false,則不再計(jì)算第二個(gè)表達(dá)式,例如,對于if(str!=null&&!str.equals(“”))表達(dá)式,當(dāng)str為null時(shí),后面的表達(dá)式不會執(zhí)行,所以不會出現(xiàn)NullPointerException如果將&&改為&,則會拋出NullPointerException異常。If(x==33&++y>0)y會增長,If(x==33&&++y>0)不會增長
&還可以用作位運(yùn)算符,當(dāng)&操作符兩邊的表達(dá)式不是boolean類型時(shí),&表示按位與操作,我們通常使用0x0f來與一個(gè)整數(shù)進(jìn)行&運(yùn)算,來獲取該整數(shù)的最低4個(gè)bit位,例如,0x31&0x0f的結(jié)果為0x01。
備注:這道題先說兩者的共同點(diǎn),再說出&&和&的特殊之處,并列舉一些經(jīng)典的例子來表明自己理解透徹深入、實(shí)際經(jīng)驗(yàn)豐富。
3、如果要重寫一個(gè)對象的equals方法,還要考慮什么?
hashCode。
4、Java的”一次編寫,處處運(yùn)行”是如何實(shí)現(xiàn)的?
Java程序會被編譯成字節(jié)碼組成的class文件,這些字節(jié)碼可以運(yùn)行在任何平臺,因此Java是平臺獨(dú)立的。
5、說明一下publicstaticvoidmain(Stringargs[])這段聲明里每個(gè)關(guān)鍵字的作用
public:main方法是Java程序運(yùn)行時(shí)調(diào)用的第一個(gè)方法,因此它必須對Java環(huán)境可見。所以可見性設(shè)置為pulic.
static:Java平臺調(diào)用這個(gè)方法時(shí)不會創(chuàng)建這個(gè)類的一個(gè)實(shí)例,因此這個(gè)方法必須聲明為static。
void:main方法沒有返回值。
String是命令行傳進(jìn)參數(shù)的類型,args是指命令行傳進(jìn)的字符串?dāng)?shù)組。
6、"=="和equals方法究竟有什么區(qū)別?
(單獨(dú)把一個(gè)東西說清楚,然后再說清楚另一個(gè),這樣,它們的區(qū)別自然就出來了,混在一起說,則很難說清楚)
==操作符專門用來比較兩個(gè)變量的值是否相等,也就是用于比較變量所對應(yīng)的內(nèi)存中所存儲的數(shù)值是否相同,要比較兩個(gè)基本類型的數(shù)據(jù)或兩個(gè)引用變量是否相等,只能用==操作符。
如果一個(gè)變量指向的數(shù)據(jù)是對象類型的,那么,這時(shí)候涉及了兩塊內(nèi)存,對象本身占用一塊內(nèi)存(堆內(nèi)存),變量也占用一塊內(nèi)存,例如Objetobj=newObject();變量obj是一個(gè)內(nèi)存,newObject()是另一個(gè)內(nèi)存,此時(shí),變量obj所對應(yīng)的內(nèi)存中存儲的數(shù)值就是對象占用的那塊內(nèi)存的首地址。對于指向?qū)ο箢愋偷淖兞浚绻容^兩個(gè)變量是否指向同一個(gè)對象,即要看這兩個(gè)變量所對應(yīng)的內(nèi)存中的數(shù)值是否相等,這時(shí)候就需要用==操作符進(jìn)行比較。
equals方法是用于比較兩個(gè)獨(dú)立對象的內(nèi)容是否相同,就好比去比較兩個(gè)人的長相是否相同,它比較的兩個(gè)對象是獨(dú)立的。例如,對于下面的代碼:
Stringa=newString("foo");
Stringb=newString("foo");
兩條new語句創(chuàng)建了兩個(gè)對象,然后用a/b這兩個(gè)變量分別指向了其中一個(gè)對象,這是兩個(gè)不同的對象,它們的首地址是不同的,即a和b中存儲的數(shù)值是不相同的,所以,表達(dá)式a==b將返回false,而這兩個(gè)對象中的內(nèi)容是相同的,所以,表達(dá)式a.equals(b)將返回true。
在實(shí)際開發(fā)中,我們經(jīng)常要比較傳遞進(jìn)行來的字符串內(nèi)容是否等,例如,Stringinput=…;input.equals(“quit”),許多人稍不注意就使用==進(jìn)行比較了,這是錯(cuò)誤的,隨便從網(wǎng)上找?guī)讉€(gè)項(xiàng)目實(shí)戰(zhàn)的教學(xué)視頻看看,里面就有大量這樣的錯(cuò)誤。記住,字符串的比較基本上都是使用equals方法。
如果一個(gè)類有自己定義equals方法,那么它將繼承Object類的equals方法,Object類的equals方法的實(shí)現(xiàn)代碼如下:
booleanequals(Objecto){
returnthis==o;
}
這說明,如果一個(gè)類沒有自己定義equals方法,它默認(rèn)的equals方法(從Object類繼承的)就是使用==操作符,也是在比較兩個(gè)變量指向的對象是否是同一對象,這時(shí)候使用equals和使用==會得到同樣的結(jié)果,如果比較的是兩個(gè)獨(dú)立的對象則總返回false。如果你編寫的類希望能夠比較該類創(chuàng)建的兩個(gè)實(shí)例對象的內(nèi)容是否相同,那么你必須覆蓋equals方法,由你自己寫代碼來決定在什么情況即可認(rèn)為兩個(gè)對象的內(nèi)容是相同的。
以上就是動力節(jié)點(diǎn)java培訓(xùn)機(jī)構(gòu)的小編針對“Java基礎(chǔ)學(xué)習(xí):java編程基礎(chǔ)練習(xí)題”的內(nèi)容進(jìn)行的回答,希望對大家有所幫助,如有疑問,請?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。
相關(guān)閱讀
初級 202925
初級 203221
初級 202629
初級 203743