JavaSE練習題


JavaSE核心技術

姓名 _______________ 序號 _______________ 得分 _______________

第一部分:選擇題

1、  [ 單選題 ] 

在java代碼中,以下哪些是聲明一個方法拋出異常的正確形式?請選擇一個正確答案:

 

( A  )

A、void m() throws IOException{};

B、void m() throw IOException{};

C、void m(void) throws IOException{};

D、m() throws IOException{};

E、void m() {} throws IOException

解析:throw是語句拋出一個異常,throws是方法可能拋出異常的聲明。

2、  [ 單選題 ] 

若在Java代碼中,某一個類定義中定義有如下的方法:static void testMethod( ) 該方法屬於 :

 

(  C )

A、本地方法

B、最終方法

C、靜態方法

D、抽象方法

3、  [ 單選題 ] 

在java代碼中,設 X 、Y 均為已定義的類名,下列聲明類X的對象x1的語句中正確的是:

 

( A  )

A、X x1;

B、X x1= X ( );    解析:少new

C、X x1=new Y( )

D、int X x1;

4、  [ 單選題 ] 

下列哪一個是合法的標識符:

 

(   )

A、12class 不能數字開頭

B、+void  只能字母、下划線、數字、$組成。

C、-5  負數

D、_black

解析:

1)、名稱只能由字母、數字、下划線、$符號組成

2)、不能以數字開頭

3)、名稱不能使用JAVA中的關鍵字。

4)、堅決不允許出現中文及拼音命名。

5、  [ 單選題 ] 

Random.nextInt(20)得到的結果不可能是 (  C )

A、0

B、10

C、20

D、19

解析://隨機生成一個整數,這個整數的范圍就是[0,20)

6、  [ 單選題 ] 

欲構造ArrayList類的一個實例,此類繼承了List接口,下列哪個方法是正確的 ( B  )

A、ArrayList myList=new Object();

B、List myList=new ArrayList();

C、ArrayList myList=new List();

D、List myList=new List();

解析:

7、  [ 單選題 ] 

下列數據類型的精度由高到低的順序是:

 

( B )

A、float,double,int,long

B、double,float,int,byte

C、byte,long,double,float

D、double,int,float,long

8、  [ 單選題 ] 

下列針對int類型的私有屬性age的訪問器方法格式正確的是:

(  C  )

A、void getAge(int age)

B、int getAge(int age)

C、void setAge(int age)

D、int setAge()

9、  [ 單選題 ] 

下列類頭定義中,錯誤的是:

 

(  A )

A、public x extends y

B、public class x extends y

C、class x extends y implements y1

D、class x

10、  [ 單選題 ] 

在java中,對於try和catch子句的排列方式,下面哪一項是正確的:

 

(  A )

A、子類異常在前,父類異常在后

B、父類異常在前,子類異常在后

C、父類異常和子類異常不區分順序

D、父類異常和子類異常不能出現在同一個try程序段內

 

11、  [ 單選題 ] 

以下關於迭代器Iterator描述正確的是:

 

(  D )

A、Iterator 可以對所有實現了Collection接口的集合實現類,進行雙向迭代

B、通過迭代器,可以遍歷集合中的元素,可以對元素進行讀取和添加

C、全部正確

D、迭代器的設計初衷是替代 Java Collections Framework 中的 Enumeration

解析:

https://www.cnblogs.com/zyuze/p/7726582.html

12、  [ 單選題 ] 

關於集合框架描述錯誤的是 ( D  )

A、List和Set具有相同的父接口

B、List中的元素可以重復,而Set不可以重復

C、影響HashMap性能的因素在於其初始容量和加載因子,因此,HashMap中元素永遠不會灌滿Hash桶

D、在軟件實務中,應該為HashMap提供盡可能小的初始容量,當容量不足時候,使其自動擴容,以節約內存開銷

13、  [ 單選題 ] 

以下關於HashMap的描述正確的是 (  B )

A、HashMap是映射的實現方式之一,每個鍵/值對都是由其內部的動態數組進行直接存儲

B、對於所有的鍵值對,可以直接導出形成Set集合

C、HashMap讀取的最快方式是應用迭代接口進行讀取

D、HashMap中的每個映射,都必須以鍵值對的方式進行整體Entry操作,不可以獨立獲取其key或是value

14、  [ 單選題 ] 

對於以下程序,描述正確的是

 public static void main(String[] args)  {

    List<int> data=new ArrayList<>();

    data.add(1);

    data.add(2);

    data.add(3);

    ListIterator<int> li=data.listIterator(1);

    while(li.hasPrevious()){

     System.out.println(li.previous());

    }

 } ( D )

A、輸出結果是1

B、輸出結果是2和1

C、無輸出結果

D、存在編譯錯誤

15、  [ 單選題 ] 

以下關於字符串截取,描述錯誤的是 (  B )

A、Java中的字符串截取方法進行了重載。

B、Java中的字符串截取方法,可以從指定索引開始一直截取到最后一個字符。當指定索引不存在時候,返回空字符串。

C、對於字符串截取方法,subString(int beginIndex,int endIndex)返回值包含開始位置的字符,但不包含結束位置的字符。

D、對於區間字符串截取,java是從某一索引開始,到某一索引結束;而Oracle中則是從某一索引開始截取指定長度。

16、  [ 單選題 ] 

對於字符串實現類,描述正確的是 ( D  )

A、String 是定長字符串,一經定義長度不可以變,一旦長度發生變化,會產生新的字符串對象,但進行局部替換時候不會產生新字符串對象。

B、從Java1.5開始,新增了StringBuffer對象,用以處理動態字符串

C、String  word=new String(“hello neusoft”)時候,內存中產生的字符串個數是一個。

D、對於動態字符串,如果需要保證其線程安全性,需要使用StringBuffer,如果在不涉及線程安全的環境中,建議使用StringBuilder,因為其性能更好。

17、  [ 單選題 ] 

以下描述錯誤的是 ( B  )

A、java中對於數據的輸入輸出是通過流實現的

B、java中的流分為輸入流和輸出流,輸入流用以向文件中寫入數據

C、對於I/O流Java提供了兩種實現手段,分別是字節流和字符流,但在底層,一切I/O都是基於字節流實現的

D、緩沖流的意圖在於通過空間消耗,換取時間上的效率

18、  [ 單選題 ] 

在FileOutputStream類的構造方法中,下面哪個類是合法 ( A  )

A、File

B、InputStream

C、OutputStream

D、FileOutputStream

19、  [ 單選題 ] 

File類型中定義了方法( )來判斷一個文件是否存在 ( D  )

A、createNewFile

B、contains

C、delete

D、exists

20、  [ 單選題 ] 

在Java中,JDBC API定義了一組用於與數據庫進行通信的接口和類,它們包括在( )包中 ( B  )

A、java.lang

B、java.sql

C、java.util

D、java.math

21、  [ 單選題 ] 

初始化基本ResutlSet對象rst,獲取rst的第一行數據,以下正確的是

 

(  B )

A、rst.hashNext()

B、rst.next()

C、rst.first()

D、rst.nextRow()

22、  [ 單選題 ] 

Java編程中有關數據庫的事務(JDBC)的敘述正確的是?()

 

(  B )

A、事務是通過 Statement對象控制的,默認每條語句一個事務

