常用工具类作业
一、 填空题
- 在Java中每个Java基本类型在java.lang包中都在一个相应的包装类,把基本类型数据转换为对象,其中int对应的包装类是_Integer_; char对应的包装类是__Character_。
- 包装类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( )*30+30=______。
- JDK1.5后提供了__ennum__关键字,用以定义枚举类。枚举类是一种特殊的类,可以有自己的属性、方法和构造方法。
二、 选择题
1. | 以下选项中关于int和Integer的说法错误的是( B,D )。(选择二项) | |
|
|
|
| A. | int是基本数据类型,Integer是int的包装类,是引用数据类型 |
| B. | int的默认值是0,Integer的默认值也是0//null |
| 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); //a:AB b: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); } /* substring返回一个新的字符串,它是此字符串的一个子字符串。 lastIndexOf返回指定字符在此字符串中最后一次出现处的索引。 */ | |
|
|
|
| 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代码,编译运行的结果是( )。(选择一项) | |
| 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));//java java,C# System.out.println(sbf2.equals(sbf));//false } | |
|
|
|
| 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"); //googand System.out.print(ex.ch); //gbc } 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";* |
三、 判断题
- 方法Integer.parseInt()的作用是将一个整数转变成String。( × )*
- JK1.5后提供了自动装箱和自动拆箱功能,从而可以实现基本数据类型和对应包装类之间的自动转换,简化了操作。( √ )
- 执行语句String str="abcedf"; int len=str.length; 后,能够得到字符串的长度是6。( × )*
- 运算符“==”用于比较引用时,如果两个引用指向内存同一个对象,则返回true。( √ )
- 求x的y次方,其表达式为:Math.pow(x,y)。( √ )
四、 简答题
- 自动装箱和自动拆箱
自动装箱:把基本类型转换为包装类类型
自动拆箱:把包装类类型转换为基本类型
- String、StringBuffer、StringBuilder区别与联系。
StringBuffer是jdk1.0版本的,是线程安全的,效率低
StringBuilder是jdk1.5版本的,是线程不安全的,效率高
String和StringBuffer,StringBuilder的区别
String是一个不可变的字符序列
StringBuffer,StringBuilder是可变的字符序列
五、 编码题
- 验证键盘输入的用户名不能为空,长度大于6,不能有数字。
提示:使用字符串String类的相关方法完成
package com.wty.Test;
import java.util.Scanner;
public class Test5 {
public static void main(String[] args){
/*
*1.验证键盘输入的用户名不能为空,长度大于6,不能有数字。
*/ Scanner input = new Scanner(System.in);
System.out.println("请输入用户名:");
String username = input.nextLine();
if (username == null ||"".equals(username)) {
System.out.println("用户名不能为空");
return;
}
if (username.length() <= 6) {
System.out.println("用户名的长度大于6");
return;
}
for (int i = 0; i < username.length(); i++) {
char c = username.charAt(i);
if (c <= 57 && c >= 48) {
System.out.println("用户名不能有数字");
return;
}
}
System.out.println("用户名符合要求");
}
}
- 接收从键盘输入的字符串格式的年龄,分数和入学时间,转换为整数、浮点数、日期类型,并在控制台输出。
package com.wty.Test;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
/*
* 2.接收从键盘输入的字符串格式的年龄,分数和入学时间,转换为整数、浮点数、日期类型,并在控制台输出。
*/
public class Test6 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入年龄:");
String year = input.nextLine();
System.out.println("请输入分数:");
String grade = input.nextLine();
System.out.println("请输入入学时间:");
String time = input.nextLine();
int age = 0;
age = Integer.parseInt(year);
double sgrade = 0;
sgrade = Integer.parseInt(grade);
Date enterDate = null;
DateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
try {
enterDate = sdf.parse(time);
} catch (ParseException e) {
e.printStackTrace();
return;
}
System.out.println(age+","+ sgrade +","+ enterDate);
}
}
提示:使用包装类Integer、Double和日期转换类DateFormat实现
- 根据交通信号灯颜色决定汽车停车、行驶和慢行
提示:使用枚举实现
package com.wty.Test;
/*
*3.根据交通信号灯颜色决定汽车停车、行驶和慢行
*提示:使用枚举实现
*/
public enum Signal{
红,绿,黄
}
public class Test7 {
public static void main(String[] args) {
Signal s = Signal.红;
//根据颜色决定汽车下步行动
switch(s){
case 红 :
System.out.println("停车");
break;
case 绿 :
System.out.println("行驶");
break;
case 黄:
System.out.println("慢行");
break;
}
}
}
六、 可选题
- 生成10个[10,23)之间的随机整数
提示:分别使用Math.random()和Random类的nextDouble()或nextInt()实现
package com.wty.Test;
import java.util.Random;
public class Test8 {
public static void main(String[] args) {
//实现1:生成10个[10,23)之间的随机整数
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();
//实现2:生成10个[10,23)之间的随机整数
for(int i=0;i<10;i++){
int r = (int)(rand.nextDouble()*13)+10;
System.out.print(r+"\t");
}
System.out.println();
//实现3:生成10个[10,23)之间的随机整数
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();
}
}