一、选择题
- 以下选项中关于int和Integer的说法错误的是( )。(选择二项)
A.int是基本数据类型,Integer是int的包装类,是引用数据类型
B.int的默认值是0,Integer的默认值也是0
C.Integer可以封装了属性和方法提供更多的功能
D.Integer i=5;该语句在JDK1.5之后可以正确执行,使用了自动拆箱功能
- 分析如下Java代码,该程序编译后的运行结果是( )。(选择一项)
public static void main(String[ ] args) {
String str=””;
str.concat("abc");
str.concat("def");
System.out.println(str);
}
A.null
B.abcdef
C.编译错误
D.运行时出现NullPointerException异常
- 以下关于String类的代码的执行结果是( )。(选择一项)
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.以上都不对
- 在Java中,以下File类的方法中( )用来判断是否是目录。(选择一项)
A.isFile( )
B.getFile( )
C.isDirectory( )
D.getPath( )
- 分析下面代码的结果( )。(选择一项)
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
二、简答题
-
什么是自动装箱和自动拆箱?
自动装箱和拆箱就是将基本数据类型和包装类之间进行自动的互相转换。例如,在jdk1.5之后,Integer i =5;会自动封装成包装类。而Integer i = 5;int j = i;中i也可以自动拆箱成为int类型。 -
String、StringBuffer、StringBuilder区别与联系。
StringBuffer和StringBuilder非常类似,均代表可变的字符序列。 这两个类都是抽象类AbstractStringBuilder的子类,方法几乎一模一样。
区别:
StringBuffer JDK1.0版本提供的类,线程安全,做线程同步检查, 效率较低。
StringBuilder JDK1.5版本提供的类,线程不安全,不做线程同步检查,因此效率较高。 建议采用该类。 -
String str=”bjsxt”; 和String str= new String(“bjsxt”); 的区别。
String str=”bjsxt”; 这条语句在常量池中生成“bjsxt”的引用值并赋给str。String str= new String(“bjsxt”); 这条语句既在常量池中生成了了“bjsxt”,同时也创建了一个string对象,把对象的引用赋值给str。 -
File类的方法mkdir跟mkdirs,有什么区别?
mkdir创建目录,如果中间目录名缺失则创建失败,mkdirs创建目录,如果中间目录名缺失会自动创建。 -
简述枚举的使用。
三、编码题
-
验证键盘输入的用户名不能为空,长度大于6,不能有数字。
提示:使用字符串String类的相关方法完成
可以使用Scanner的nextLine()方法,该方法可以接口空的字符串。
import java.util.Scanner;
public class Eighth1 {
public static void main(String[] args) {
System.out.println("请输入用户名:");
Scanner scanner = new Scanner(System.in);
String s = scanner.nextLine();
while(!isLegal(s)) {
System.out.println("请重新输入用户名:");
s = scanner.nextLine();
}
System.out.println("输入正确");
}
public static boolean isLegal(String s) {
if (s.isEmpty()) {
System.out.println("用户名不能为空");
return false;
}else if (s.length()<6) {
System.out.println("用户名长度不能小于6");
return false;
}else if (hasNum(s)) {
System.out.println("用户名中不可包含数字");
return false;
}
return true;
}
public static boolean hasNum(String s) {
for(int i=0;i<s.length();i++) {
if(Character.isDigit(s.charAt(i))) {
return true;
}
}
return false;
}
}
2. 接收从键盘输入的字符串格式的年龄,分数和入学时间,转换为整数、浮点数、日期类型,并在控制台输出。
提示:使用包装类Integer、Double和日期转换类DateFormat实现
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
public class Eighth2 {
public static void main(String[] args) throws ParseException {
String age, score, admisionTime;
Scanner scanner = new Scanner(System.in);
System.out.println("请输入您的年龄:");
age = scanner.nextLine();
System.out.println("请输入您的分数:");
score = scanner.nextLine();
System.out.println("请输入您入学时间(格式例:1999-9-9):");
admisionTime = scanner.nextLine();
Integer age1 = Integer.valueOf(age);
Double score1 = Double.valueOf(score);
DateFormat d1 = new SimpleDateFormat("yyyy-mm-dd");
Date admisionTime1 = d1.parse(admisionTime);
System.out.println("年龄为:"+age1+",分数为:"+score1+",入学时间为:"+admisionTime);
}
}
-
根据交通信号灯颜色决定汽车停车、行驶和慢行
提示:使用枚举实现
public class Eighth3 {
public static void main(String[] args) throws InterruptedException {
boolean flag = true;
while(flag) {
for(int i=0;i<3;i++) {
switch (TrafficLight.values()[i]) {
case 红灯:
System.out.println("红灯:汽车停止");
break;
case 黄灯:
System.out.println("黄灯:汽车慢行");
break;
case 绿灯:
System.out.println("绿灯:汽车通行");
break;
}
Thread.sleep(3000);
}
}
}
}
enum TrafficLight{
红灯,黄灯,绿灯
}