B、事務是通過 Connection對象控制的,調用conn.setAutoCommit(false)禁止自動提交

C、事務是通過 ResultSet對象控制的,當關閉 ResultSet對象時自動提交

D、Java中的事務不可以設置事務的隔離級別

23、  [ 單選題 ] 

關於equals()與==描述正確的是 ( A  )

A、如果一個類沒有重寫equals方法,那么equals可以用來比較兩個變量引用的內存對象是否相同

B、在String類中,equals()與==作用是相同的

C、在一個方法中,如果定義了如下語法:

    String   str1=”abcd”;

    String   str2=”abcd”;

  此時,equals()返回true,而==返回false

D、在內存對象是否相同的判斷上,是不可以應用equals()的

24、  [ 單選題 ] 

在Java語言中,以下關於hashCode的描述正確的是

 

(  C )

A、如果兩個對象的hashCode相同,那么一定是同一個內存對象

B、即使兩個對象的hashCode不同,也有可能是同一個內存對象

C、即使兩個對象不同,也完全有可能存在相同的hashCode

D、即使是同一個內存對象,得到的hashCode也可能不同

25、  [ 單選題 ] 

以下關於java日期格式組合正確的是 ( C  )

A、yyyy-MM-dd :hh24:mi:ss

B、YYYY-MM-DD

C、yyyy-MM-dd  HH:mm:ss

D、YYYY-MM-DD HH24:MI:SS

 

26、  [ 多選題 ] 

下列哪兩個語句能夠創建一個InputStream輸入流並且打開文件“file.txt”准備讀取 ( BE  )

A、InputStream in=new FileReader(“file.txt”);

B、InputStream in=new FileInputStream(“file.txt”);

C、InputStream in=new InputStreamFileReader (“file.txt”, “read”);

D、FileInputStream in=new FileReader(new File(“file.txt”));

E、FileInputStream in=new FileInputStream(new File(“file.txt”));

27、  [ 多選題 ] 

Java程序代碼如下:

List a = new ArrayList();

a.add(“Alpha”);

a.add(“Bravo”):

a.add(“Charlie”);

a.add(“Delta”);

Iterator iter = a.iterator();

______________________

下列哪兩組的兩行代碼添加在虛線處,可按字典順序打印輸出ArrayList集合中的全部元素

 

( AC  )

A、for (int i=0;i<a.size(); i++) System.out.println(a.get(i)));

B、for (int i=0; i < a.size(); i++) System.out.println(a[i]);

C、while( iter.hasNext() ) System.out.println(iter.next()) ;

D、for (int i=0, i < a.size(); i++) System.out.println(iter[i]);

E、for (int i=0; i < a.size(); i++) System.out.println(iter.get(i));

28、  [ 多選題 ] 

以下哪些是接口

 

(  AC )

A、List

B、ArrayList

C、Set

D、HashMap

29、  [ 多選題 ] 

Java中的集合類包括ArrayList、LinkedList、HashMap等,下列關於集合類描述正確的是

 

(  ABD )

A、ArrayList和LinkedList均實現了List接口

B、ArrayList的查詢速度比LinkedList快

C、添加和刪除元素時,ArrayList的表現更佳

D、HashMap實現了Map接口,它允許任何類型的鍵和值對象,並允許將 null 用作鍵或值

30、  [ 多選題 ] 

以下哪個方法可得到結果內容是"Java"的字符串

 

( AC  )

A、"helloJava".substring(5)

B、"pringJava".substring(6)

C、"ThinkinJava4th".substring(7,11)

 

32、  [ 單選題 ] 

在java代碼中,一個變量聲明為boolean aa;下面賦值語句中正確的是:

 

(  A )

A、aa=false;

B、aa=False;

C、aa="true";

D、aa=0;

33、  [ 單選題 ] 

已經定義數組:int[] m=new int[4], 當使用語句m[10]=10; 時可以捕獲的異常類型是:

 

(  A )

A、java.lang.Exception

B、java.lang.NullPointerException

C、java.io.IOException

D、java.sql.SQLException

34、  [ 單選題 ] 

在java中,下面關於abstract描述正確的是:

 

( B  )

A、可以用來聲明變量、方法

B、可以用來聲明方法和類,如果方法是abstract的,那么類必須也是abstract的

C、abstract的method可以是static的

 

40、  [ 單選題 ] 

以下程序執行結果是什么

public static void main(String[] args){

 String str1="str";

 String str2=new String("str");

 System.out.print(str1.equals(str2));

 System.out.print(",");

 System.out.print(str1==str2);

 

}

 

( B  )

A、false,false

B、ture,false

C、true,true

D、false,true

41、  [ 單選題 ] 

以下Java程序輸出結果是什么

public static void main(String[] args) {

Set set = new HashSet();

set.add("key1");

set.add("key1");

set.add("key3");

Map map = new HashMap();

map.put("key1", "key1");

map.put("key1", "key2");

map.put("key3", "key3");

System.out.println(set.size() + "_" + map.size());

}

 

(  B )

A、3_3

B、2_2

C、2_3

D、3_2

42、  [ 單選題 ] 

下列語句會中創建幾個對象?

String s1 ="hello world"

String s2 ="hello world"

 

( D  )

A、0個

B、1個

C、2個

D、3個

43、  [ 單選題 ] 

要刪除book表中書籍(bookName)是"Java"的記錄,哪個選項放在如下Java代碼的空行處,可使代碼正確執行。

String sql=”delete from book where bookName=?”;

PreparedStatement pst=con.preparedStatement(sql);

______________________________

pst.execute();

 

(  A )

A、pst.setString(1,”Java”)

B、pst.setString(0,”Java”)

C、pst.setInt(0,”Java”)

D、以上選項都不正確

44、  [ 單選題 ] 

應用程序的main方法中有以下語句,則輸出的結果是

String s1 = "0.5";

 

String s2 = "12";

double x = Double.parseDouble(s1);

System.out.println(s2+x );

 

( B  )

A、12.5

B、120.5

C、12

D、“12.5”

45、  [ 單選題 ] 

看如下代碼,其中list是一個ArrayList類型的對象,哪個選項的代碼填寫到//todo delete處,可以在Iterator遍歷的過程中正確並安全的刪除一個list中保存的對象?(   )

Iterator it = list.iterator();

int index = 0;

while (it.hasNext()){

     Object obj = it.next();

     if (needDelete(obj)) { //needDelete返回boolean,決定是否要刪除

           //todo delete

       }

       index ++;

} (  D )

A、list.remove(obj);

B、list.remove(index);

C、list.remove(it.next());

D、it.remove();

46、  [ 單選題 ] 

對於以下語句Integer val=null;以下哪個語句會引發空指針異常 (  D )

A、String str1=val+”ABC”

B、int width=String.valueOf(val).length();

C、"null".equals(val);

D、int a=val+200;

47、  [ 單選題 ] 

代碼如下:String str=”A^B^C^D”;以下代碼需要將其轉換成數組,正確的是 ( B  )

A、String val[]=str.split("//^");

B、String val[]=str.split("\\^");

C、String val[]=str.split("\^");

D、String val[]=str.split("^");

48、  [ 單選題 ] 

對於程序:

    public static void main(String[] args)

 {

    List<String> e=new ArrayList<>();   

    ____________________  //插入位置

    System.out.println(e);   

 }

