一、 填空題
- 在Java中每個Java基本類型在java.lang包中都在一個相應的包裝類,把基本類型數據轉換為對象,其中包裝類Integer是___Number__的直接子類。
- 包裝類Integer的靜態方法可以將字符串類型的數字”123”轉換成基本整型變量n,其實現語句是:__ Integer.parseInt(“123”)__。
- 在Java中使用java.lang包中的__ StringBuffer/StringBuilder 類來創建一個字符串對象,它代表一個字符序列可變的字符串,可以通過相應的方法改變這個字符串對象的字符序列。
- StringBuilder類是StringBuffer類的替代類,兩者的共同點是都是可變長度字符串,其中線程安全的類是__StringBuffer____。
- DateFormat類可以實現字符串和日期類型之間的格式轉換,其中將日期類型轉換為指定的字符串格式的方法名是__Format__。
- 使用Math.random( )返回帶正號的 double值,該值大於等於0.0且小於1.0。使用該函數生成[30,60]之間的隨機整數的語句是___(int)(Math.random()*31)+30 。
- JDK1.5后提供了___enum___關鍵字,用以定義枚舉類。枚舉類是一種特殊的類,可以有自己的屬性、方法和構造方法。
- File對象調用方法 mkdir() 創建一個目錄,不包括所有必需但不存在的父目錄,當且僅當已創建目錄時,返回true;否則返回false。
- 將字符串”123”轉換成基本數據類型 Interger.parseInt(iStr) 。
- String類的trim()方法作用是 去除字符串首尾的空格 。
- "hamburger".substring(4, 8) 返回的結果是 urge 。
- String s = "a"+”b”+”c” 創建 5 個對象。
- System.currentTimeMillis()表示獲得的是自1970-1-01 00:00:00.000 到當前時刻的時間距離,類型為long 。
二、 選擇題
| 1. |
以下選項中關於int和Integer的說法錯誤的是( BD )。(選擇二項) |
|
|
|
|
|
|
|
A. |
int是基本數據類型,Integer是int的包裝類,是引用數據類型 |
|
|
B. |
int的默認值是0,Integer的默認值也是0 |
|
|
C. |
Integer可以封裝了屬性和方法提供更多的功能 |
|
|
D. |
Integer i=5;該語句在JDK1.5之后可以正確執行,使用了自動拆箱功能 |
| 2. |
分析如下Java代碼,該程序編譯后的運行結果是( D )。(選擇一項) |
|
|
|
public static void main(String[ ] args) { String str=null; str.concat("abc"); str.concat("def"); System.out.println(str); } |
|
|
|
|
|
|
|
A |
Null |
|
|
B. |
Abcdef |
|
|
C. |
編譯錯誤 |
|
|
D. |
運行時出現NullPointerException異常 |
| 3. |
以下關於String類的代碼的執行結果是( B )。(選擇一項) |
|
|
|
public class Test2 { public static void main(String args[]) { String s1 = new String("bjsxt"); String s2 = new String("bjsxt"); if (s1 == s2) System.out.println("s1 == s2"); if (s1.equals(s2)) System.out.println("s1.equals(s2)"); } } |
|
|
|
|
|
|
|
A. |
s1 == s2 |
|
|
B. |
s1.equals(s2) |
|
|
C. |
s1 == s2 s1.equals(s2) |
|
|
D. |
以上都不對 |
| 4. |
以下關於StringBuffer類的代碼的執行結果是( D )。(選擇一項) |
|
|
|
public class TestStringBuffer { public static void main(String args[]) { StringBuffer a = new StringBuffer("A"); StringBuffer b = new StringBuffer("B"); mb_operate(a, b); System.out.println(a + "." + b); } static void mb_operate(StringBuffer x, StringBuffer y) { x.append(y); y = x; } } |
|
|
|
|
|
|
|
A. |
A.B |
|
|
B. |
A.A |
|
|
C. |
AB.AB |
|
|
D. |
AB.B |
| 5. |
給定如下Java代碼,編譯運行的結果是( C )。(選擇一項) |
|
|
|
public static void main(String []args){ String s1= new String("pb_java_OOP_T5"); String s2 = s1.substring(s1.lastIndexOf("_")); System.out.println("s2="+s2); }
|
|
|
|
|
|
|
|
A |
s2=_java_OOP_T5 |
|
|
B. |
s2=_OOP_T5 |
|
|
C. |
s2=_T5 |
|
|
D. |
編譯出錯 |
| 6. |
對於語句String s="my name is kitty",以下選項中可以從其中截取”kitty”的是( AB )(選擇二項) |
|
|
|
|
|
|
|
A |
s.substring(11,16) |
|
|
B. |
s.substring(11) |
|
|
C. |
s.substring(12,17) |
|
|
D. |
s.substring(12,16) |
| 7. |
分析下面的Java程序段,編譯運行后的輸出結果是( D )。(選擇一項) |
|
|
|
public class Test { public void changeString(StringBuffer sb) { sb.append("stringbuffer2"); } public static void main(String[] args) { Test a = new Test(); StringBuffer sb = new StringBuffer("stringbuffer1"); a.changeString(sb); System.out.println("sb = " + sb); } } |
|
|
|
|
|
|
|
A |
sb = stringbuffer2stringbuffer1 |
|
|
B. |
sb = stringbuffer1 |
|
|
C. |
sb = stringbuffer2 |
|
|
D. |
sb = stringbuffer1stringbuffer2 |
| 8. |
給定如下Java代碼,編譯運行的結果是( A )。(選擇一項) |
|
|
|
public static void main(String[] args) { StringBuffer sbf = new StringBuffer("java"); StringBuffer sbf1 = sbf.append(",C#"); String sbf2 = sbf + ",C#"; System.out.print(sbf.equals(sbf1)); System.out.println(sbf2.equals(sbf)); } |
|
|
|
|
|
|
|
A |
true false |
|
|
B. |
true true |
|
|
C. |
false false |
|
|
D. |
false true |
| 9. |
分析下面的Java程序,編譯運行后的輸出結果是( B )。(選擇一項) |
|
|
|
public class Example { String str = new String("good"); char[] ch = { 'a', 'b', 'c' }; public static void main(String args[]) { Example ex = new Example( ); ex.change(ex.str, ex.ch); System.out.print(ex.str + "and"); System.out.print(ex.ch); } public void change(String str, char ch[]) { str = "test ok"; ch[0] = 'g'; } } |
|
|
|
|
|
|
|
A |
Goodandabc |
|
|
B. |
Goodandgbc |
|
|
C. |
test okandabc |
|
|
D. |
test okandgbc |
| 10. |
以下程序片段中可以正常編譯的是( C )。(選擇一項) |
|
|
|
|
|
|
|
A |
String s = "Gone with the wind"; String k = s+t; String t = "good"; |
|
|
B. |
String s = "Gone with the wind"; String t; t = s[3]+"one"; |
|
|
C. |
String s = "Gone with the wind"; String stanfard = s.toUpperCase(); |
|
|
D. |
String s = "home directory"; String t = s – "directory"; |
| 11. |
File類中的( B )方法可以用來判斷文件或目錄是否存在。(選擇一項) |
|
|
|
|
|
|
|
A |
exist() |
|
|
B. |
exists() |
|
|
C. |
fileExist() |
|
|
D. |
fileExists() |
| 12. |
在Java中,以下File類的方法中( C )用來判斷是否是目錄。(選擇一項) |
|
|
|
|
|
|
|
A |
isFile( ) |
|
|
B. |
getFile( ) |
|
|
C. |
isDirectory( ) |
|
|
D. |
getPath( ) |
| 13. |
分析下面的Java程序,編譯運行后的輸出結果是( B )。(選擇一項) |
|
|
|
public class Example { String str = new String("good"); char[] ch = { 'a', 'b', 'c' }; public static void main(String args[]) { Example ex = new Example( ); ex.change(ex.str, ex.ch); System.out.print(ex.str + "and"); System.out.print(ex.ch); } public void change(String str, char ch[]) { str = "test ok"; ch[0] = 'g'; } } |
|
|
|
|
|
|
|
A |
Goodandabc |
|
|
B. |
Goodandgbc |
|
|
C. |
test okandabc |
|
|
D. |
test okandgbc |
| 14. |
分析下面代碼的結果( A )。(選擇一項) |
|
|
|
public static void main(String args[]) { String s = "abc"; String ss = "abc"; String s3 = "abc" + "def"; // 此處編譯器做了優化! String s4 = "abcdef"; String s5 = ss + "def"; String s2 = new String("abc"); System.out.println(s == ss); System.out.println(s3 == s4); System.out.println(s4 == s5); System.out.println(s4.equals(s5)); } |
|
|
|
|
|
|
|
A |
true true false true |
|
|
B. |
true true true false |
|
|
C. |
true false true true |
|
|
D. |
false true false true |
三、 判斷題
- 方法Integer.parseInt()的作用是將一個整數轉變成String。( F )
- JK1.5后提供了自動裝箱和自動拆箱功能,從而可以實現基本數據類型和對應包裝類之間的自動轉換,簡化了操作。( T )
- 執行語句String str="abcedf"; int len=str.length; 后,能夠得到字符串的長度是6。( F )
- 運算符“==”用於比較引用時,如果兩個引用指向內存同一個對象,則返回true。( T )
- java.sql.Date類和java.util.Date類的關系是前者是后者的父類,其中前者沒有提供無參數構造方法,而后者可以提供無參數構造方法來獲取當前時間。( F )
- 求x的y次方,其表達式為:Math.pow(x,y)。( T )
- 一個File對象可以代表一個文件或目錄,它可以獲取文件和目錄屬性,也可以訪問文件內容。( F )
- 在使用File類中的delete( )方法時,刪除時可能文件不存在,所以我們最好先判斷一下是否存在,不然會出現NullPointerException異常。( F )
- Date d = new Date()表示的是當前時間。( T )
- 遞歸可以完全使用迭代來代替。( T )
四、 簡答題
- 自動裝箱和自動拆箱
- String、StringBuffer、StringBuilder區別與聯系。
- String str=”bjsxt”;和String str= new String(“bjsxt”);的區別
- java.sql.Date和java.util.Date的聯系和區別
- 為什么要使用包裝類,包裝類的作用。
- File類的方法mkdir跟mkdirs,有什么區別?
前一個是創建一個文件夾,后一個是把所有的都創建
- 簡述枚舉的使用。
- 遞歸算法的優點是什么?缺點是什么?
五、 編碼題
- 驗證鍵盤輸入的用戶名不能為空,長度大於6,不能有數字。
提示:使用字符串String類的相關方法完成
1 public class TestCheckUserName 2 { 3 public static void main(String[] args) 4 { 5 //給出用戶名
6 Scanner input = new Scanner(System.in); 7 System.out.print("請輸入用戶名:"); 8 String userName = input.nextLine(); 9 //驗證表單輸入的用戶名不能為空,
10 if (userName == null || "".equals(userName)) 11 { 12 System.out.println("用戶名不能為空"); 13 return; 14 } 15 //長度大於6,
16 if (userName.length() <= 6) 17 { 18 System.out.println("用戶名長度必須大於6個字符"); 19 return; 20 } 21 //不能有數字
22 for (int i = 0; i < userName.length(); i++) 23 { 24 //取出每個字符
25 char ch = userName.charAt(i);//'3' '4' 26 //判斷每個字符是否是數字 27 //if(ch <='9' && ch >='0'){
28 if (ch <= 57 && ch >= 48) 29 { 30 System.out.println("用戶名不能有數字"); 31 //break;//退出for循環
32 return;//退出main方法
33 } 34 } 35 System.out.println("用戶名符合要求"); 36 } 37 }
2.接收從鍵盤輸入的字符串格式的年齡,分數和入學時間,轉換為整數、浮點數、日期類型,並在控制台輸出。
提示:使用包裝類Integer、Double和日期轉換類DateFormat實現
1 public class TestStringConvert 2 { 3 public static void main(String[] args) 4 { 5 //從鍵盤輸入字符串形式的年齡,分數和入學時間
6 Scanner input = new Scanner(System.in); 7 System.out.print("請輸入年齡:"); 8 String sage = input.nextLine(); 9 System.out.print("請輸入分數:"); 10 String sscore = input.nextLine(); 11 System.out.print("請輸入日期(yyyy/MM/dd):"); 12 String sdate = input.nextLine(); 13 //年齡轉換String----int
14 int age = 0; 15 age = Integer.parseInt(sage); 16 //分數轉換 String ---double
17 double score = 0.0; 18 score = Double.parseDouble(sscore); 19 //入學時間的轉換String ---Date
20 Date enterDate = null; 21 DateFormat sdf = new SimpleDateFormat("yyyy/MM/dd"); 22 try
23 { 24 enterDate = sdf.parse(sdate); 25 } catch (ParseException e) 26 { 27 e.printStackTrace(); 28 //return;
29 } 30 //輸出結果
31 System.out.println(age + " " + score + " " + enterDate); 32 } 33 }
3.根據交通信號燈顏色決定汽車停車、行駛和慢行
提示:使用枚舉實現
1 //定義信號燈枚舉
2 public enum Signal 3 { 4 紅, 綠, 黃 5 } 6 public class TestSignal 7 { 8 public static void main(String[] args) 9 { 10 //指定信號燈顏色
11 Signal s = Signal.紅; 12 //根據顏色決定汽車下步行動
13 switch (s) 14 { 15 case 紅: 16 System.out.println("停車"); 17 break; 18 case 綠: 19 System.out.println("行駛"); 20 break; 21 case 黃: 22 System.out.println("慢行"); 23 break; 24 } 25 } 26 }//定義信號燈枚舉
27 public enum Signal 28 { 29 紅, 綠, 黃 30 } 31 public class TestSignal 32 { 33 public static void main(String[] args) 34 { 35 //指定信號燈顏色
36 Signal s = Signal.紅; 37 //根據顏色決定汽車下步行動
38 switch (s) 39 { 40 case 紅: 41 System.out.println("停車"); 42 break; 43 case 綠: 44 System.out.println("行駛"); 45 break; 46 case 黃: 47 System.out.println("慢行"); 48 break; 49 } 50 } 51 }
4.以樹狀結構輸出計算機某個指定文件夾下的所有的文件和子文件夾名稱。
提示:使用File的方法,並結合遞歸實現
1 public class TestDirectory 2 { 3 public static void main(String[] args) 4 { 5 File file = new File("d:/101sxt"); 6 showTree(file, 1); 7 } 8 public static void showTree(File file, int level) 9 { 10 //獲取當前目錄下的文件和子文件夾(僅當前層次)
11 File[] files = file.listFiles(); 12 //輸出當前目錄下的文件和子文件夾(僅當前層次)
13 for (File f : files) 14 { 15 //根據級別level輸出指定個數的-
16 for (int i = 0; i < level; i++) 17 { 18 System.out.print("-"); 19 } 20 //輸出當前的一個文件或文件夾
21 if (f.isDirectory()) 22 { 23 System.out.println("[" + f.getName() + "]"); 24 //遞歸
25 showTree(f, level + 1); 26 } else
27 { 28 System.out.println(f.getName() + "\t" + f.length()); 29 } 30 } 31 } 32 }
4.將1990年3月3日通過Calendar來表示,並得出這天是該年的第幾天?將該日期增加35天,是哪一天?使用代碼來說明。
1 public class Test 2 { 3
4 public static void main(String[] args) 5 { 6 Calendar calendar = Calendar.getInstance(); 7 //設置年月日
8 calendar.set(1990, 3, 3); 9 //得到該年的第幾天
10 int dayOfYear = calendar.get(Calendar.DAY_OF_YEAR); 11 System.out.println(dayOfYear); 12 //增加35天
13 calendar.add(Calendar.DAY_OF_YEAR, 35); 14 //得到date對象
15 Date date = calendar.getTime(); 16 System.out.println(date.toLocaleString()); 17 } 18 } 19 //或者采用如下代碼實現
20 public static void main(String[] args) throws ParseException 21 { 22 Calendar ca = Calendar.getInstance();//創建一個日期實例
23 DateFormat df = new SimpleDateFormat("yyyy年MM月dd日"); 24 Date date = df.parse("1990年3月3日"); 25 ca.setTime(date );//實例化一個日期
26 System.out.println(ca.get(Calendar.DAY_OF_YEAR)); ca.add(Calendar.DAY_OF_YEAR, 35);//加上35天
27 System.out.println(df.format(ca.getTime()));//獲取那一天
28 }
六、 可選題
1.生成10個[10,23)之間的隨機整數
提示:分別使用Math.random()和Random類的nextDouble()或nextInt()實現
1 public class TestRandom 2 { 3 public static void main(String[] args) 4 { 5 //實現1:生成10個[10,23)之間的隨機整數
6 for (int i = 0; i < 10; i++) 7 { 8 int r = (int) (Math.random() * 13) + 10; 9 System.out.print(r + "\t"); 10 } 11 System.out.println(); 12 Random rand = new Random(); 13 //實現2:生成10個[10,23)之間的隨機整數
14 for (int i = 0; i < 10; i++) 15 { 16 int r = (int) (rand.nextDouble() * 13) + 10; 17 System.out.print(r + "\t"); 18 } 19 System.out.println(); 20 //實現3:生成10個[10,23)之間的隨機整數
21 for (int i = 0; i <= 10; i++) 22 { 23 int r = rand.nextInt(13) + 10;//[0,13)+10---[10,23)
24 System.out.print(r + "\t"); 25 } 26 System.out.println(); 27 } 28 }
2.手動定義一個枚舉,表示十二個月的英文月份。
1 public enum Month 2 { 3 January, february, March, April, May, June, 4 July, August, September, October, November, December 5 }
3.打印某個月份的可視化日歷
提示:使用DateFormat、Calendar類實現功能
1 public class VisualCalendar2 2 { 3 public static void main(String[] args) throws ParseException 4 { 5 //從鍵盤輸入指定格式的字符串 (Scanner) 2015-12-3
6 System.out.println("請輸入日期(按照格式:2030-3-10):"); 7 Scanner scanner = new Scanner(System.in); 8 String temp = scanner.nextLine(); 9 //把輸入的字符串變成Date(DateFormat)
10 DateFormat format = new SimpleDateFormat("yyyy-MM-dd"); 11 Date date = format.parse(temp); 12 //把Date變成Calendar(setTime())
13 Calendar calendar = Calendar.getInstance(); 14 calendar.setTime(date); 15 //取出日歷的日信息
16 int dateOfMonth = calendar.get(Calendar.DATE); 17 //輸出日歷頭信息 日 一 二 三 四 五 六
18 System.out.println("日\t一\t二\t三\t四\t五\t六"); 19 //輸出該月1日之前的空白( 要知道該月1日是星期幾)
20 calendar.set(Calendar.DATE, 1); 21 int weekDay = calendar.get(Calendar.DAY_OF_WEEK); 22 for (int i = 1; i < weekDay; i++) 23 { 24 System.out.print('\t'); 25 } 26 //輸出該月的日歷從1到最后一天(更多細節)
27 int maxDay = calendar.getActualMaximum(Calendar.DATE); 28 for (int i = 1; i <= maxDay; i++) 29 { 30 //如果是當天,輸出*
31 if (i == dateOfMonth) 32 { 33 System.out.print("*"); 34 } 35 //輸出每一天
36 System.out.print(i + "\t"); 37 //如果是周六換行
38 weekDay = calendar.get(Calendar.DAY_OF_WEEK); 39 if (weekDay == 7) 40 { 41 System.out.println(); 42 } 43 //日歷變成下一天!!!!!!
44 calendar.add(Calendar.DATE, 1); 45 } 46 } 47 }
