学习面试题Day02
1、Java的引用和C++的指針有什么區(qū)別?
???? 1、類型:引用其值為地址的數(shù)據(jù)元素,Java封裝了的地址,可以轉(zhuǎn)成字符串查看,長(zhǎng)度可以不必關(guān)心。C++指針是一個(gè)裝地址的變量,長(zhǎng)度一般是計(jì)算機(jī)字長(zhǎng),可以認(rèn)為是個(gè)int;
???? 2、所占內(nèi)存:引用聲明時(shí)沒(méi)有實(shí)體,不占空間。C++指針如果聲明后用到才會(huì)賦值,如果用不到不會(huì)分配內(nèi)存;
???? 3、類型轉(zhuǎn)換:引用的類型轉(zhuǎn)換,也可能不成功,運(yùn)行時(shí)拋異常或者編譯就不能通過(guò)。C++指針只是個(gè)內(nèi)存地址,指向哪里,對(duì)程序來(lái)說(shuō)還都是一個(gè)地址,但可能所指的地址不是程序想要的;
???? 4、初始值:引用初始值為Java關(guān)鍵字null.C++指針是int,如不初始化指針,那它的值就不是固定的了,這很危險(xiǎn);
???? 5、控制:引用不可以計(jì)算,所以它只能在自己程序中,可以被控制。C++指針是內(nèi)存地址,也可以計(jì)算,所以他有可能指向了一個(gè)不屬于自己程序使用的內(nèi)存地址,對(duì)于其他程序來(lái)說(shuō)是很危險(xiǎn)的,對(duì)自己程序來(lái)說(shuō)也是不容易被控制的;
???? 6、計(jì)算:引用是不可以計(jì)算的。C++指針是int,它可以計(jì)算,如++或--,所以經(jīng)常用指針來(lái)代替數(shù)組下標(biāo);
???? 7、內(nèi)存泄漏:Java引用不會(huì)產(chǎn)生內(nèi)存泄漏。C++指針是容易產(chǎn)生內(nèi)存泄漏的,所以程序員要小心使用,及時(shí)回收;
???? 8、作為參數(shù):Java的方法參數(shù)只是傳值,引用作為參數(shù)使用時(shí),會(huì)給函數(shù)內(nèi)引用的值COPY,所以在函數(shù)內(nèi)交換兩個(gè)引用參數(shù)是沒(méi)意義的,因?yàn)楹瘮?shù)直叫喚參數(shù)的COPY值,但在函數(shù)內(nèi)改變一個(gè)引用參數(shù)的屬性是有意義的,因?yàn)橐脜?shù)的COPY所引用的對(duì)象是和引用參數(shù)同一個(gè)對(duì)象。C++指針作為參數(shù)給函數(shù)使用,實(shí)際上就是它所指的地址在被函數(shù)操作,所以函數(shù)內(nèi)使用指針參數(shù)的操作都將直接作用到指針?biāo)赶虻牡刂?#xff08;變量,對(duì)象,函數(shù)等)。
2、請(qǐng)簡(jiǎn)述Java的main()方法。
???? main()方法是一個(gè)程序的執(zhí)行入口,它是一個(gè)定義在類中的、公開的、靜態(tài)的、無(wú)返回值的、參數(shù)為一個(gè)字符串?dāng)?shù)組的方法,他的參數(shù)args與執(zhí)行參數(shù)一一對(duì)應(yīng)。
3、Java中equals和==的區(qū)別是什么?
?????equals和==兩者均表示相等的意思,但是它們相等的含義卻有所區(qū)別。
??? ?“==”運(yùn)用在進(jìn)本數(shù)據(jù)類型的時(shí)候,通過(guò)比較它們實(shí)際的值來(lái)判定是否相同;而用于比較引用類型的時(shí)候,則比較兩個(gè)引用的地址是否相等,也就是是否指向同一個(gè)對(duì)象。
??? ?equals方法是java.lang.Object的方法,也就是所有的Java類都會(huì)有的方法。它可以被覆蓋重寫,通過(guò)自定義的方法來(lái)判定兩個(gè)對(duì)象是否相等。對(duì)于字符串java.lang.String類來(lái)說(shuō),它的equals方法用來(lái)比較字符串的字符序列是否完全相等。
4、Java提供了哪幾種循環(huán)結(jié)構(gòu)?它們各自的特點(diǎn)是什么?
???? Java提供了3種循環(huán)結(jié)構(gòu),即for、while和do...while語(yǔ)句。它們各自適用于不同的情況,其中,for循環(huán)適合于能確定循環(huán)次數(shù)的循環(huán)結(jié)構(gòu)。while語(yǔ)句則適合單條件的循環(huán)。而do...whie語(yǔ)句在執(zhí)行某段代碼之后,再循環(huán)的時(shí)候更適合一些。
5、Java中的三元運(yùn)算符是什么?
???? Java中唯一一個(gè)三元運(yùn)算符為“表達(dá)式一?表達(dá)式二:表達(dá)式三”。在問(wèn)號(hào)?之前是一個(gè)布爾表達(dá)式,它只能返回true或false,如果表達(dá)式一返回的是true則執(zhí)行表達(dá)式二,否則執(zhí)行表達(dá)式三,并產(chǎn)生相應(yīng)的返回值。它的主要目的是為了是代碼更簡(jiǎn)潔。
總結(jié)
以上是生活随笔為你收集整理的学习面试题Day02的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: android图片加载库Glide
- 下一篇: dlopen函数的用法