如下哪行代碼放入目標位置會產生異常: ( D  )

A、e.add(2,“OK”)

B、e.set(0,“OK”)

C、e.remove(0)

D、以上都會

49、  [ 單選題 ] 

以下關於HashMap方法描述錯誤的是 ( B  )

A、clear()方法只是清除了所有的映射,內存對象實際上依然存在

B、remove(Object k)方法刪除的key如果不存在,會引發異常,因此一般在調用該方法之前,需要先調用containsKey(Object k)方法,判斷key是否存在

C、當isEmpty( )返回true的時候,size()方法的返回值是0

D、HashMap中的key是不可以重復的,但是可以用null做key

53、  [ 單選題 ] 

以下關於線程的說法中錯誤的一項是 (  D )

A、一個線程是一個Thread類的實例

B、Java中主線程的是最先開始,最后結束的

C、線程是進程的子集,一個進程可以有很多線程,每條線程用以執行不同的任務

D、當一個進程包含多個線程時候,每個線程的內存空間都是獨立的

 

55、  [ 多選題 ] 

以下哪些方法是屬於Thread類的 ( ABC  )

A、getId()

B、destory()

C、sleep()

D、exist()

 

59、  [ 多選題 ] 

在Java中,下列關於類的定義的選項中,哪些可以通過new Thing()方法來創建該類的一個對象:

 

( AD  )

A、public class Thing { public Thing() {}}

B、public class Thing { public Thing(void) {} }

C、public class Thing { public Thing(String s) {} } }

D、public class Thing { public void Thing(String s) {} }

60、  [ 單選題 ] 

下列類定義中,不正確的是: ( D  )

A、class x

B、class x extends y

C、class x implements  y1,y2

D、public class x  extends X1,X2

61、  [ 單選題 ] 

下列敘述正確的是:

 

(  C )

A、Java中類允許多重繼承

B、Java一個類只能實現一個接口

C、Java中類只能單重繼承

D、Java中一個類可以繼承多個抽象類

62、  [ 單選題 ] 

在Java中,關於類的說法,正確的是:

 

(  C )

A、編寫代碼時,聲明的類可以不繼承任何類

B、編寫代碼時,聲明的類可以繼承自多個類

C、編寫代碼時,聲明的類一定繼承自一個類

D、編寫代碼時,聲明的類可能繼承自一個類可能繼承自多個類,但不能不繼承某個類

63、  [ 單選題 ] 

下列那些說法是正確的是: ( C  )

A、final修飾是為了與abstract修飾符對應,沒有final的類,應該是abstract。

B、final的類不能創建對象。

C、final類可以創建對象。

D、final類不可以有父類。

64、  [ 單選題 ] 

定義一個接口時,下列哪個關鍵字用不到: ( D  )

A、public

B、extends

C、interface

D、class

65、  [ 單選題 ] 

下列關於訪問器方法說法正確的是: ( A  )

A、get方法可以讀取屬性的值

B、set方法用來讀取屬性的值

C、必須為每個private屬性提供訪問器方法

D、public屬性不能有訪問器方法

66、  [ 單選題 ] 

拋出異常時使用下列哪個關鍵字:

 

(  A )

A、throw

B、catch

C、try

D、throws

E、finally

68、  [ 單選題 ] 

某個類中存在一個方法:void getSort(int x),以下能作為該方法的重載的聲明的是: ( B  )

A、public getSort(float x)

B、double getSort(int x,int y)

C、int getSort(int y)

D、void get(int x,int y)

69、  [ 單選題 ] 

創建二維數組a[3][4]后,a[0].length的值應該等於: (  D )

A、0

B、2

C、3

D、4

70、  [ 單選題 ] 

在switch(expression)語句中,expression的數據類型不能是: ( C  )

A、byte

B、char

C、float

D、short

71、  [ 單選題 ] 

設 int x = 1 ;int y = 2 ;int z = 3;則表達式 y+=z--/++x中y的值是:

 

( A  )

A、3

B、3.5

C、4

D、5

72、  [ 單選題 ] 

下面的Java語句錯誤的是:

 

(  C )

A、byte a=2;

B、double a=1.0;

C、float a=1.0

D、double a=1;

73、  [ 單選題 ] 

下列有關Eclipse的說法錯誤的是:

 

( B  )

A、Eclipse是集成開發環境,當Java文件保存時,Eclipse會自動編譯生成.class文件。

B、Eclipse是集成開發環境,在Eclipse中更改文件代碼后,Eclipse會自動保存該文件。

C、Eclipse是集成開發環境,但是沒有Eclipse,記事本也可以開發Java代碼。

D、Eclipse是集成開發環境,必須要先安裝java開發環境,才能開發Java程序。

第二部分:填空題

1、  [ 填空題 ] 

寫出代碼運行結果______ Caught e _________

public class ExceptionDemo {

 public static void mySqrt(int a) throws Exception {

  if (a < 0)

   throw new Exception();

 }

 public static void main(String args[]) {

  try {

   mySqrt(25);

   mySqrt(-5);

  } catch (Exception e) {

   System.out.print("Caught e");

  }

 }

}

2、  [ 填空題 ] 

寫出代碼運行結果______1977-8-16_________

class ParentConstructor {

 public int year;

 public int month;

 public int day;

 public static final int default_month = 2;

 public static final int default_day = 16;

 public ParentConstructor(int y, int m, int d) {

  year = y;

  month = m;

  day = d;

 }

 public ParentConstructor(int y) {

  this(y, default_month, default_day);

 }

 

 public ParentConstructor(int y1977, int m8) {

  this(y, m, default_day16);

 }

}

 

public class ChildConstructor extends ParentConstructor {

 public ChildConstructor(int h) {

  super(1977, 8);

 }

 

 public static void main(String[] args) {

  ChildConstructor t = new ChildConstructor(12);

  System.out.println(t.year + "-" + t.month + "-" + t.day);

 }

}

3、  [ 填空題 ] 

寫出代碼運行結果______ ABDCBDCB _________

public class Delta {

 static boolean foo(char c) {

  System.out.print(c);

  return true;

 }

 public static void main(String[] argv) {

  int i = 0;

  for (foo('A'); foo('B') && (i < 2); foo('C')) { // abdcbdcb

   i++;2

   foo('D');

  }

 }

}

4、  [ 填空題 ] 

寫出代碼運行結果_______ a=7,b=18

public static void main(String args[]) {

  int a = 6, b;

  b = a++ * 3;

  System.out.print("a=" + a + ",b=" + b);

}

5、  [ 填空題 ] 

寫出代碼運行結果______ sum=30_________

public static void main(String[] args) {

 int sum = 0;

 for (int i = 1; i <= 10; i++) {

  if (5 % 2 != 0)

   continue;

  else

   sum += i;

 }

 System.out.println("sum=" + sum);

}

6、  [ 填空題 ] 

執行以下程序

public static void main(String[] args){

 String str1="str";

 String str2=new String("str");

 System.out.print(str1.equals(str2));

 System.out.print(",");

 System.out.print(str1==str2);

 

}

 

結果是_________ ture,false__________________

 

7、  [ 填空題 ] 

要刪除book表中書籍,列名為bookName,值是"Java"的記錄,補全Java代碼的空行處,可使代碼正確執行。

String sql=”delete from book where bookName=?”;

