一、填空题(共15个题目,总计15分)
安装JDK后,为了告诉计算机javac.exe和java.exe等执行文件的位置,需要配置的环境变量是_____________。
Java提供了三种注释类型,分别是单行注释,多行注释和_____________。
char 类型用来表示在Unicode编码表中的字符,长度是______个字节。
_________是短路与运算符,如果左侧表达式的计算结果是false,右侧表达式将不再进行计算。
_____________语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。
基本数据类型的类型转换中,要将double类型的常量3.14159赋给为整数类型变量n的语句是_____________________。
执行Person p = new Person();语句后,将在___________中给Person对象分配空间,并在栈内存中给引用变量p分配空间,存放Person对象的引用。
使用static修饰的变量称为静态变量,静态变量可以有两种访问方式,分别是类名.静态变量名和_______________________。
在一个类文件中的关键字package,import,class出现的可能顺序是______________________________。
异常是由Java应用程序抛出和处理的非严重错误,比如所需文件没有找到、零作除数,数组下标越界等,可分为两类:Checked异常和__________________。
数组在内存中分配连续的空间,数组的长度固定,一经分配无法改变,可以使用____________属性获取数组的长度。
DateFormat类可以实现字符串和日期类型之间的格式转换,其中将日期类型转换为指定的字符串格式的方法名是______________。
JDK1.5后提供了____________关键字,用以定义枚举类。枚举类是一种特殊的类,可以有自己的属性、方法和构造方法。
如果希望将自定义类Student的多个对象放入集合TreeSet,实现所有元素按照某个属性的自然顺序排列,则需要Student类实现__________________接口。
迭代器Iterator为集合而生,专门实现集合遍历,该接口有三个方法,分别是hasNext() 、____________、remove()。
二、选择题(共20个题目,总计20分)
1)以下选项中是对一个Java源文件进行正确编译的语句是( )(选择一项)
A.javac Test.java
B.javac Test
C.java Test
D.java Test.class
2)以下选项中属于合法的Java标识符的是( )。(选择两项)
A.public
B.3num
C.name
D.age
3)以下代码的执行结果是( )。(选择一项)
boolean m = true;
if(m = false){
System.out.println("false");
}else{
System.out.println("true");
}
A.false
B.true
C.编译错误
D.无结果
4)以下do-while循环代码的执行结果是( )。(选择一项)
int a=0;
int c=0;
do{
--c;
a=a-1;
}while(a>0);
System.out.println(a+" "+c);
A.-1 -1
B.死循环
C.-1 -2
D.-1 0
5)while循环和do-while循环的区别是( )。(选择一项)
A.没有区别,这两个结构在任何情况下效果一样
B.while循环比do-while循环执行效率高
C.while循环是先循环后判断,所以循环体至少被执行一次
D.do-while循环是先循环后判断,所以循环体至少被执行一次
6)分析下面的Java多重循环代码片段,编译运行后的输出结果是( )。(选择一项)
for (int i = 0; i < 6; i++) {
int k = ++i;
while (k < 5) {
System.out.print(i);
break;
}
}
A.024
B.02
C.123
D.13
7)以下关于方法调用的代码的执行结果是( )。(选择一项)
public class Test {
public static void main(String args[]) {
int i = 99;
mb_operate(i);
System.out.print(i + 100);
}
static void mb_operate(int i) {
i += 100;
}
}
A.99
B.199
C.299
D.99100
8)以下关于继承条件下构造方法执行过程的代码的执行结果是( )。(选择一项)
class Person {
public Person() {
System.out.println("execute Person()");
}
}
class Student extends Person {
public Student() {
System.out.println("execute Student() ");
}
}
class PostGraduate extends Student {
public PostGraduate() {
System.out.println("execute PostGraduate()");
}
}
public class TestInherit {
public static void main(String[] args) {
new PostGraduate();
}
}
A.execute Person()execute Student() execute PostGraduate()
B.execute PostGraduate()
C.execute PostGraduate()execute Student() execute Person()
D.没有结果输出
9)以下语句中关于Java构造方法的说法错误的是( )。(选择一项)
A.构造方法的作用是为创建对象进行初始化工作,比如给成员变量赋值
B.一个Java类可以没有构造方法,也可以提供1个或多个构造方法
C.构造方法与类同名,不能书写返回值类型
D.构造方法的第一条语句如果是super(),则可以省略,该语句作用是调用父类无参数的构造方法
10)以下关于this和super关键字的说法错误的是( )。(选择二项)
A.this关键字指向当前对象自身,super关键字指向当前对象的直接父类
B.在main方法中可以存在this或super关键字,但不能同时存在。
C.this和super关键字都可以访问成员属性,成员方法和构造方法
D.在一个类的构造方法中可以同时使用this和super来调用其他构造方法
11)以下选项中可以使成员变量m 被函数fun()直接访问的是( )。(选择一项)
class Test {
private int m;
public static void fun() {
System.out.println(m);
}
}
A.将private int m 改为protected int m
B.将private int m 改为 public int m
C.将private int m 改为 static int m
D.将private int m 改为 int m
12)Person类和Test类的代码如下所示,则代码中的错误语句是( )。(选择一项)
public class Person {
public String name;
public Person(String name) {
this.name = name;
}
}
public class Test {
public static void main(String[] args) {
final Person person = new Person("欧欧");
person.name = "美美";
person = new Person("亚亚");
}
}
A.final Person person = new Person("欧欧");
B.person.name = "美美";
C.person = new Person("亚亚");
D.没有错误
13)以下关于异常的代码的执行结果是( )。(选择一项)
public class Test {
public static void main(String args[]) {
try {
System.out.println("try");
return;
} catch(Exception e){
System.out.println("catch");
}finally {
System.out.println("finally");
}
}
}
A.trycatchfinally
B.catchfinally
C.tryfinally
D.try
14)以下关于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 == s2s1.equals(s2)
D.以上都不对
15)以下关于StringBuffer类的代码的执行结果是( )。(选择一项)
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
16)以下选项中能够正确创建一个数组的是( )。(选择二项)
A.float []f[] = new float[6][6];
B.float f[][] = new float[][];
C.float [6][]f = new float[6][6];
D.float [][]f = new float[6][];
17)以下选项中关于int和Integer的说法错误的是( )。(选择二项)
A.int是基本数据类型,Integer是int的包装类,是引用数据类型
B.int的默认值是0,Integer的默认值也是0
C.Integer可以封装了属性和方法提供更多的功能
D.Integer i=5;该语句在JDK1.5之后可以正确执行,使用了自动拆箱功能
18)以下选项中关于Java集合的说法错误的是( )。(选择二项)
A.List接口和Set接口是Collections接口有两个子接口
B.List接口中存放的元素具有有序,不唯一的特点
C.Set接口中存放的元素具有无序,不唯一的特点
D.Map接口存放的是映射信息,每个元素都是一个键值对
19)以下代码的执行结果是( )。(选择一项)
Set s=new HashSet();
s.add("abc");
s.add("abc");
s.add("abc");
s.add("abcd");
System.out.println(s.size());
A.1
B.2
C.3
D.4
20)下面集合类中属于非线程安全,且结构采用了哈希表的是( )。(选择一项)
A.Vector
B.ArrayList
C.HashMap
D.Hashtable
三、判断题(共15个题目,总计15分)
1.一个Java源文件中可以定义多个类,但是至多只能有一个public类。( )
2.Java的字节码文件的扩展名是class,是一种平台独立的非二进制文件。( )
3.^ 是异或位运算符,运算规则是如果两个操作数相同,结果是0,否则结果是1。( )
4.赋值运算符优先级别低于条件运算符,条件运算符优先级别低于算术运算符。( )
5.switch选择语句是多分支选择语句,只能处理等值条件判断的情况,表达式可以是int类型、char类型,但不能是double,float类型。( )
6.在多重循环中,外层循环变量变化一遍,内层循环变量要变化一次 。( )
7.程序调用自身的编程技巧称为递归。递归的特点是编程简单并且节省内存。( )
8.类可以看成一类对象的模板,对象可以看成该类的一个具体实例。( )
9.使用public修饰的成员属性和方法可以被当前项目中所有包的所有类访问。( )
10.将子类对象赋给父类引用变量,称为向下转型,将无法访问子类特有的方法。( )
11.继承是多态的基础,没有继承就没有多态。( )
12.内部类作为外部类成员,权限修饰符和其他成员一样,可声明为private、默认、protected或public。( )
13.数组和集合中的元素可以是任何数据类型,包括基本类型和引用类型。( )
14.增强的for循环可以遍历数组和集合,语法简单 不需要知道数组的长度,不能实现与下标相关的操作。( )
15.LinkedHashMap是一种有序的HashMap,查询速度快,便于进行添加删除操作。( )
四、简答题(共6个题目,总计30分)
1.方法重载和方法重写(覆盖)的区别。(4分)
2.简述Java中的四个权限访问修饰符及其访问范围。(5分)
3.简述static关键字的作用。(5分)
4.接口和抽象类的联系和区别。(5分)
5.String、StringBuffer、StringBuilder区别与联系(5分)
6.Vector和ArrayList、ArrayList和LinkedList的区别和联系。(6分)
五、编码题(共3个题目,总计20分)
1.编写递归算法程序:一列数的规则如下: 0、1、1、2、3、5、8、13、21、34...... 求数列的第40位数是多少。(5分)
2.编写应用程序,创建类的对象,分别设置圆的半径、圆柱体的高,计算并分别显示圆半径、圆面积、圆周长,圆柱体的体积。(6分)
(1)编写一个圆类Circle,该类拥有:
一个成员变量
Radius(私有,浮点型);//存放圆的半径;
两个构造方法
Circle() //将半径设为0
Circle(double r ) //创建Circle对象时将半径初始化为r
三个成员方法
double getArea() //获取圆的面积
double getPerimeter() //获取圆的周长
void show() //将圆的关径、周长、面积输出到屏幕
(2) 编写一个圆柱体类Cylinder,它继承于上面的Circle类。还拥有:
一个成员变量
double hight (私有,浮点型); //圆柱体的高;
构造方法
Cylinder(double r,double h) //创建Cylinder对象时将半径初始化为r,高度初始化为h
成员方法
double getVolume() //获取圆柱体的体积
void showVolume() //将圆柱体的体积输出到屏幕
3.实现List和Map数据的转换。(9分)具体要求如下:
功能1:定义方法public void listToMap( ){ }将List中Student元素封装到Map中
1)使用构造方法Student(int id,String name,int age,String sex )创建多个学生信息并加入List
2)遍历List,输出每个Student信息
3)将List中数据放入Map,使用Student的id属性作为key,使用Student对象信息作为value
4)遍历Map,输出每个Entry的key和value
功能2:定义方法public void mapToList( ){ }将Map中Student映射信息封装到List
1)创建实体类StudentEntry,可以存储Map中每个Entry的信息
2)使用构造方法Student(int id,String name,int age,String sex )创建多个学生信息,并使用Student的id属性作为key,存入Map
3)创建List对象,每个元素类型是StudentEntry
4)将Map中每个Entry信息放入List对象