Java常用工具類題庫
一.填空題
- 在Java中每個(gè)Java基本類型在java.lang包中都在一個(gè)相應(yīng)的包裝類郑趁,把基本類型數(shù)據(jù)轉(zhuǎn)換為對(duì)象,其中包裝類Integer是_Number的直接子類渤滞。
- 包裝類Integer的靜態(tài)方法可以將字符串類型的數(shù)字”123”轉(zhuǎn)換成基本整型變量n,其實(shí)現(xiàn)語句是:__ Integer.parseInt(“123”)__艳汽。
- 在Java中使用java.lang包中的__ StringBuffer/StringBuilder 類來創(chuàng)建一個(gè)字符串對(duì)象壶愤,它代表一個(gè)字符序列可變的字符串,可以通過相應(yīng)的方法改變這個(gè)字符串對(duì)象的字符序列乔夯。
- StringBuilder類是StringBuffer類的替代類砖织,兩者的共同點(diǎn)是都是可變長(zhǎng)度字符串,其中線程安全的類是__StringBuffer____驯嘱。
- DateFormat類可以實(shí)現(xiàn)字符串和日期類型之間的格式轉(zhuǎn)換镶苞,其中將日期類型轉(zhuǎn)換為指定的字符串格式的方法名是Format喳坠。
- 使用Math.random( )返回帶正號(hào)的 double值鞠评,該值大于等于0.0且小于1.0。使用該函數(shù)生成[30,60]之間的隨機(jī)整數(shù)的語句是___(int)(Math.random()*31)+30 壕鹉。
- JDK1.5后提供了enum關(guān)鍵字剃幌,用以定義枚舉類。枚舉類是一種特殊的類晾浴,可以有自己的屬性负乡、方法和構(gòu)造方法。
- File對(duì)象調(diào)用方法 mkdir() 創(chuàng)建一個(gè)目錄脊凰,不包括所有必需但不存在的父目錄抖棘,當(dāng)且僅當(dāng)已創(chuàng)建目錄時(shí),返回true狸涌;否則返回false切省。
- 將字符串”123”轉(zhuǎn)換成基本數(shù)據(jù)類型 Interger.parseInt(iStr) 。
- String類的trim()方法作用是 去除字符串首尾的空格 帕胆。
- "hamburger".substring(4, 8) 返回的結(jié)果是 urge 朝捆。
- String s = "a"+”b”+”c” 創(chuàng)建 5 個(gè)對(duì)象。
- System.currentTimeMillis()表示獲得的是自1970-1-01 00:00:00.000 到當(dāng)前時(shí)刻的時(shí)間距離,類型為long
二懒豹、 選擇題
1.
以下選項(xiàng)中關(guān)于int和Integer的說法錯(cuò)誤的是( BD )芙盘。(選擇二項(xiàng))
A.
int是基本數(shù)據(jù)類型驯用,Integer是int的包裝類,是引用數(shù)據(jù)類型
B.
int的默認(rèn)值是0儒老,Integer的默認(rèn)值也是0
C.
Integer可以封裝了屬性和方法提供更多的功能
D.
Integer i=5;該語句在JDK1.5之后可以正確執(zhí)行蝴乔,使用了自動(dòng)拆箱功能
2.
分析如下Java代碼,該程序編譯后的運(yùn)行結(jié)果是( D )驮樊。(選擇一項(xiàng))
public static void main(String[ ] args) {
String str=null;
str.concat("abc");
str.concat("def");
System.out.println(str);
}
A
Null
B.
Abcdef
C.
編譯錯(cuò)誤
D.
運(yùn)行時(shí)出現(xiàn)NullPointerException異常
3.
以下關(guān)于String類的代碼的執(zhí)行結(jié)果是( B )淘这。(選擇一項(xiàng))
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.
以上都不對(duì)
4.
以下關(guān)于StringBuffer類的代碼的執(zhí)行結(jié)果是( D )。(選擇一項(xiàng))
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代碼巩剖,編譯運(yùn)行的結(jié)果是( C )铝穷。(選擇一項(xiàng))
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.
編譯出錯(cuò)
6.
對(duì)于語句String s="my name is kitty",以下選項(xiàng)中可以從其中截取”kitty”的是( AB )(選擇二項(xiàng))
A
s.substring(11,16)
B.
s.substring(11)
C.
s.substring(12,17)
D.
s.substring(12,16)
7.
分析下面的Java程序段佳魔,編譯運(yùn)行后的輸出結(jié)果是( D )曙聂。(選擇一項(xiàng))
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代碼,編譯運(yùn)行的結(jié)果是( A )鞠鲜。(選擇一項(xiàng))
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程序宁脊,編譯運(yùn)行后的輸出結(jié)果是( B )。(選擇一項(xiàng))
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 )贤姆。(選擇一項(xiàng))
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 )方法可以用來判斷文件或目錄是否存在榆苞。(選擇一項(xiàng))
A
exist()
B.
exists()
C.
fileExist()
D.
fileExists()
12.
在Java中,以下File類的方法中( C )用來判斷是否是目錄霞捡。(選擇一項(xiàng))
A
isFile( )
B.
getFile( )
C.
isDirectory( )
D.
getPath( )
13.
分析下面的Java程序坐漏,編譯運(yùn)行后的輸出結(jié)果是( B )。(選擇一項(xiàng))
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.
分析下面代碼的結(jié)果( A )碧信。(選擇一項(xiàng))
public static void main(String args[]) {
String s = "abc";
String ss = "abc";
String s3 = "abc" + "def"; // 此處編譯器做了優(yōu)化!
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
三赊琳、 判斷題
1.方法Integer.parseInt()的作用是將一個(gè)整數(shù)轉(zhuǎn)變成String。( F )
2.JK1.5后提供了自動(dòng)裝箱和自動(dòng)拆箱功能砰碴,從而可以實(shí)現(xiàn)基本數(shù)據(jù)類型和對(duì)應(yīng)包裝類之間的自動(dòng)轉(zhuǎn)換躏筏,簡(jiǎn)化了操作。( T )
3.執(zhí)行語句String str="abcedf"; int len=str.length; 后呈枉,能夠得到字符串的長(zhǎng)度是6趁尼。( F )
4.運(yùn)算符“==”用于比較引用時(shí),如果兩個(gè)引用指向內(nèi)存同一個(gè)對(duì)象猖辫,則返回true酥泞。( T )
5.java.sql.Date類和java.util.Date類的關(guān)系是前者是后者的父類,其中前者沒有提供無參數(shù)構(gòu)造方法住册,而后者可以提供無參數(shù)構(gòu)造方法來獲取當(dāng)前時(shí)間婶博。( F )
6.求x的y次方,其表達(dá)式為:Math.pow(x,y)。( T )
7.一個(gè)File對(duì)象可以代表一個(gè)文件或目錄凡人,它可以獲取文件和目錄屬性名党,也可以訪問文件內(nèi)容。( F )
8.在使用File類中的delete( )方法時(shí)挠轴,刪除時(shí)可能文件不存在传睹,所以我們最好先判斷一下是否存在,不然會(huì)出現(xiàn)NullPointerException異常岸晦。( F )
9.Date d = new Date()表示的是當(dāng)前時(shí)間欧啤。( T )
10.遞歸可以完全使用迭代來代替。( T )
四启上、 簡(jiǎn)答題
1.自動(dòng)裝箱和自動(dòng)拆箱
2.String邢隧、StringBuffer、StringBuilder區(qū)別與聯(lián)系冈在。
3.String str=”bjsxt”;和String str= new String(“bjsxt”);的區(qū)別
4.java.sql.Date和java.util.Date的聯(lián)系和區(qū)別
5.為什么要使用包裝類倒慧,包裝類的作用。
6.File類的方法mkdir跟mkdirs包券,有什么區(qū)別?
前一個(gè)是創(chuàng)建一個(gè)文件夾纫谅,后一個(gè)是把所有的都創(chuàng)建
1.簡(jiǎn)述枚舉的使用。
2.遞歸算法的優(yōu)點(diǎn)是什么?缺點(diǎn)是什么?
五溅固、 編碼題
1.驗(yàn)證鍵盤輸入的用戶名不能為空付秕,長(zhǎng)度大于6,不能有數(shù)字侍郭。
提示:使用字符串String類的相關(guān)方法完成
public class TestCheckUserName
{
public static void main(String[] args)
{
//給出用戶名
Scanner input = new Scanner(System.in);
System.out.print("請(qǐng)輸入用戶名:");
String userName = input.nextLine();
//驗(yàn)證表單輸入的用戶名不能為空询吴,
if (userName == null || "".equals(userName))
{
System.out.println("用戶名不能為空");
return;
}
//長(zhǎng)度大于6,
if (userName.length() <= 6)
{
System.out.println("用戶名長(zhǎng)度必須大于6個(gè)字符");
return;
}
//不能有數(shù)字
for (int i = 0; i < userName.length(); i++)
{
//取出每個(gè)字符
char ch = userName.charAt(i);//'3' '4'
//判斷每個(gè)字符是否是數(shù)字
//if(ch <='9' && ch >='0'){
if (ch <= 57 && ch >= 48)
{
System.out.println("用戶名不能有數(shù)字");
//break;//退出for循環(huán)
return;//退出main方法
}
}
System.out.println("用戶名符合要求");
}
}
2.接收從鍵盤輸入的字符串格式的年齡励幼,分?jǐn)?shù)和入學(xué)時(shí)間汰寓,轉(zhuǎn)換為整數(shù)、浮點(diǎn)數(shù)苹粟、日期類型,并在控制臺(tái)輸出跃闹。
提示:使用包裝類Integer嵌削、Double和日期轉(zhuǎn)換類DateFormat實(shí)現(xiàn)
public class TestStringConvert
{
public static void main(String[] args)
{
//從鍵盤輸入字符串形式的年齡,分?jǐn)?shù)和入學(xué)時(shí)間
Scanner input = new Scanner(System.in);
System.out.print("請(qǐng)輸入年齡:");
String sage = input.nextLine();
System.out.print("請(qǐng)輸入分?jǐn)?shù):");
String sscore = input.nextLine();
System.out.print("請(qǐng)輸入日期(yyyy/MM/dd):");
String sdate = input.nextLine();
//年齡轉(zhuǎn)換String----int
int age = 0;
age = Integer.parseInt(sage);
//分?jǐn)?shù)轉(zhuǎn)換 String ---double
double score = 0.0;
score = Double.parseDouble(sscore);
//入學(xué)時(shí)間的轉(zhuǎn)換String ---Date
Date enterDate = null;
DateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
try
{
enterDate = sdf.parse(sdate);
} catch (ParseException e)
{
e.printStackTrace();
//return;
}
//輸出結(jié)果
System.out.println(age + " " + score + " " + enterDate);
}
}
3.根據(jù)交通信號(hào)燈顏色決定汽車停車望艺、行駛和慢行
提示:使用枚舉實(shí)現(xiàn)
//定義信號(hào)燈枚舉
public enum Signal
{
紅, 綠, 黃
}
public class TestSignal
{
public static void main(String[] args)
{
//指定信號(hào)燈顏色
Signal s = Signal.紅;
//根據(jù)顏色決定汽車下步行動(dòng)
switch (s)
{
case 紅:
System.out.println("停車");
break;
case 綠:
System.out.println("行駛");
break;
case 黃:
System.out.println("慢行");
break;
}
}
}//定義信號(hào)燈枚舉
public enum Signal
{
紅, 綠, 黃
}
public class TestSignal
{
public static void main(String[] args)
{
//指定信號(hào)燈顏色
Signal s = Signal.紅;
//根據(jù)顏色決定汽車下步行動(dòng)
switch (s)
{
case 紅:
System.out.println("停車");
break;
case 綠:
System.out.println("行駛");
break;
case 黃:
System.out.println("慢行");
break;
}
}
}
4.以樹狀結(jié)構(gòu)輸出計(jì)算機(jī)某個(gè)指定文件夾下的所有的文件和子文件夾名稱苛秕。
提示:使用File的方法,并結(jié)合遞歸實(shí)現(xiàn)
public class TestDirectory
{
public static void main(String[] args)
{
File file = new File("d:/101sxt");
showTree(file, 1);
}
public static void showTree(File file, int level)
{
//獲取當(dāng)前目錄下的文件和子文件夾(僅當(dāng)前層次)
File[] files = file.listFiles();
//輸出當(dāng)前目錄下的文件和子文件夾(僅當(dāng)前層次)
for (File f : files)
{
//根據(jù)級(jí)別level輸出指定個(gè)數(shù)的-
for (int i = 0; i < level; i++)
{
System.out.print("-");
}
//輸出當(dāng)前的一個(gè)文件或文件夾
if (f.isDirectory())
{
System.out.println("[" + f.getName() + "]");
//遞歸
showTree(f, level + 1);
} else
{
System.out.println(f.getName() + "\t" + f.length());
}
}
}
}
5.將1990年3月3日通過Calendar來表示找默,并得出這天是該年的第幾天?將該日期增加35天艇劫,是哪一天?使用代碼來說明。
public class Test
{
public static void main(String[] args)
{
Calendar calendar = Calendar.getInstance();
//設(shè)置年月日
calendar.set(1990, 3, 3);
//得到該年的第幾天
int dayOfYear = calendar.get(Calendar.DAY_OF_YEAR);
System.out.println(dayOfYear);
//增加35天
calendar.add(Calendar.DAY_OF_YEAR, 35);
//得到date對(duì)象
Date date = calendar.getTime();
System.out.println(date.toLocaleString());
}
}
//或者采用如下代碼實(shí)現(xiàn)
public static void main(String[] args) throws ParseException
{
Calendar ca = Calendar.getInstance();//創(chuàng)建一個(gè)日期實(shí)例
DateFormat df = new SimpleDateFormat("yyyy年MM月dd日");
Date date = df.parse("1990年3月3日");
ca.setTime(date );//實(shí)例化一個(gè)日期
System.out.println(ca.get(Calendar.DAY_OF_YEAR)); ca.add(Calendar.DAY_OF_YEAR, 35);//加上35天
System.out.println(df.format(ca.getTime()));//獲取那一天
}
六惩激、 可選題
1.生成10個(gè)[10,23)之間的隨機(jī)整數(shù)
提示:分別使用Math.random()和Random類的nextDouble()或nextInt()實(shí)現(xiàn)
public class TestRandom
{
public static void main(String[] args)
{
//實(shí)現(xiàn)1:生成10個(gè)[10,23)之間的隨機(jī)整數(shù)
for (int i = 0; i < 10; i++)
{
int r = (int) (Math.random() * 13) + 10;
System.out.print(r + "\t");
}
System.out.println();
Random rand = new Random();
//實(shí)現(xiàn)2:生成10個(gè)[10,23)之間的隨機(jī)整數(shù)
for (int i = 0; i < 10; i++)
{
int r = (int) (rand.nextDouble() * 13) + 10;
System.out.print(r + "\t");
}
System.out.println();
//實(shí)現(xiàn)3:生成10個(gè)[10,23)之間的隨機(jī)整數(shù)
for (int i = 0; i <= 10; i++)
{
int r = rand.nextInt(13) + 10;//[0,13)+10---[10,23)
System.out.print(r + "\t");
}
System.out.println();
}
}
2.手動(dòng)定義一個(gè)枚舉铐达,表示十二個(gè)月的英文月份艾扮。
public enum Month
{
January, february, March, April, May, June,
July, August, September, October, November, December
}
3.打印某個(gè)月份的可視化日歷
提示:使用DateFormat愤诱、Calendar類實(shí)現(xiàn)功能
public class VisualCalendar2
{
public static void main(String[] args) throws ParseException
{
//從鍵盤輸入指定格式的字符串 (Scanner) 2015-12-3
System.out.println("請(qǐng)輸入日期(按照格式:2030-3-10):");
Scanner scanner = new Scanner(System.in);
String temp = scanner.nextLine();
//把輸入的字符串變成Date(DateFormat)
DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date date = format.parse(temp);
//把Date變成Calendar(setTime())
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
//取出日歷的日信息
int dateOfMonth = calendar.get(Calendar.DATE);
//輸出日歷頭信息 日 一 二 三 四 五 六
System.out.println("日\(chéng)t一\t二\t三\t四\t五\t六");
//輸出該月1日之前的空白( 要知道該月1日是星期幾)
calendar.set(Calendar.DATE, 1);
int weekDay = calendar.get(Calendar.DAY_OF_WEEK);
for (int i = 1; i < weekDay; i++)
{
System.out.print('\t');
}
//輸出該月的日歷從1到最后一天(更多細(xì)節(jié))
int maxDay = calendar.getActualMaximum(Calendar.DATE);
for (int i = 1; i <= maxDay; i++)
{
//如果是當(dāng)天,輸出*
if (i == dateOfMonth)
{
System.out.print("*");
}
//輸出每一天
System.out.print(i + "\t");
//如果是周六換行
weekDay = calendar.get(Calendar.DAY_OF_WEEK);
if (weekDay == 7)
{
System.out.println();
}
//日歷變成下一天!!!!!!
calendar.add(Calendar.DATE, 1);
}
}
}