PreparedStatement pst=con.prepareStatement(sql);

________ pst.setString(1,"Java");或者_ pst.setString("bookName","Java")_____________________;

pst.execute();

 

8、  [ 填空題 ] 

在java中byte類型的取值范圍是___-128 到 127___

9、  [ 填空題 ] 

在java代碼段中,有一個方法被調用代碼為double[] arrs = sort(""),該方法的聲明代碼為________ public double[] sort(String arr)___________(如果調用代碼錯誤,無法寫出方法聲明,請在橫線處填入“代碼錯誤”)

10、  [ 填空題 ] 

二維數組初始化為Student[][] a = new Student[4][2],a.length的值為____4_______(如果數組初始化代碼錯誤,請在橫線處填入“代碼錯誤”)

11、  [ 填空題 ] 

寫出代碼運行結果_______ y=0________

public static void main(String args[]) {

  int x=2;

  int y = x++/3;

 

  System.out.println("y="+y);

}

12、  [ 填空題 ] 

寫出代碼運行結果______ 0 2 4_________

public static void main(String args[]) {

int i = 0;

for ( int i=0;; i < 4; i += 2) {

System.out.print(i + "");

}

System.out.println(i);

}

 

13、  [ 填空題 ] 

寫出代碼運行結果______23_________

public class ScopeTest {

 public int i = 1;15

 public void firstMethod() {

  int i = 7, j = 8;

  this.i = i + j;

  secondMethod(this.i);

 }

 public void secondMethod(int i) {

  int j = 8;

  this.i = i + j;

 }

 public static void main(String[] args) {

  ScopeTest obj = new ScopeTest();

  obj.firstMethod();

  System.out.println(obj.i);

 }

}

14、  [ 填空題 ] 

寫出代碼運行結果_______30 10 20________

class A1 {

 int i, j;30 40

 void setA(int i, int j) {

  this.i = i;

  this.j = j;

 }

}

class B1 extends A1 {

 int j, k;10 20

 void setB(int j, int k) {

  this.j = j;

  this.k = k;

 }

}

public class TestAB {

 public static void main(String[] args) {

  B1 sub = new B1();

  sub.setB(10, 20);

  sub.setA(30, 40);

  System.out.println(sub.i + " " + sub.j + " " + sub.k);

 }

}

15、  [ 填空題 ] 

寫出代碼運行結果______ ACD _________

public static void main(String[] args) {

  try {

   badMethod();

   System.out.print("A");

  } catch (Exception ex) {

   System.out.print("B");

  } finally {

   System.out.print("C");

  }

  System.out.print("D");

 }

 public static void badMethod() {

 }

16、  [ 填空題 ] 

在java中,使用代碼定義如下:

 

public class Test {

 

private static final int a;

 

public static void main(String[] args) {

 

a = 20;

 

}

 

}

 

請判斷代碼是否正確,如果錯誤,請指出問題 __ a不能使用final修飾,去掉final_______(如果正確,請在橫線處填入 正確,如果錯誤,請在橫線處填入 如何解決)

 

 

17、  [ 填空題 ] 

在java中,計算字符串長度的語法是_ length() 方法、__,計算數組長度的語法是_ length屬性_,計算List長度方法是___ size()方法____

 

18、  [ 填空題 ] 

java.lang.String是否可以再有子類____不可以_____,為什么____因為String是final類______

 

19、  [ 填空題 ] 

Java中存在如下語句Double val=null;此時執行如下語句產生的情況分別是:

String.valueOf(val):______返回字符串null ________

val.toString(): ______引發空指針異常___

 

20、  [ 填空題 ] 

String str=new String(“helolo”),此時內存中字符串對象個數是_____2_______個

 

21、  [ 填空題 ] 

Java中所有類都是類__ Object ____的子類。

 

22、  [ 填空題 ] 

任何一個Java程序都默認引入了一個包,這個包的名字叫java. __ lang ___。

 

23、  [ 填空題 ] 

在java中short類型的取值范圍是____-32768 到 32767___

 

27、  [ 填空題 ] 

寫出代碼運行結果__1,2,5,10___

public static void main(String[] args) {

  int n = 10;

  for (int i = 1; i <= n; i++) {

   if (n % i != 0)

    continue;

   System.out.print(i + ",");

  }

}

28、  [ 填空題 ] 

寫出代碼運行結果___ i=10,j=40____

public class Pass {

 static int j = 20;

 public static void main(String argv[]) {

  int i = 10;

  Pass p = new Pass();

  p.amethod(i);

  System.out.println("i="+i+",j="+j);

 }

 public void amethod(int[] x) {

  x = x * 2;20

  j = j * 2;40

 }

}

29、  [ 填空題 ] 

寫出代碼運行結果____ parent child  child_____

class Parent {

 void printMe() {

  System.out.println("parent");

 }

}

class Child extends Parent {

 void printMe() {

  System.out.println("child");

 }

 void printAll() {

  super.printMe();

  this.printMe();

  printMe();

 }

}

public class T {

 public static void main(String args[]) {

  Child myC = new Child();

  myC.printAll();

 }

}

31、  [ 填空題 ] 

在java中,使用代碼定義如下:

public class Test {

    private static final int[] a = {10};

    public static void main(String[] args) {

        a[0] = 20;

    }

}

請判斷代碼是否正確,如果錯誤,請指出問題 _____正確____(如果正確,請在橫線處填入 正確,如果錯誤,請在橫線處填入 如何解決)

 

 

 

41、  [ 填空題 ] 

Java中最頂層的類是__ Object_

 

42、  [ 填空題 ] 

程序中實現多線程的方法有兩種:繼承___Thread__類和實現Runnable接口

 

 

 

 

 

第三部分:問答題

1、  [ 問答題 ] 

在Java中,數據類型有哪些,作為屬性默認值是什么?作為數組元素的初始值是什么?

 

1、整數類型(byte、short、int、long)的基本類型變量的默認值為0。

2、單精度浮點型(float)的基本類型變量的默認值為0.0f。

3、雙精度浮點型(double)的基本類型變量的默認值為0.0d。

4、字符型(char)的基本類型變量的默認為 “\u0000”。

5、布爾性的基本類型變量的默認值為 false。

6、引用類型的變量是默認值為 null。

 

2、  [ 問答題 ] 

int和Integer有什么區別

int是Java的原始數據類型,也叫基本數據類型。

 

Integer是Java中為int提供的包裝類,它是類而不是基本數據類型,它的內部其實包含一個int型的數據。

 

裝箱和拆箱

 

3、  [ 問答題 ] 

請簡述使用JDBC調用數據庫的步驟.

1.載入JDBC驅動程序

2.定義連接URL

3.建立連接

4.創建Statement對象

5.執行查詢或更新

6.結果處理

7.關閉連接

4、  [ 問答題 ] 

在Java中,中斷循環的關鍵字有什么,簡述作用

提前中斷循環,需要在循環語句塊中添加break或continue語句。

break語句用於終止某個語句塊的執行。用在循環語句體中,可以強行退出循環。

continue語句用在循環語句體中,用於終止某次循環過程,跳過循環體中continue語句下未執行的循環,開始下一次循環過程。

 

5、  [ 問答題 ] 

在Java中,進行方法調用需要注意哪些問題

形參必須注明數據類型

實參直接寫,不需要類型聲明

