1. 程式人生 > >牛客網第11天

牛客網第11天

1.下面所示的java程式碼,執行時,會產生()型別的異常
int Arry_a[] = new int[10];
System.out.println(Arry_a[10]);
A.ArithmeticException
B.NullPointException
C.IOException
D.ArrayIndexOutOfBoundsException
解析:int型別陣列,預設值為0
因此,在長度允許範圍類,即使沒有賦值,打印出來也為0
而這裡陣列長度越界了
2.下列哪個修飾符可以使在一個類中定義的成員變數只能被同一包中的類訪問?
A.private
B.無修飾符
C.public
D.protected
正確答案: B 你的答案: C (錯誤)
解析:
在這裡插入圖片描述


public
可以被任何類訪問
protected
可以被同一包中的所有類訪問
可以被所有子類訪問
private
只能夠被 當前類的方法訪問
預設無訪問修飾符
可以被同一包中的所有類訪問
3.下列語句正確的是:
A.形式引數可被欄位修飾符修飾
B.形式引數不可以是物件
C.形式引數為方法被呼叫時真正被傳遞的引數
D.形式引數可被視為local variable
正確答案: D 你的答案: C (錯誤)
解析: 在Java中修飾符總共有一下幾種:
1.訪問控制修飾符
分別有:public private protected,預設
2.其它修飾符
分別有:abstract,final,static,native,synchronized,transient,volatile等
對於形式引數只能用final修飾符,其它任何修飾符都會引起編譯器錯誤 。但是用這個修飾符也有一定的限制,就是在方法中不能對引數做任何修改。
不過一般情況下,一個方法的形參不用final修飾。只有在特殊情況下,那就是:方法內部類。
一個方法內的內部類如果使用了這個方法的引數或者區域性變數的話,這個引數或區域性變數應該是final。
通過以上分析,你應該知道答案了吧。
因為欄位修飾符包括很多(上面寫的),但是方法修飾符只能用final這一個修飾符。
所以說這句話不對。
引數可以是值也可以是物件,且實參才是真正被傳遞的引數,形參就像區域性變數
4.以下不是修飾符final的作用的是( )。
A.修飾常量
B.修飾不可被繼承的類
C.修飾不可變類
D.修飾不可覆蓋的方法
正確答案: C 你的答案: D (錯誤)
解析:
final的作用:
1. 修飾變數,變數的引用地址不可變,但是地址中的內容可以變。
2. 修飾方法,方法不可被重寫,但是還是可以過載
3. 修飾類,類不可繼承。
不可變類,說的是一個類一旦被例項化,就不可改變自身的狀態。常見的比如String和基本資料型別的包裝類,對於這種不可變類,一旦在進行引用傳遞的時候,形參一開始就和實際引數指向的不是一個地址,所以在方法中對形參的改變,並不會影響實際引數。
5.下列程式碼的輸出結果是_____
boolean b=true?false:true==true?false:true;
System.out.println(b);
A.true
B.false
C.null
D.空字串
正確答案: B 你的答案: A (錯誤)
解析: == 優先順序高於 三目運算子,先判斷 true == true,此時返回為 true,
這時表示式為 boolean b = true?false:true?false:true
此時三目運算子從右向左執行,true?false:true,返回false
這時表示式為 boolean b = true?false:false;
結果為:boolean b = false ;
6.關於AWT和Swing說法正確的是?
A.Swing是AWT的子類
B.AWT在不同作業系統中顯示相同的風格
C.AWT不支援事件型別,Swing支援事件模型
D.Swing在不同的作業系統中顯示相同的風格
正確答案: D 你的答案: C (錯誤)
解析:
AWT和Swing都是java中的包。
AWT(Abstract Window Toolkit):抽象視窗工具包,早期編寫圖形介面應用程式的包。
Swing :為解決 AWT 存在的問題而新開發的圖形介面包。Swing是對AWT的改良和擴充套件。
AWT和Swing的實現原理不同:
AWT的圖形函式與作業系統提供的圖形函式有著一一對應的關係。也就是說,當我們利用 AWT構件圖形使用者介面的時候,實際上是在利用作業系統的圖形庫。
不同的作業系統其圖形庫的功能可能不一樣,在一個平臺上存在的功能在另外一個平臺上則可能不存在。為了實現Java語言所宣稱的"一次編譯,到處執行"的概念,AWT不得不通過犧牲功能來實現平臺無關性。因此,AWT 的圖形功能是各作業系統圖形功能的“交集”。
因為AWT是依靠本地方法來實現功能的,所以AWT控制元件稱為“重量級控制元件”。
而Swing ,不僅提供了AWT 的所有功能,還用純粹的Java程式碼對AWT的功能進行了大幅度的擴充。
例如:並不是所有的作業系統都提供了對樹形控制元件的支援, Swing則利用了AWT中所提供的基本作圖方法模擬了一個樹形控制元件。
由於 Swing是用純粹的Java程式碼來實現的,因此Swing控制元件在各平臺通用。
因為Swing不使用本地方法,故Swing控制元件稱為“輕量級控制元件”。
AWT和Swing之間的區別:
1)AWT 是基於本地方法的C/C++程式,其執行速度比較快;Swing是基於AWT的Java程式,其執行速度比較慢。
2)AWT的控制元件在不同的平臺可能表現不同,而Swing在所有平臺表現一致。
在實際應用中,應該使用AWT還是Swing取決於應用程式所部署的平臺型別。例如:
1)對於一個嵌入式應用,目標平臺的硬體資源往往非常有限,而應用程式的執行速度又是專案中至關重要的因素。在這種矛盾的情況下,簡單而高效的AWT當然成了嵌入式Java的第一選擇。
2)在普通的基於PC或者是工作站的標準Java應用中,硬體資源對應用程式所造成的限制往往不是專案中的關鍵因素。所以在標準版的Java中則提倡使用Swing, 也就是通過犧牲速度來實現應用程式的功能。
7.JMX是在哪一個JDK版本開始支援?()
A.1.3
B.1.5
C.1.6
D.1.7
正確答案: A 你的答案: C (錯誤)
解析:記住即可
8.( )面向物件程式設計語言不同於其他語言的主要特點。
A.繼承性
B.訊息傳遞
C.多型性
D.封裝性
正確答案: A C D 你的答案: A C D (正確)
解析:面向物件的三個基本特徵:封裝、繼承、多型
9.在JAVA中,下列哪些是Object類的方法()
A.synchronized()
B.wait()
C.notify()
D.notifyAll()
E.sleep()
正確答案: B C D 你的答案: B C E (錯誤)
解析:A synchronized Java語言的關鍵字,當它用來修飾一個方法或者一個程式碼塊的時候,能夠保證在同一時刻最多隻有一個執行緒執行該段程式碼。
B C D 都是Object類中的方法
notify(): 是喚醒一個正在等待該物件的執行緒。
notifyAll(): 喚醒所有正在等待該物件的執行緒。
E sleep 是Thread類中的方法
wait 和 sleep的區別:
wait指執行緒處於進入等待狀態,形象地說明為“等待使用CPU”,此時執行緒不佔用任何資源,不增加時間限制。
sleep指執行緒被呼叫時,佔著CPU不工作,形象地說明為“佔著CPU睡覺”,此時,系統的CPU部分資源被佔用,其他執行緒無法進入,會增加時間限制。
10.下列選項中是正確的方法宣告的是?()
A.rotected abstract void f1();
B.public final void f1() {}
C.static final void fq(){}
D.private void f1() {}
正確答案: A B C D 你的答案: B C (錯誤)
解析:1.抽象方法只能定義在抽象類中,抽象方法和抽象類必須由abstract修飾,abstract關鍵字只能描述類和方法,不能描述變數。抽象方法只定義方法宣告,不定義方法實現。抽象類不可以被例項化(建立物件),只有通過子類繼承抽象類並覆蓋抽象類中的所有抽象方法後,該子類才可以被例項化,否則該子類還是一個抽象類。抽象類中有建構函式用於給子類物件進行初始化,同時抽象類中可以含有非抽象方法。abstract關鍵字不可以與final,private,static關鍵字共存,因為被final修飾的方法不可以被重寫,意味著子類不可以重寫該方法,如果abstract和final共同修飾父類中的方法,子類要實現抽象方法(abstract的作用),而final又不讓該方法重寫,這相互矛盾。如果private和abstract共同修飾父類中的方法,private修飾則該方法不可以被子類訪問,但是abstract修飾需要子類去實現,兩者產生矛盾。如果static和abstract共同修飾父類中的方法,static表示是靜態的方法,隨著類的載入而載入,則該方法不需要在子類中去實現,這與abstract關鍵字矛盾。 2.static用於修飾成員變數和成員函式,想要實現物件中的共性資料的物件共享,可以將這個資料進行靜態修飾,被靜態修飾的成員可以直接被類名呼叫,靜態隨著類的載入而載入,而且優先於物件存在。靜態方法只能訪問靜態成員(靜態方法和靜態變數),不可以訪問非靜態成員,這是因為靜態方法載入時,優先於物件存在,所以沒有辦法訪問物件中的成員。靜態方法中不能使用this和super關鍵字,因為this代表本類物件,super代表父類物件,而靜態時,有可能沒有物件存在,所以this和super無法使用。 3.final關鍵字可以修飾類,方法,變數(成員變數內,區域性變數,靜態變數),被final修飾的類是一個最終類,不可以被繼承,被final修飾的方法是一個最終方法,不可以被覆蓋,但是可以被繼承。被final修飾的變數只能是一個常量,只能賦值一次。內部類被定義在類中的區域性位置上時,只能訪問區域性被final修飾的區域性變數。
A:抽象方法只可以被public 和 protected修飾;
B:final可以修飾類、方法、變數,分別表示:該類不可繼承、該方法不能重寫、該變數是常量
C:static final 可以表達在一起來修飾方法,表示是該方法是靜態的不可重寫的方法
D:private 修飾方法(這太常見的)表示私有方法,本類可以訪問,外界不能訪問