本文目錄一覽:
求Java基礎,練習題。
選擇題 (25道)
1. 下列選項中,不屬於Java語言特點的一項是( C )。
A:分布式 B:安全性 C:編譯執行 D:面向對象
2. Java語言的特點與 C/C+ +語言的比較中說法錯誤的是:( D )
A:簡單性Java繼承了 C/C+ +的語法 ,丟棄了其中不常用又容易引起混淆的功能。
B:Java是一種純面向對象的語言 ,具有封裝、繼承 ( Inheritance)和多態( Polymorphism)的特點。
C:Java應用程序可憑藉URL打開並訪問網絡上的對象。
D:解釋型Java寫成的源代碼需要被編譯成高階的字節碼 ,它們與機器架構有關。
3. 閱讀下列代碼,選出該代碼段正確的文件名( C )。
class A{
void method1(){
System.out.println(“Method1 in class A”);
}
}
public class B{
void method2(){
System.out.println(“Method2 in class B”);
}
public static void main(String[] args){
System.out.println(“main() in class B”);
}
}
A: A.java B:A.class C: B.java D: B.class
4. 如果一個類的文件名為Student.java,但是類的代碼為:
public class Student {
public static void main(String[] args) {
System.out.println(82);
}}
那麼下列說法正確的是:( B )
A:程序運行結果為8; B:程序運行結果為2;
C:程序運行結果為0; D:程序編譯錯誤,不能運行;
5. 符合對象和類的關係的是( D )。
A:教師和學生 B:書和房子
C:狗和貓 D:飛機和交通工具
6. 關於垃圾回收機制描述不正確的是( B )
A:垃圾回收機制不須通過程序員調用相應方法,也能自動啟動。
B:java程序員用System.gc()方法一定能進行垃圾回收;
C:垃圾回收機制屬於jvm自動操作,java程序員可以不進行垃圾回收操作。
D:垃圾回收機制並不是由操作系統自動執行。
7. 編譯下面源程序會得到哪些文件( D )?
class A1{
}
class A2 exdends A1{
}
public class B{
public static void main(String[] args){
}
}
A: 只有B.class文件 B:只有A1.class和A2.class文件
C: 編譯不成功 D:A1.class、A2.class和B.class文件
8. 下列關於基本數據類型的說法中,不正確的一項是( D )。
(A)boolean類型變量的值只能取真或假
(B)float是帶符號的32位浮點數
(C)double是帶符號的64位浮點數
(D)char是8位Unicode字符
9. 下列(D )是合法的標識符?
A:12class B:void C:-5 D:_blank
10. 在編寫Java程序時,如果不為類的成員變量定義初始值,Java會給出它們的默認值,下列說法中不正確的一個是( D )。
A:byte的默認值是0 B:boolean的默認值是false
C: char類型的默認值是’\0’ D: long類型的默認值是0.0L
11. 下列程序執行的結果是:( B )
public class News {
public static void main(String[] args) {
System.out.println(1+2+ “aa”+3);
}}
A: “12aa3” B: “3aa3 ” C: “12aa” D: “aa3”
12. 表達式(12==0) (1/0 1)的值為( B )。
A: true B: false C: 0 D: 運行時拋出異常
13. 下列循環體執行的次數是( C )。
int y=2, x=4;
while(–x != x/y){ }
A : 1 B: 2 C : 3 D : 4
14. 已知如下代碼:
switch(m){
case 0: System.out.println(“Condition 0”);
case 1: System.out.println(“Condition 1”);
case 2: System.out.println(“Condition 2”);
case 3: System.out.println(“Condition 3”);break;
default:System.out.println(“Other Condition”);
}
當m的值為( D )時,輸出“Condition 3”
(A)2 (B)0、1 (C)0、1、2 (D)0、1、2、3
15. 下列語句輸出的結果是:( C )
public class X3 {
public static void main(String[] args) {
for(int i=0; i10; i++){
if(i==5) break;
System.out.print(i);
}
}
}
A:編譯錯誤; B:1234;C:01234;D:12345;
16. 下列語句輸出的結果是:( D )
public class Lx1 {
public static void main(String[] args) {
for(int i=0;i5;i++){
switch(i){
case 0:System.out.print(“B”);
case 1:System.out.print(“e”);break;
case 2:System.out.print(“g”);
case 3:System.out.print(“!”);break;
case 4:System.out.print(“!”);break;
default:System.out.print(“!”);
}
}
}
}
A:Beg!!! B:Beeg! C:Beg! D:Beeg!!!
17. 下面foreach循環的程序輸出結果是( D )。
public class Lx1{
public static void main(String[] args) {
String s1[]={“歡迎您”,”3″,”G”,”同”,”學”,};
Arrays.sort(s1);
for(String s0:s1)
System.out.print (s0);
}
}
A:歡迎您3G同學 B:3G歡迎您同學 C:同學歡迎您3G D:3G同學歡迎您
18. 閱讀以下程序,選擇正確的運行結果:( B )
public class Lx1 {
public static void main(String[] args) {
byte d[]=”YOUIHE你我他”.getBytes();
String s=new String(d,6,2);
System.out.println(s);
}
}
A:HE; B:你; C:我; D:他
19. 設有下列數組定義語句:
int a[][]= {{1, 2}, {3}};
則對此語句的敘述正確的是( D )。
A: 定義了一個名為a的一維數組 B: a數組 a[1][1]為0
C: a數組元素的下標為1~3 D: 數組中每個元素的類型都是整數
20. 下列程序輸出的結果是:( B )
public class Lx1 {
public static void main(String[] args) {
String a[][] ={{“”,””,””,””},{“”},{“”,””}};
System.out.println(a[2].length);
}
}
A:1 B:2 C:3 D:4
21. 關於以下程序的說明,正確的是( C )
1. class StaticStuff
2. {
3. static int x=10;
4. static { x+=5;}
5. public static void main(String args[ ])
6. {
7. System.out.println(“x=” + x);
8. }
9. static { x/=3;}
10. }
A、4行與9行不能通過編譯,因為缺少方法名和返回類型
B、9行不能通過編譯,因為只能有一個靜態初始化器
C、編譯通過,執行結果為:x=5
D、編譯通過,執行結果為:x=3
22. 給出下面代碼,關於該程序以下哪個說法是正確的?( C )
public class Person{
static int arr[] = new int[5];
public static void main(String a[]) {
for(int i=0;i
System.out.print(arr[0]);
}
}
A、編譯時將產生錯誤 B、編譯時正確,運行時將產生錯誤 C、輸出零 D、輸出空
23. 下面程序中類ClassDemo中定義了一個靜態變量sum,分析程序段的輸出結果。( C )
class ClassDemo {
public static int sum=1;
public ClassDemo() {
sum = sum + 5;}
}
public class ClassDemoTest{
public static void main(String args[]) {
ClassDemo demo1=new ClassDemo();
ClassDemo demo2=new ClassDemo();
System.out.println(demo1.sum);}
}
A: 0 B: 6 C: 11 D: 2
24. 下面關於方法的說法,不正確的是( C )。
A: Java中的構造方法名必須和類名相同
B: 方法體是對方法的實現,包括變量聲明和合法語句
C: 如果一個類定義了構造方法,也可以用該類的默認構造方法
D: 類的私有方法不能被其他類直接訪問
25. 在Java中下列說法正確的是( C )
A) 一個子類可以有多個父類,一個父類也可以有多個子類
B) 一個子類可以有多個父類,但一個父類只可以有一個子類
C) 一個子類可以有一個父類,但一個父類可以有多個子類
D) 上述說法都不對
Java面試題-基礎+集合原理(一)?
—、面向對象的特徵
面向對象的三個基本特徵是:封裝、繼承、多態。
1、封裝
封裝最好理解了。封裝是面向對象的特徵之一,是對象和類概念的主要特性。 封裝,也就是把客觀事物封裝成抽象的類,並且類可以把自己的數據和方法只讓 可信的類或者對象操作,對不可信的進行信息隱藏。
2、繼承
面向對象編程(OOP)語言的一個主要功能就是“繼承”。繼承是指這樣一種能力: 它可以使用現有類的所有功能,並在無需重新編寫原來的類的情況下對這些功能 進行擴展。
3、多態
多態性(polymorphism是允許你將父對象設置成為和一個或更多的他的子對象 相等的技術,賦值之後,父對象就可以根據當前賦值給它的子對象的特性以不同 的方式運作。簡單的說,就是一句話:允許將子類類型的指針賦值給父類類型的 指針。
實現多態,有二種方式,重寫,重載。
詳見如下:網頁鏈接
java 中的 方法 總是調來調去的 求高人發題 專練習調方法的練習題 下下了 越多越好
第一章 java技術入門
1.練習環境變量的設置,如果出現問題,試分析其原因並更正。
2.編寫HelloWorld程序,並編譯執行。
3.在屏幕上打印出一下圖形。
************************************************
**************Java程序設計**********************
*************************************************
4.編輯、編譯、運行以下程序,說出程序的功能。改變變量n的初值,觀察運行結果。
public class Sum10_for
{
public static void main(String[] args)
{
int i=1,n=10,s=0;
System.out.print(“Sum(“+n+”)=”);
for(i=1;in;i++)
{
s+=i;
System.out.print(i+”+”);
}
System.out.println(i+”=”+(s+i));
}
}
第二章 面向對象程序設計
1.創建一個帶缺省構造方法的類,在構造方法中打印一條信息。為這個類創建一個對象
2.設計一個銀行賬戶類,成員變量包括賬號、儲戶姓名、開戶時間、身份證號碼、存款餘額等賬戶信息,成員方法包括存款、取款等操作。
//3.定義一個點對象。
4.編寫並測試一個代表地址的Address類,地址信息由國家、省份、城市、街道、郵編組成,並可以返回完整的地址信息。
5.定義並測試一個代表員工的Employee類。員工屬性包括編號、姓名、基本薪水,還包括獲取這些屬性的方法。
6.創建一個Dog類,有名字、顏色、年齡等屬性,定義構造方法來初始化類的這些屬性,定義方法輸出Dog信息,編寫應用程序使用Dog類。
第四章 運算符、表達式和流程控制
1.測試++運算符。問:當a=1時,如下表達式:(++a)+(++a)+(++a);(a++)+(a++)+(a++);(++a)+(a++)+(++a)+(a++)的值分別是多少。
2.寫一個打印從1到100值的程序
3.編寫一個程序,求三個數中的最大值。
4.求1~1000之間可以同時被3、5、7整除的數字。
5.利用條件運算符的嵌套來完成此題:學習成績=90分的同學用A表示,60-89分之間的用B表示,60分以下的用C表示。
程序分析:(ab)?a:b這是條件運算符的基本例子。
6.利用遞歸方法求5!。
第五章 數組
1.定義一個由整數組成的數組,要求求出其中的奇數個數和偶數個數。
2.現在有如下的一個數組:
int oldArr[]={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};
要求將不為0的值存入一個新數組。
3.定義一個整型數組,求出數組元素的和、數組的最大值和最小值,並輸出。
4.設級數Sn定義為:S0=0,S1=1,Sn=Sn-1+2*Sn-2(n=2),將前10個Sn數放入數組中。
5.打印出二維數組中元素的最大值,及其行、列位置。
第六章 面向對象編程進階
1.設計一個表示用戶的User類,類中的變量有用戶名、口令等,定義類的三個構造方法(無參、為用戶名賦值、為用戶名和口令賦值),並設計獲取和設置口令的方法和返回類信息的方法。
2.創建一個名為Dog的類,具有重載的bark()方法。此方法應根據不同的基本數據類型進行重載,並根據被調用的版本,打印出不同類型的狗的叫聲。編寫main()來調用所有不同版本的方法。
3.編寫具有兩個方法的類,在第一個方法內調用第二個方法兩次:第一次調用不使用this,第二次調用時使用this。
4.編寫具有兩個重載構造方法的類,並在第一個構造方法中調用第二個構造方法。
5.創建一個帶有public,private,protected和包訪問權限的成員變量以及成員方法的類。創建該類的一個對象,看看在你試圖調用所有類成員時,會得到什麼類型的編譯信息。注意在同一目錄中的所有類都是缺省包範圍。
6.(1)創建兩個帶有缺省構造器的類,A和B。從A中繼承一個名為C的新類,並在C內創建一個B類的成員。不要給C編寫構造器。創建一個C類的對象並觀察其結果。
(2)對上述程序進行修改,使A和B含有帶參數的構造器,以取代缺省的構造器。為C寫一個構造器,並在其中執行所有初始化。
7.證明基類構造器(a)總是被調用(b)在導出類構造器之前被調用
8.創建一個僅有一個非缺省構造器的基類,並創建一個帶有缺省構造器和非缺省構造器的導出類。在導出類的構造器中調用基類的構造器。
9.(1)創建一個Root類,令其含有名為Component1、Component2、Component3的類各一個實例(這些也由你寫)。從Root中派生一個類Stem,也含有上述各“組成部分”。所有的類都應帶有打印出類的相關信息的缺省構造器。
(2)修改上述程序,使每個類都僅有非缺省的構造器。
10.創建一個類,它應帶有一個被重載了三次的方法。創建一個子類,並添加一個該方法的新的重載定義,展示着四個方法在子類中都可以使用。
11.建立一個人類(Person)和學生類(Student),功能要求如下:
(1)Person中包含4個保護型的數據成員name、addr、sex、age,表示姓名、地址、性別和年齡。用一個4參構造方法、一個兩參構造方法、一個無參構造方法、一個輸出方法顯示4種屬性。
(2)Studeng類繼承Person類,並增加輸出成員math、english存放數學和英語成績。用一個6參構造方法、一個兩參構造方法、一個無參構造方法和重寫輸出方法用於顯示6種屬性。
11.在包中編寫一個類,你的類應具備一個protected方法。在包外部,試着調用該protected方法並解釋此結果。然後,從你的類中派生一個導出類,並從該導出類的一個方法內部調用該protected方法。
12.(1)創建一個名為Amphibian的類。由此派生出一個被稱為Frog的類。在基類中設置適當的方法。在main()中,編寫一個Frog並向上轉型至Amphibian,然後說明所有方法都可工作。
(2)修改上述程序,使Frog重載基類中方法的定義,並重新調用,觀察現象。
13聲明一個圖書類,其數據成員為書名、編號(利用靜態變量實現自動編號)、書價,並擁有靜態數據成員冊數,記錄圖書的總冊數,在構造方法中利用此靜態變量為對象的編號賦值,在主方法中定義對象數組,並求出總冊數。
14.創建一個含有static final數據成員和final數據成員的類,說明二者間的區別。
15.創建一個帶有final數據成員的類。由此派生出一個類並重載此數據成員。
16.創建一個包含兩個方法的基類。在第一個方法中可以調用第二個方法。然後產生一個繼承自該基類的導出類,且重載基類的第二個方法。為該導出類創建一個對象,向上轉型到基類型並調用第一個方法,解釋發生的情況。
第七章 高級類特性
1.(1)創建一個Rodent(嚙齒動物):Mouse(老鼠),Gerbil(鼴鼠),Hamster(大頰鼠)這樣的繼承層次結構。在基類中,提供對所有的Rodent都通用的方 法,在基類中,根據特定的Rodent類型重載這些方法,以便執行不同的行為。(2)修改上述程序,使Rodent成為一個抽象類。只要有可能,就將Rodent的方法聲明為抽象方法。
2.創建一個基類,包含抽象方法print(),並在導出類中將其重載。重載的版本中會打印基類中定義的某個整型變量的值。在定義該變量時,請賦予非零值。在基類的構造器中,可以調用這個方法。現在,在main()方法中,創建一個導出類對象,然後調用它的print()方法。解釋發生的情形。
3.創建一個不包含任何方法的抽象類,從它那裡導出一個子類,並添加一個方法。在測試類中創建一個靜態方法,可以接受一個指向基類的引用,將其向下轉型到導出類,然後再調用該靜態方法。在main()方法中,證實它的可行性。
4.定義類Shape,用來表示一般二維圖形。Shape具有抽象方法area和perimeter,分別用來計算形狀的面積和周長。試定義一些二維形狀類(如矩形、三角形、圓形等),這些類均為Shape類的子類。
4.在某個包中創建一個接口,內含三個方法,然後在另一個包中實現此接口。
5.創建三個接口,使之各有兩個方法。再創建一個新的接口,繼承三者,並添加一個新方法。然後創建一個類,在實現此新接口的同時,繼承一個實際的類。並為這個類寫四個方法,每個方法分別以四個接口中的一個作為參數。在main()中,創建這個類的對象,然後將它作為參數傳遞給那四個方法。
6.在第一個包中創建至少有一個方法的接口。然後在第二個包內創建一個類,在其中增加一個protected的內部類以實現那個接口。在第三個包中,繼承這個類,並在一個方法中返回該內部類的對象,在返回的時候向上轉型為第一個包中的接口類型。
7.創建一個至少有一個方法的接口。在某個方法內定義一個內部類,以實現此接口,這個方法返回此接口的引用。
8.創建一個private內部類,實現一個public接口。寫一個方法,它返回一個指向此private內部類的實例的引用,並將此引用向上轉型為該接口類型。通過嘗試向下轉型,說明此內部類被完全隱藏了。
9.創建一個僅有非缺省構造器的類。再創建第二個類,它包含一個方法,能夠返回第一個類的引用。通過寫一個繼承自第一個類的匿名內部類,而創建一個用以返回的對象。
10.定義一個品牌電腦的枚舉類,其中只有固定的幾個電腦品牌。
11.定義一個Person類,其中包含姓名、年齡、生日、性別等屬性,其中性別只能 是男或女。
第八章 異常處理
1.編寫一個類,在main()的try塊里拋出一個Exception對象。傳遞一個字符串參數給Exception的構造器。在catch子句里捕獲此異常對象,並且打印字符串參數。添加一個finally子句,打印一條信息以證明這裡確實得到了執行。
//2.使用extends關鍵字建立一個自定義異常類。為這個類寫一個接受字符串參數的構造器,把此參數保存在對象內部的字符串引用中。寫一個方法打印此字符串。寫一個try-catch子句,對這個異常進行測試。
3.為一個類定義兩個方法,f()和g()。在g()里,拋出一個泥定義的新異常。在f()里,調用g(),捕獲它拋出的異常,並且在catch子句里拋出RuntimeException。在main()方法里測試你的代碼。
第九章 精通常用的java類
1.計算字符串中子串出現的次數
2.寫一個接收兩個字符串的方法,判斷兩個字符串是否相等,做==的同時,用eques做測試,在main()裡面用不同的字符串做測試,並打印結果。
3.寫一個會隨機生成25個整型值的程序。對每一個只,用if-else語句判斷其實大於、小於,還是等於下一個隨機生成的數。
4.統計一個字符串中單詞的個數。設單詞之間用一個或多個空格分隔,該字符串只由字母與空格組成。
5.輸入一行字符,分別統計出其中英文字母、空格、數字和其它字符的個數。
6.編寫程序,統計出字符串“want you to know one thing“中字母n和字母o
的出現次數。
7.字符串操作:
(1)從字符串“Java技術學習班20091211”中提取開班日期。
(2)將“IBM JAVA學習班”中的字符串JAVA替換為“J2SE”。
(3)取出“JAVA技術學習班20091211”中的第八個字符。
(4)清除“JAVA技術學習班20091211”中的所有的0.
(5)清除“JAVA 技術學習班 學生 信息”中的所有空格。
8.定義一個StringBuffer類對象,然後通過append()方法向對象中添加26個小寫字母,要求每次只添加一次,共添加26次,然後按照逆序的方式輸出,並且可以刪除前五個字符。
9.輸入一個Email地址,然後使用正則表達式驗證該Email地址是否正確。
10.編寫程序,用0~1之間的隨機數來模擬扔硬幣試驗,統計扔1000次後出現正反面次數並輸出。
11.編寫正則表達式,判斷給定的是否是一個合法的IP地址。
第十一章 集合與映射
1.(1)創建一個新類Gerbil(沙鼠),包含int gerbilNumber,在構造器中初始化它。添加一個方法hop(),用以打印gerbil的號碼。創建一個ArrayList,並向其中添加一串Gerbil對象。使用get()遍歷List,並且對每個Gerbil調用hop().
(2)修改上述程序,使用Iterator遍歷List,並調用hop()。
2.使用上述中的Gerbil類,將其放入Map中,將Gerbil的名字String(鍵)與每個Gerbil(值)關聯起來。有keySet()獲取Iterator,使用它遍歷Map,針對每個”鍵”查詢Gerbil,然後打印出”鍵”,並調用hop()。
3.創建一個新容器,用private ArrayList來保存對象。用Class reference來判斷容器中的第一個對象的類型,然後只允許用戶插入此類型的對象。
4.用String數組創建一個只能存取String的容器,這樣使用的時候就沒有類型轉換的問題了。當容器發現數組不夠大的時候,應該能夠自動調整其內部數組的容量。
//5.創建一個包括兩個String對象的類,然後做一個只比較第一個字符串的Comparable。產生多個對象並存入ArrayList。驗證一下,排序能否正常工作。再做一個只比較第二個String的Comparator,然後驗證一下,排序是否正常
6.寫一個類,在其中創建一個已經初始化的對象數組。使用此數組填充List。使用subList()生成此List的子集,然後使用removeAll()將子集從List中移除。
7.創建自己的容器,使它只能容納特定類型的對象。
8.編寫學生類,該類定義了3個屬性:學號、姓名、成績。可以通過構造方法設
置3個屬性的值,並覆寫Object類的toString()放法,在List集合中加入5
個學生對象,並將內容輸出,之後使用比較器將對象的內容進行排序並顯示在屏幕上。
JAVA基礎測試題
1 跟java運行的機制有關,java先加載靜態域,static int x=10; ,然後靜態塊static { x+=5;},static { x/=3;}(雖然位置在後但先運行) ,然後靜態方法static void main
所以x=10,x=15,x=5.
2 A因為int [ ] x = new int[25],數組建立後,每個元素默認值為0;x[24]=0;x[25] 下標越界,x[0]=0;
3 switch(i)不接受long型,int或者枚舉型可以。i=Integer.parseInt(args[0]);雖然這樣每課時i還是long型的。
4 c,沒什麼好說的,就是這麼規定的!
原創文章,作者:簡單一點,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/130416.html