return只能返回一次

遇到return語句,方法結束執行,后續語句不執行

方法的返回值,必須與方法聲明中的返回值類型匹配

方法定義,不能寫在main()中

方法是不能嵌套的

 

 

6、  [ 問答題 ] 

在Java中,構造器的特征和作用

1、構造器(構造方法/構造器,Constructor)特征:

    具有與類相同的名稱

    不含返回值類型

    不能在方法中用return語句返回一個值

    一般訪問權限為public

   在一個類中,具有上述特征的方法就是構造器。

2、構造器的作用

    完成對象的創建,即完成對象的實例化

    一般使用構造器來完成對成員變量的初始化

7、  [ 問答題 ] 

在Java中,簡述垃圾回收機制原理

Java的垃圾回收機制是自動的,實際上是JVM內部運行的一個優先級比較低的后台線程。

 

垃圾回收機制僅僅作用於堆內存,與棧內存無關。

 

確定對象為垃圾需要回收的條件如下:

 

    對象的引用被賦值為null

 

   一次性使用的匿名對象

 

   超出生命周期

8、  [ 問答題 ] 

在Java中,簡述this關鍵字概念及使用this關鍵字的情況

this關鍵字:

 

    代表對象自身的引用,通常在類的方法定義中使用

 

用this關鍵字的情況:

    方法中的變量與成員變量重名

    在一個構造器中,調用其它重載的構造器

    返回當前對象的引用

 

9、  [ 問答題 ] 

說明Java中繼承的含義和規則,簡寫類繼承的語法

繼承的含義:

 

    子類繼承父類的所有屬性和方法,同時也可以增加自己的屬性和方法。

繼承的規則:

    Java中只能單繼承,也就是說每個類只能有一個直接父類;一個父類可以有多個子類。

繼承語法:

   class  子類名  extends  父類名

 

 

 

10、  [ 問答題 ] 

單例的作用是什么,使用Java編寫一個單例的程序

單例模式(singleton):保證一個類僅有一個實例,並提供一個訪問它的全局訪問點

11、  [ 問答題 ] 

在Java中,詳細說明什么是多態,多態存在的條件,多態執行的效果是什么。

多態(動態綁定、Polymorphism ):

 

    不同的對象對同一行為作出的不同響應

多態存在的三個必要條件:

    要有繼承,或實現

    要有重寫

    父類引用指向子類對象

多態執行的效果:

 

    當調用父類中被重寫的方法后,運行時創建的是哪個子類的對象,就調用該子類中重寫的那個方法

 

 

 

12、  [ 問答題 ] 

在Java中,講述子類實例化的過程中,子類創建構造器要求有什么?

在子類中創建構造器時,必須調用父類的構造器

子類可以在自己的構造器中使用super關鍵字來調用父類的構造器,代碼如下:

 

   super (參數1,參數2,…);

如果使用super關鍵字調用父類構造器,必須寫在該子類構造器的第一行

如調用的是父類中無參的構造器,則可以不寫super( )

如果子類中調用了父類無參的構造器,而父類中沒有無參構造器則系統編譯出錯

 

15、  [ 問答題 ] 

描述Set、List、Map三個接口,在保存元素時,各有什么特點

Set、List中只能存儲單列元素。--1分

 

Map存儲鍵值對。--1分

 

Set保存元素時,不允許重復、無序。--1分

 

List保存元素時,允許重復、有序。--1分

 

Map保存元素時,不允許鍵重復。--1分

16、  [ 問答題 ] 

Collection 和 Collections的區別

Collections是個java.util下的類,它包含有各種有關集合操作的靜態方法。

Collection是個java.util下的接口,它是各種集合結構的父接口

 

 

18、  [ 問答題 ] 

請詳細描述"=="和equals方法的區別

equals()方法是Object類的方法,在Object類中比較兩個對象引用是否指向同一個對象,一般都被子類方法覆蓋,不再比較引用的值   --2分

"=="是比較運算符:,當比較基本數據類型時,比較兩個數據值是否相等;當比較引用數據類型時,比較兩個引用是否指向同一個對象。--2分

 

 

19、  [ 問答題 ] 

String類與StringBuilder類的比較,StringBuffer與StringBuilder的比較。

1、String類與StringBuilder類的比較

 

  1.1)  String類與StringBuilder類相同點:

 

    1.1.1)   String與StringBuffer兩個類都完成對字符串的各種操作;

 

    1.1.2)   String類與StringBuffer類都被放到了java.lang包中

  1.2)  String類與StringBuilder類兩者的主要區別在於:

    1.2.1) String類對象中的內容初始化不可以改變

    1.2.2)StringBuffer類對象中的內容可以改變

 

2、StringBuffer與StringBuilder的比較

 

  2.1) StringBuffer與StringBuilder的相同點

 

    2.1.1) StringBuffer和StringBuilder都是長度可變的字符串。

    2.1.2) 兩者的操作基本相同。

  2.2)  兩者的主要區別在於

    2.2.1)StringBuffer類是線程安全的;

    2.2.2)StringBuilder類是線程不安全的。

    2.2.3)StringBuffer在JDK1.0中就有,而StringBuilder是在JDK5.0后才出現的。

    2.2.4)StringBuilder的一些方法實現要比StringBuffer快些。

 

 

20、  [ 問答題 ] 

在Java中,如何實現方法重載,重載規則是什么

方法的重載(overload):方法的重載就是在同一個類中允許同時存在一個以上同名的方法

 

方法重載的規則:

  方法名稱相同

  方法的參數必須不同

  參數個數不同   或

  參數類型不同

  方法的返回值類型可以相同,也可以不同

 

 

22、  [ 問答題 ] 

在Java中,類變量、局部變量、實例變量定義有什么不同,作用域都是什么

類變量:

  用static修飾的成員變量,它們在類被載入時創建,只要類存在,static變量就存在

實例變量:

  類體中聲明的成員變量,即非static的屬性,創建對象后存在

局部變量:

  方法體中聲明的變量,方法中的參數,或代碼塊中聲明的變量,都是局部變量。局部變量只在方法調用的過程中有效,方法調用結束后失效

 

23、  [ 問答題 ] 

在Java中,說明權限修飾符有哪些,及作用,並說明每個權限含義

權限修飾符作用:

 

    用來控制類的成員和類的使用范圍

 

權限修飾符有:

    類成員的訪問權限修飾符:private、default、protected、public

    類的訪問權限修飾符:public、default

 

權限含義:

 

 

24、  [ 問答題 ] 

在Java中,static關鍵字可以修飾的元素有哪些?說明靜態變量(類變量)的特點和訪問形式,說明靜態方法(類方法)的特點、訪問形式、作用和使用的注意事項,什么是靜態代碼塊,靜態代碼塊中的代碼什么時候執行,靜態代碼塊作用

static可以修飾的元素:

    屬性、方法、代碼塊

 

1)靜態變量特點:

    所有對象共享

    在類被載入時創建,只要類存在,static變量就存在

  兩種方式訪問:

    直接訪問:類名.屬性;

    實例化后訪問:對象名.屬性

 

