赊了两串冰糖葫芦才写出来的小结
一、選擇題
1.A 派生出子類 B , B 派生出子類 C ,并且在 java 源代碼有如下聲明:
問(wèn)以下哪個(gè)說(shuō)法是正確的?()
A 只有第一行能通過(guò)編譯
B 第1、2行能通過(guò)編譯,但第3行編譯出錯(cuò)
C 第1、2、3行能通過(guò)編譯,但第2、3行運(yùn)行時(shí)出錯(cuò)
D 第1行,第2行和第3行的聲明都是正確的
正確答案 : D
解析 : ① 繼承的傳遞性 , B繼承于A,C繼承于B,所以A為B和C共同的父類 ; ② 父類引用指向子類對(duì)象 , 子類可以自然地完成向上(到父類的)轉(zhuǎn)型
2.下面代碼將輸出什么內(nèi)容:()
public class SystemUtil{public static boolean isAdmin(String userId){return userId.toLowerCase()=="admin";}public static void main(String[] args){System.out.println(isAdmin("Admin"));} }正確答案 : false
解析 : 在源碼中 toLowerCase 是重新 new String() , "=="是比較身份而非比較值, 所以這兩個(gè)對(duì)象的地址是不相同的.
3.閱讀如下代碼。 請(qǐng)問(wèn),對(duì)語(yǔ)句行 test.hello(). 描述正確的有()
package NowCoder; class Test {public static void hello() {System.out.println("hello");} } public class MyApplication {public static void main(String[] args) {// TODO Auto-generated method stubTest test=null;test.hello();} }正確答案 : 能編譯通過(guò),并正確運(yùn)行
解析 : 靜態(tài)方法不依附于對(duì)象,這里是直接調(diào)用靜態(tài)方法,類的靜態(tài)成員不依賴實(shí)例對(duì)象,靜態(tài)成員在類編譯的時(shí)候就已經(jīng)被創(chuàng)建好了,無(wú)論是是使用類名,還是使用實(shí)例對(duì)象都是可以訪問(wèn)的
4.在使用super和this關(guān)鍵字時(shí),以下描述正確的是()
A 在子類構(gòu)造方法中使用super()顯示調(diào)用父類的構(gòu)造方法,super()必須寫(xiě)在子類構(gòu)造方法的第一行,否則編譯不通過(guò)
B super()和this()不一定要放在構(gòu)造方法內(nèi)第一行
C this()和super()可以同時(shí)出現(xiàn)在一個(gè)構(gòu)造函數(shù)中
D this()和super()可以在static環(huán)境中使用,包括static方法和static語(yǔ)句塊
正確答案 : A
解析 : ① super()調(diào)用父類中的某一個(gè)構(gòu)造函數(shù),this()是調(diào)用本類中另一種形成的構(gòu)造函數(shù) ② this()和super()都必須出現(xiàn)在構(gòu)造器的第一行,所以兩者不可能出現(xiàn)在同一個(gè)構(gòu)造器中 ③ this和super都不能出現(xiàn)了靜態(tài)方法、靜態(tài)塊中
5.如下代碼的 結(jié)果是什么 ?
class Base {Base() {System.out.print("Base");} } public class Alpha extends Base {public static void main( String[] args ) {new Alpha();//調(diào)用父類無(wú)參的構(gòu)造方法new Base();} }正確答案 : BaseBase
解析 : 在執(zhí)行new Alpha()時(shí),因?yàn)锳lpha繼承了Base , 在執(zhí)行Alpha類的構(gòu)造方法前 , 會(huì)先執(zhí)行父類的構(gòu)造方法,再執(zhí)行相應(yīng)的子類的構(gòu)造方法,所以此處會(huì)打印Base,在執(zhí)行new Base()時(shí),會(huì)直接執(zhí)行Base中無(wú)參構(gòu)造器的代碼,再輸出Base
6.如下代碼的輸出結(jié)果是什么?
public class Test {public int aMethod(){static int i = 0;i++;return i;}public static void main(String args[]){Test test = new Test();test.aMethod();int j = test.aMethod();System.out.println(j);} }正確答案 : 編譯失敗
(來(lái)源牛客)大佬解析 : 靜態(tài)變量是先于類的其他而加載的,所以static代碼塊只能是類成員變量,而不能是局部變量,因?yàn)樵趕tatic加載時(shí),方法還沒(méi)有分配空間
7.下列哪一種敘述是正確的()
A abstract修飾符可修飾字段、方法和類
B 抽象方法的body部分必須用一對(duì)大括號(hào){ }包住
C 聲明抽象方法,大括號(hào)可有可無(wú)
D 聲明抽象方法不可寫(xiě)出大括號(hào)
正確答案 : D
解析 : abstract只可修飾方法和類 , 不可以修飾字段(類成員變量);抽象方法是沒(méi)有被實(shí)現(xiàn)的方法,沒(méi)有body部分,也沒(méi)有花括號(hào),聲明后面直接就是分號(hào)
8.下列說(shuō)法正確的有:()
A class中的constructor不可省略
B constructor必須與class同名,但方法不能與class同名
C constructor在一個(gè)對(duì)象被new 時(shí)執(zhí)行
D 一個(gè)class只能定義一個(gè)constructor
正確答案 : C
解析 : . 類中的構(gòu)造方法可以省略不寫(xiě)的 , 構(gòu)造方法必須跟類名相同,普通的類方法是可以和類名同名的,和構(gòu)造方法唯一的區(qū)分就是,構(gòu)造方法沒(méi)有返回值 , 構(gòu)造方法都在new 對(duì)象的時(shí)候調(diào)用的 , 一個(gè)類可以定義多個(gè)構(gòu)造方法的
9.選項(xiàng)中哪一行代碼可以替換 //add code here 而不產(chǎn)生編譯錯(cuò)誤
public abstract class MyClass {public int constInt = 5;//add code herepublic void method() {} }A public abstract void method(int a);
B consInt=constInt+5;
C public int method();
D public abstract void anotherMethod(){}
正確答案 : A
解析 : ① 抽象類可以包含抽象方法 , 用abstract修飾,是抽象方法,不能帶方法體(帶有{}的就是方法體,即使里面是空的) ② 類中定義成員和方法,不能直接進(jìn)行運(yùn)算,可以寫(xiě)在代碼塊{}或者靜態(tài)代碼塊中static{}中 ③ 方法重載需要滿足 , 在同一個(gè)類中 , 方法的名稱相同 , 參數(shù)列表不同(參數(shù)的類型,個(gè)數(shù),順序) , 與訪問(wèn)修飾符和返回值類型無(wú)關(guān)
(未學(xué))10.java 中哪個(gè)關(guān)鍵字可以對(duì)對(duì)象加互斥鎖?
A transient
B synchronized
C serialize
D static
正確答案 : B
解析 :① transient是反序列化修飾符,序列化的時(shí)候,類中的屬性都會(huì)被復(fù)制,但是被transient和static修飾的屬性不會(huì)被復(fù)制 ② synchronized是同步鎖,被synchronized修飾的方法或者代碼塊,同一時(shí)刻只允許被一個(gè)線程訪問(wèn) ③ serialize是序列化 ④ static是靜態(tài)修飾符。可修飾成員變量和方法,內(nèi)部類/接口,不可修飾局部變量和外部類/接口。
二、編程題
1.標(biāo)題:汽水瓶 | 時(shí)間限制:1秒 | 內(nèi)存限制:32768K
有這樣一道智力題:“某商店規(guī)定:三個(gè)空汽水瓶可以換一瓶汽水。小張手上有十個(gè)空汽水瓶,她最多可以換多少瓶汽水喝?”答案是5瓶,方法如下:先用9個(gè)空瓶子換3瓶汽水,喝掉3瓶滿的,喝完以后4個(gè)空瓶子,用3個(gè)再換一瓶,喝掉這瓶滿的,這時(shí)候剩2個(gè)空瓶子。然后你讓老板先借給你一瓶汽水,喝掉這瓶滿的,喝完以后用3個(gè)空瓶子換一瓶滿的還給老板。如果小張手上有n個(gè)空汽水瓶,最多可以換多少瓶汽水喝?
輸入描述:
輸入文件最多包含10組測(cè)試數(shù)據(jù),每個(gè)數(shù)據(jù)占一行,僅包含一個(gè)正整數(shù)n(1<=n<=100),表示小張手上的空汽水瓶數(shù)。n=0表示輸入結(jié)束,你的程序不應(yīng)當(dāng)處理這一行。
輸出描述:
對(duì)于每組測(cè)試數(shù)據(jù),輸出一行,表示最多可以喝的汽水瓶數(shù)。如果一瓶也喝不到,輸出0。
示例1:
輸入
3
10
81
0
輸出
1
5
40
2.標(biāo)題:數(shù)組中的逆序?qū)?| 時(shí)間限制:3秒 | 內(nèi)存限制:32768K | 語(yǔ)言限制:[Python, C++, C#, Java]
有一組數(shù),對(duì)于其中任意兩個(gè)數(shù)組,若前面一個(gè)大于后面一個(gè)數(shù)字,則這兩個(gè)數(shù)字組成一個(gè)逆序?qū)ΑU?qǐng)?jiān)O(shè)計(jì)一個(gè)高效的算法,計(jì)算給定數(shù)組中的逆序?qū)€(gè)數(shù)。給定一個(gè)int數(shù)組A和它的大小n,請(qǐng)返回A中的逆序?qū)€(gè)數(shù)。保證n小于等于5000。
測(cè)試樣例:
[1,2,3,4,5,6,7,0],8
返回:7
最后一個(gè)編程題就是基于選擇排序的理念進(jìn)行改變了一下~
總結(jié)
以上是生活随笔為你收集整理的赊了两串冰糖葫芦才写出来的小结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 六安构建智慧城市节水管理平台
- 下一篇: React--》UI组件库ant-des