2)靜態方法特點:

    不需要實例化,可以直接訪問

  兩種方式訪問:

     直接訪問:類名.方法名()

     實例化后訪問:對象名.方法名()

  static方法的作用:

     簡化方法的使用;

     便於訪問靜態屬性;

  注意事項

     靜態方法里只能直接訪問靜態成員,而不能直接訪問類中的非靜態成員

     靜態方法中不能使用this、super關鍵字

     靜態方法不能被非靜態方法覆蓋,靜態方法不能修飾構造器

 

3)靜態代碼塊: 一個類中由static關鍵字修飾的,不包含在任何方法體中的代碼塊

  當類被載入時,靜態代碼塊被執行,且只被執行一次

  靜態塊經常用來進行類屬性的初始化

 

 

 

 

32、  [ 問答題 ] 

Java中有幾種類型的流,JDK為每種類型的流提供了一些抽象類以供繼承,請說出他們分別是哪些類?

從傳輸單位的不同分為:字節流,字符流  --1分

從傳輸方向的不同分為:輸入流 輸出流  ----1分

對應的提供的API類包括:FileInputStream FileOutputStream FileReader FileWriter DataInputStream DataOutputStream 等等   --2分

 

33、  [ 問答題 ] 

請描述ArrayList和LinkedList的區別

Arraylist采用的是數組形式來保存對象的,這種方式將對象放在連續的位置中,所以最大的缺點就是插入刪除時非常麻煩

。 --2分

Linkedlist采用的將對象存放在獨立的空間中,而且在每個空間中還保存下一個鏈接的索引 但是缺點就是查找非常麻煩 要從第一個索引開始

 

 

35、  [ 問答題 ] 

描述HashMap和HashTable的區別

兩者都屬於Map接口的實現類,都實現了鍵值對映射。

區別在於:

HashMap 允許一個 null 鍵和多個 null 值,HashTable 不允許 null 鍵和 null 值。 --2分

 

由於HashTable諸多方法是線程同步的,因此性能上要比HashMap差 。--2分

 

 

37、  [ 問答題 ] 

描述如何創建和啟動多線程。

第一種方法:繼承Thread類,重寫run()方法。

第二種方法:實現Runnable接口,實現run()方法。

啟動:

調用start()方法來啟動線程

 

 

38、  [ 問答題 ] 

下列程序是否正確,如果正確輸出結果是:

class Parent {

public String getInfo() {

return "Parent getInfo invoked";

}

}

class Child extends Parent {

public String getInfo() {

return "Child getInfo invoked";

}

}

public class VirtualMethod {

public static void main(String[] args) {

Parent p = new Child();

System.out.println(p.getInfo());

}

}

Child getInfo invoked

 

39、  [ 問答題 ] 

下列程序是否正確,如果正確輸出結果是:

public class OverridingChild extends OverridingParent {

public void method(int a) {

System.out.println("Invocation child class");

}

public static void main(String[] args) {

OverridingChild t = new OverridingChild();

t.method();

}

}

 

class OverridingParent {

public void method() {

System.out.println("Invocation parent class");

}

}

Invocation parent class

 

41、  [ 問答題 ] 

下列程序是否正確,如果正確輸出結果是:

public class Cruncher {

void crunch(int i) {

System.out.print("int");

}

void crunch(String s) {

System.out.print("String");

}

public static void main(String args[]) {

Cruncher crun = new Cruncher();

char ch = 'p';

int c = 12;

crun.crunch(ch);

System.out.print(";");

crun.crunch(c);

}

}

 

int;int

 

 

47、  [ 問答題 ] 

請描述線程都包含哪些狀態(包含不同的阻塞狀態),並說明狀態之間如何轉換。

主要狀態包括:新建、就緒、運行、阻塞、死亡狀態。  --2分

 

其中阻塞狀態又可分為:等待阻塞、同步阻塞、其他阻塞狀態。 --1分

各狀態之間切換如下:

1.新建狀態(New):用new語句創建的線程對象處於新建狀態           --1分

2.就緒狀態(Runnable):當一個線程對象被創建后,其他線程調用它的start()方法后,該線程就進入就緒狀態,Java虛擬機會為它創建方法調用棧和程序計數器,處於這個狀態的線程位於可運行池中,等待獲得CPU 的使用權。   --1分

3.運行狀態(Running):當處於就緒狀態的線程對象獲得CPU 的使用權之后,該線程就進入運行狀態,處於這個狀態的線程對象占用CPU,執行線程體程序代碼。在並發運行環境中,如果計算機中有只有一個CPU,那么任何時刻只會有一個線程對象處於這個狀態。如果計算機有多個CPU,那么同一時刻可以讓幾個線程對象占用不同的CPU,使它們處於運行狀態。只有處於就緒狀態的線程才有機會轉到運行狀態。--1分

4.阻塞狀態(Blocked):阻塞狀態是指線程因某些原因放棄CPU,暫時停止運行。當線程處於阻塞狀態時,Java虛擬機不會給線程分配CPU,直到線程重新進入就緒狀態,它才有機會轉到運行狀態。

阻塞狀態可分為以下3種,分別是:

等待阻塞狀態:也叫位於對象等待池中的阻塞狀態(BlockedinObject’swaitpool),當正在運行的線程執行某個對象的wait()方法時,Java虛擬機就會把該線程放到這個對象的等待池中。    --1分

同步阻塞狀態:也叫位於對象鎖池中的等待狀態(BlockedinObject’slockpool),當正在運行的線程試圖獲得某個對象的同步鎖時,如果該對象的同步鎖已經被其他線程占用,Java虛擬機就會把這個線程放到這個對象的鎖池中。 --1分

其他阻塞狀態:當正在運行的線程執行了sleep()方法,或者調用了其他線程的join()方法,或者發出了I/O 請求時,就會進入這個狀態。當sleep()方法超時、join()等待線程終止或者超時、或者I/O 處理完畢時,線程重新轉入就緒狀態。 --1分

5.死亡狀態(Dead):當線程結束run()方法的執行時,就進入死亡狀態,該線程結束生命周期。線程有可能是正常執行完run()方法退出,也有可能是遇到異常而退出,不管線程正常結束還是異常結束,都不會對其他線程造成影響。--1分

 

 

第四部分:組合題

1、  [ 組合題 ] 

解決圖形問題,根據如下要求,編寫程序:

 

1)  [ 問答題 ] 

設計Shape表示圖形類,有面積屬性area、周長屬性per,顏色屬性color,有兩個構造方法(一個是默認的、一個是為顏色賦值的),還有3個抽象方法,分別是:getArea計算面積、getPer計算周長、showAll輸出所有信息。

1)  【問答題】 答案:

public abstract class Shape {   -- 抽象類

  double area;

  double per;

  char color;

  Shape(){                               

  }

  Shape(char color){     

   this.color = color;

  }

  public abstract double getArea(); 

  public abstract double getPer();    

  public abstract void showAll();    

 }

 

2)  [ 問答題 ] 

為Shape圖形類設計2個子類:

Rectangle表示矩形類,增加2個屬性,width表示長度、height表示寬度,重寫getPer、getArea和showAll三個方法,另外又增加一個構造方法(一個是默認的、一個是為高度、寬度、顏色賦值的)。

Circle表示圓類,增加1個屬性,radius表示半徑,重寫getPer、getArea和showAll三個方法,另外又增加兩個構造方法(為半徑、顏色賦值的)。

設計2個子類:

 Rectangle表示矩形類,增加兩個屬性,width表示長度、height表示寬度,重寫getPer、getArea和showAll三個方法,另外又增加一個構造方法(一個是默認的、一個是為高度、寬度、顏色賦值的)。

 參考答案:

 public class Rectangle extends Shape {    --繼承

  double width;    

  double height;

  Rectangle(){                               

  }

  Rectangle(double width, double height,char color){ 

   super(color);

   this.width = width;

   this.height = height;

  }

 

  public double getArea() {   

   area = width*height;

   return area;

  }

  public double getPer() {  

   per = 2*(width+height);

   return per;

  }

 

  public void showAll() {  

   System.out.println("長:"+width);

   System.out.println("寬:"+height);

   System.out.println("面積:"+getArea());

   System.out.println("周長:"+getPer());

   System.out.println("顏色:"+getColor());

  }

 }

 Circle表示圓類,增加1個屬性,radius表示半徑,重寫getPer、getArea和showAll三個方法,另外又增加兩個構造方法(為半徑、顏色賦值的)。

 public class Circle extends Shape {  

  final double pi = 3.14;

  double radius;

  Circle(){                          

  }

  Circle(double radius,char color){  

   super(color);

   this.radius = radius;

  }

  public double getArea() { 

   area = pi*radius*radius;

   return area;

  }

  public double getPer() { 

   per = 2*pi*radius;

   return per;

  }

 

  public void showAll() { 

   System.out.println("半徑:"+radius);

   System.out.println("面積:"+getArea());

   System.out.println("周長:"+getPer());

   System.out.println("顏色:"+getColor());

  }

}

 

3)  [ 問答題 ] 

編寫測試類,在main方法中,創建一個長度為2的Shape數組shapes,創建一個顏色為藍色,邊長為1和2的Rectangle對象為數組的第一個元素,創建一個顏色為紅色,半徑為1.2的Circle對象為數組的第二個元素,使用for..each方式遍歷該數組,調用每個元素的showAll方法得到圖形的資料。

public class PolyDemo {

  public static void main(String[] args) {

 

    Shape[] shapes = new Shape[2];

    shapes[0] = new Rectangle(1,2,'藍');  

    shapes[1] = new Circle(1.2,'紅');

 

    for(Shape s : shapes){

      s.showAll();                           

    }                           

  }

}

 

 

2、  [ 組合題 ] 

根據如下要求,編寫程序:

 

1)  [ 問答題 ] 

(1)創建一個抽象員工類ColaEmployee,包含如下屬性和方法 屬性:員工的姓名(字符串類型);員工的生日月份(整型) 抽象方法:getSalary(int month)。

public abstract class ColaEmployee { String name; int month; ColaEmployee() { } ColaEmployee(String name, int month) { this.name = name; this.month = month; } abstract double getSalary(int month); }

 

2)  [ 問答題 ] 

(2)創建ColaEmployee的三個子類SalariedEmployee (拿固定工資的員工)、HourlyEmployee(拿小時工資的員工)、SalesEmployee(按月銷售額和提成率拿工資的員工),並在各類中分別覆蓋父類的抽象方法getSalary(),其中每個類中的方法實現說明如下: SalariedEmployee類:拿固定工資的員工。參數:固定工資 HourlyEmployee:按小時拿工資的員工,每月工作超出160 小時的部分按照1.5 倍工資發放。參數:每小時的工資(整型),每月工作的小時數(整型)。 SalesEmployee:按月銷售額和提成率拿工資的員工,參數:月銷售額(整型),提成率(浮點型)

public class SalariedEmployee extends ColaEmployee {

              double salary;

              SalariedEmployee() {

              }

              SalariedEmployee(String name, int month, double salary) {

                     super(name, month);

                     this.salary = salary;

              }

              @Override

              double getSalary(int month) {

                     return salary;

              }

}

public class HourlyEmployee extends ColaEmployee {

              int hourSalary;

              int hour;

              HourlyEmployee() {

              }

              HourlyEmployee(String name, int month, int hourSalary, int hour) {

                     super(name, month);

                     this.hourSalary = hourSalary;

                     this.hour = hour;

              }

              @Override

              double getSalary(int month) {

                     double salary = 0;

                     if (hour <= 160) {

                            salary = hour * hourSalary;

                     } else {

                            salary = 160 * hourSalary + (hour - 160) * hourSalary * 1.5;

                     }

                     return salary;

              }

}

public class SalesEmployee extends ColaEmployee {

       int monthSalary;

       float rate;

       SalesEmployee() {

       }

       ========101TEST========SalesEmployee========101TEST========(String name, int month, int monthSalary, float rate) {

              super(name, month);

              this.monthSalary = monthSalary;

              this.rate = rate;

       }

       @Override

       double getSalary(int month) {

              double salary = monthSalary * rate;

              return salary;

       }

}

 

3)  [ 問答題 ] 

(3)創建一個測試類,包含兩個方法,分別為: payWage(ColaEmployee emp,int month):計算不同類型員工某個月工資。 主方法main(String[] args):在主方法中分別創建一個拿固定工資的員工、拿小時工資的員工、按月銷售額和提成率拿工資員工的對象,並把這三個對象放入一個ColaEmployee類型數組中,然后遍歷數組,分別計算這個數組中每個員工某個月的工資。

public class TestCompany {

       public static void main(String[] args) {

              // TODO Auto-generated method stub

              ColaEmployee[] a = new ColaEmployee[3];

              a[0]=new SalariedEmployee("大川",2,3500);

              a[1]=new HourlyEmployee("海鷗",2,20,200);

              a[2]=new SalesEmployee("abc",5,30000,0.1f);

              for(ColaEmployee c:a){

                     payWage(c,2);

              }

       }

       public static void payWage(ColaEmployee emp,int month){

              System.out.println(emp.name+"的工資:"+emp.getSalary(month));

       }

}

第五部分:編程題

1、  [ 編程題 ] 

判斷101-200之間有多少個素數,並輸出所有素數。(素數(質數)就是除了1和它本身以外,沒有其他的數可以被它整除)

package com.neuedu;

 

public class PrimeNumber

{

       public static void main(String[] args)

       {

              //for循環遍歷101-200

              for(int i = 101; i < 200; i++)

              {

                     boolean b = false;

 

                     //內層循環判斷i是否為素數

                     for(int j = 2; j <= i-1; j++)

                     {

                            //除了1和它本身以外,如果i可以整除其他數就b = false

                            if( i % j == 0 )

                            {

                                   b = false;

                                   break;

                            }

                            //如果不能整除就b = true

                            else

                            {  

                                   b = true;

                            }

                     }

                     //如果b = true就打印出來

                     if(b == true)

                     {

                            System.out.println(i);

                     }

              }

       }

}

 

 

2、  [ 編程題 ] 

打印出100-999所有的“水仙花數”。

 

思路:

 

水仙花數是指一個 n 位數 ( n≥3 ),它的每個位上的數字的 n 次冪之和等於它本身。

 

(例如:1^3 + 5^3+ 3^3 = 153)

package com.neuedu;

 

public class NarcissisticNumber

{

    public static void main(String[] args)

    {

        int b, s, g;

        for(int i = 100; i < 1000; i++) 

        {

            g = i % 10;                //g存個位數 

            s = ( i / 10 ) % 10;       //s存十位數 

            b = i / 100;               //b存百位數         

            //如果它的個十百位數字的3次冪之和等於它本身則打出

            if( i == ( (g*g*g) + (s*s*s) + (b*b*b) ) ) 

            {

                System.out.println(i + "是水仙花數");

            }

        }

    }

}

 

3、  [ 編程題 ] 

現有如下HashMap:

Map<String,String> data=new HashMap<>();

data.put("empno", "10001");

data.put("ename", "scott");

data.put("job", "添坑隊長");

請解析出每個鍵及其對應的值,並打印到控制台

參考答案:

Map<String,String> data=new HashMap<>();  

data.put("empno", "10001");

data.put("ename", "scott");

data.put("job", "添坑隊長");

 

Set<Map.Entry<String, String>> entrySet=data.entrySet(); //2分

for(Map.Entry<String, String> entry:entrySet) //1分

{

       System.out.println(entry.getKey()+" : "+entry.getValue());//2分

}

 

4、  [ 編程題 ] 

編寫一個程序,從文件(文件名鍵盤輸入)得到該文件保存的10個正整數,並輸出這10個整數的最大值和最小值。

public   class   GetMaxMin{

       public static void main(String[] args) throws Exception {

              String file = new Scanner(System.in);

             

              int  i, n=10, max=0, min=0 ,  temp = 0;

              try{

                     Reader in = new FileReader(file);

                     BufferedReader br=new BufferedReader(new  InputStreamReader(in);

                     max=min=Integer.parseInt(br.readLine( ));

              } catch ( Exception  e ) {

                     System.out.println("文件錯誤");

              }

 

              for  ( i = 2 ; i <= n ; i ++ )  {

                     try {

                            BufferedReader br=new BufferedReader(new  InputStreamReader(System.in));

                            temp=Integer.parseInt(br.readLine( ));    

                            if  (temp > max ) max=temp;

                            if  (temp < min) min=temp;

                     }catch( IOException  e ) { } ;

              }

              System.out.println("max="+max+"\nmin="+min);

       }

}

 

5、  [ 編程題 ] 

有1、2、3、4個數字,能組成多少個互不相同且無重復數字的三位數?都是多少?

提示:可填在百位、十位、個位的數字都是1、2、3、4。組成所有的排列后再去 掉不滿足條件的排列。

package com.neuedu;

public class EleventhNumberRange {

public static void main(String[] args) {

   int count = 0;

   for(int x=1; x<5; x++) {

    for(int y=1; y<5; y++) {

     for(int z=1; z<5; z++) {

      if(x != y && y != z && x != z) {

       count ++;

       System.out.print(x*100 + y*10 + z + "   ");

       if(count % 4 == 0) {

        System.out.println();

       }

      }

     }

    }

   }

   System.out.println("共有" + count + "個三位數");

 }

}

 

 

7、  [ 編程題 ] 

請編寫一個方法,計算兩個日期之間的實際天數

要求:

 

1.日期參數以字符串類型接收。

2.實際天數包含開始日期和結束日期。如:

Date1:”2017-01-01”

Date2:”2017-01-04”

實際天數為4天

public static void date(String bdate,String edate) throws Exception{//方法參數正確1分

       DateFormat df=new SimpleDateFormat("yyyy-MM-dd");   //1分

 

       Date date1=df.parse(bdate);   //調用parse方法1分

       Date date2=df.parse(edate);

 

       long btime=date1.getTime();  //調用getTime方法1分

       long etime=date2.getTime();

       long time=etime-btime;

 

       long day=time/1000/60/60/24+1;//  1分

       System.out.println(day);

}

 

 

8、  [ 編程題 ] 

寫一個方法,輸入一個文件名和一個字符串,統計這個字符串在這個文件中出現的次數.

public int countWords(String file, String find) throws Exception

{

       int count = 0;

       Reader in = new FileReader(file);         --1分

       int c;

       while ((c = in.read()) != -1) {                --2分

              while (c == find.charAt(0)) {            --2分

                     for (int i = 1; i < find.length(); i++) {       --2分

                            c = in.read();                           --1分

                            if (c != find.charAt(i)) break;           --1分

                            if (i == find.length() – 1) count++;       --2分

                     }

              }

       }

       return count;

}

 

 

 

9、  [ 編程題 ] 

使用for循環,求1到100之間所有能被3整除的整數的和。

public  static  void  main(String[] args) {

 int i;

 int sum = 0;

 for (i = 1; i <= 100; i++) {         --4分  

  if (i % 3 == 0) {       --4分  

   sum += i;                   --2分  

  }

 }

System.out.println("sum:" + sum);

}

題目解析:

 

10、  [ 編程題 ] 

在一個有8個整數(18,25,7,36,13,2,89,63)的數組中找出其中最大的數及其下標。

public static void main(String[] args) {

  int[] a = { 18, 25, 7, 36, 13, 2, 89, 63 }; //-----------2分

  int x = 0;                                  //-----------1分

  int max = a[0];                             //-----------1分

  for (int i = 1; i < a.length - 1; i++) {  //-----------2分

   if (a[i] > max) {                        //-----------2分

    max = a[i];                            //-----------1分

    x = i;                                //-----------1分

   }

  }

  System.out.println("最大元素:" + max + ";下標:" + x);

}

 

11、  [ 組合題 ] 

根據如下要求,編寫程序:

1)  [ 問答題 ] 

(1)定義一個名為Card的撲克牌類,該類有兩個private訪問權限的字符串屬性face和suit,分別用來描述一張牌的牌面值(如:A、K、Q、J、10、9、…、3、2等)和花色(如:“黑桃”、“紅桃”、“梅花”和“方塊”)。

 

(2)定義Card類中的public訪問權限的構造方法,為類中的屬性賦值。

 

(3)定義protected訪問權限的方法getFace(),得到撲克牌的牌面值。

 

(4)定義protected訪問權限的方法getSuit(),得到撲克牌的花色。

 

(5)定義方法toString(),返回表示撲克牌的花色和牌面值字符串(如“紅桃A”、“梅花10”等)。

1)  【問答題】 答案: public class Card {

              private String face;

              private String suit;                             //-----------1分

              public Card(String face,String suit){ //-----------1分

                     this.face=face;

                     this.suit=suit;                                     //-----------1分

              }

              protected String getFace() {                //-----------1分

                     return this.face;                                 //-----------1分

              }

              protected String getSuit() {                 //-----------1分

                     return this.suit;                                  //-----------1分

              }

              public String toString(){                      //-----------1分

                     return this.suit+this.face;             //-----------1分

              }

}

 

 

2)  [ 問答題 ] 

(6)編寫main方法,在其中定義字符串數組f和s,分別表示撲克牌的牌面值和花色;定義一個數組存儲52個Card對象,並為這些對象分別賦值。

2)  【問答題】 答案: public static void main(String[] args) {//-----------1分

       String[] f = { "A", "K", "Q", "J", "10", "9", "8", "7", "6", "5", "4", "3", "2" };

       String[] s = { "黑桃", "紅桃", "梅花", "方塊" };//-----------1分

       Card[] card = new Card[52]; //-----------1分

       for (int j = 0; j < s.length; j++) {//-----------1分

              for (int k = 0; k < f.length; k++) {//-----------1分

                     card[k * 4 + j] = new Card(f[k], s[j]); //-----------1分

              }

       }

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM