2016-2017年第二学期JAVA语言与WWW技术复习题
一、填空题
1. Java的三大体系分别是___ Java EE _ __、____ Java SE __、___ Java ME __。
2. Java中的变量可分为两种数据类型,分别是___基本数据类型_和_引用数据类型 __ ___。
3. 在非静态成员方法中,可以使用关键字__ This _ ___访问类的其它非静态成员。
4. 被static关键字修饰的成员变量被称为_静态变量 __,它可以被该类所有的实例对象共享。
5. 编译Java程序需要使用__ javac _ ___命令。
6. Java中的程序代码都必须在一个类中定义,类使用___ class ___关键字来定义。
7. 若int []a={12,45,34,46,23}; ,则a[2]= __34_ ___。
8. 面向对象的三大特征是__封装、__继承 __和多态_。
9. 定义在类中的变量被称为___成员变量 _,定义在方法中的变量被称为__局部变量_。
10. 异常的捕获通常由try、catch两部分组成,___ try ___代码块用来存放可能发生异常,__ catch __代码块用来处理产生的异常。
11. String类中用于返回字符串字符个数的方法是___ length() __。
12. JDK中提供了一系列可以存储任意对象的类,统称为 _集合_ __。
13. 在Java中,能实现线程间通信的流是_管道流 ___。
14. System.out是__ PrintStream __类的对象,称为标准输出流,调用System类的_ setOut(PrintStream out) __方法可以实现标准输出流的重定向。
15. 在程序开发中,要想将一个包中的类导入到当前程序中,可以使用_ import __关键字。
16. System类中所提供的属性和方法都是_ 静态 ___的,想要引用这些属性和方法,直接使用System类调用即可。
17. Collection有两个子接口分别是List和Set,List集合的特点是有序、可重复,Set集合的特点是无序、不可重复。
18. InputStreamReader类是用于将_字节流___转换为_字符流___。
19. 在Java中,byte类型数据占___1___个字节,short类型数据占__2____个字节,int类型数据占___4___个字节,long类型数据占__8____个字节。
20. 当一个对象被当成垃圾从内存中释放时,它的_ finalize()_____方法会被自动调用。
二、选择题
1.下面哪种类型的文件可以在Java虚拟机中运行?
A、.java B、.jre C、.exe D、.class
2. 以下关于变量的说法错误的是?
A、变量名必须是一个有效的标识符
B、变量在定义时可以没有初始值
C、变量一旦被定义,在程序中的任何位置都可以被访问
D、在程序中,可以将一个byte类型的值赋给一个int类型的变量,不需要特殊声明
3. 请先阅读下面的代码。
int x = 1;
int y = 2;
if (x % 2 == 0) {
y++;
} else {
y--;
}
System.out.println("y=" + y);
上面一段程序运行结束时,变量y的值为下列哪一项?
A、1 B、2 C、3 D、switch语句
4. 在以下什么情况下,构造方法会被调用?
A、 类定义时 B、 创建对象时
C、 调用对象方法时 D、 使用对象的变量时
5. 请先阅读下面的代码
public class Test {
public Test(){
System.out.println("构造方法一被调用了");
}
public Test(int x){
this();
System.out.println("构造方法二被调用了");
}
public Test(boolean b){
this(1);
System.out.println("构造方法三被调用了");
}
public static void main(String[] args) {
Test test = new Test(true);
}
}
上面程序的运行结果为下列哪一项?
A、构造方法一被调用了 B、构造方法二被调用了
C、构造方法三被调用了 D、以上三个选项之和
6. 类中的一个成员方法被下面哪个修饰符修饰,该方法只能在本类被访问?
A、public B、 protected
C、 private D、default
7. 下面的程序段执行后,输出的结果是以下哪个选项?
StringBuffer buf=new StringBuffer("Beijing2008");
buf.insert(7,"@");
System.out.println(buf.toString());
A、Beijing@2008 B、@Beijing2008
C、Beijing2008@ D、Beijing#2008
8. Java语言中,集合类都位于哪个包中?
A、java.util B、java.lang
C、java.array D、java.collections
9. 以下选项中,哪个是File类delete()方法返回值的类型?
A、 boolean B、 int
C、 String D、 Integer
10.以下对File类的public boolea isFile()方法的描述,哪个是正确的?
A、判断该File对象所对应的是否是文件。
B、判断该File对象所对应的是否是目录。C、返回文件的最后修改时间。
D、在当前目录下生成指定的目录。
11. Java属于以下哪种语言?
A、机器语言 B、 汇编语言 C、高级语言 D、以上都不对
12. 假设int x = 2,三元表达式 x>0?x+1:5 的运行结果是以下哪一个?
A、0 B、2 C、3 D、5
13. 在类的继承关系中,需要遵循以下哪个继承原则?
A、多重 B、单一 C、双重 D、不能继承
14. 编译运行下面的程序,结果是什么?
public class A {
public static void main(String[] args) {
B b = new B();
b.test();
}
void test() {
System.out.print("A");
}
}
class B extends A {
void test() {
super.test();
System.out.print("B");
}
}
A、产生编译错误 B、代码可以编译运行,并输出结果AB
C、代码可以编译运行,但没有输出 D、编译没有错误,但会产生运行时异常
15. 以下都是Math类的常用方法,其中用于计算绝对值的方法是哪个?
A、ceil() B、 floor()C、 abs() D、random()
16.阅读下面的程序:
public class test {
public static void main(String args[]) {
int i;
float f = 2.3f;
double d = 2.7;
i = ((int)Math.ceil(f)) * ((int)Math.round(d));
System.out.println(i);
}
}
程序执行后,运行结果为以下哪个选项?
A、 9 B、 5 C、6 D、 6.1
17. 使用Iterator时,判断是否存在下一个元素可以使用以下哪个方法?
A、next() B、hash() C、hasPrevious() D、hasNext()
18. 类的定义必须包含在以下哪种符号之间?
A、方括号[] B、花括号{} C、双引号“” D、圆括号()
19. 要产生[20,999]之间的随机整数可以使用以下哪个表达式?
A.(int)(20+Math.random()*97)
B. 20+(int)(Math.random()*980)
C. (int)Math.random()*999
D. 20+(int)Math.random()*980
20. 先阅读下面的程序片段:
String str1=new String("java");
String str2=new String("java");
StringBuffer str3=new StringBuffer("java");
对于上述定义的变量,以下表达式的值为true的是哪个?
A、 str1==str2; B、str1.equals(str2); C、str1==str3; D、以上都不对
21. 在程序开发中,经常会使用以下哪个类来存储程序中所需的配置?
A、HashMap B、TreeSet C、Properties D、TreeMap
22. 要想集合中保存的元素没有重复并且按照一定的顺序排列,可以使用以下哪个集合?
A、LinkedList B、 List C、hashSet D、TreeSet
三、简答题
1. 简述&&与&的区别并举例说明。
如果使用“&”在表达式之间进行连接,那么无论任何情况,“&”两边的表达式都会参与计算。如果使用“&&”进行连接,当“&&”左边的表达式为false,则不会执行其右边的表达式。例如定义int x = 2,y = 0; boolean b = x < y & x / 2 > 0表达是会发生被0除异常,因为x / y的表达式执行了。而boolean b = x < y & x / 2 > 0是不会出现这种异常的,因为x < y为false,表达式x / y不会执行。
2. 什么是方法重载?
方法重载指的是在一个类中可以声明多个同名的方法,而方法中参数的个数或者数据类型不一致。调用这些同名的方法时,JVM会根据实际参数的不同绑定到不同的方法。
3. 构造方法和普通的成员方法有什么区别?
构造方法是类的一个特殊成员,它会在类实例化对象时被自动调用。而普通方法只有在使用的时候才会被调用。在定义构造方法时要求方法名与类名相同、在方法名的前面没有返回值类型的声明、在方法中不能使用return语句返回一个值
4. 抽象类和接口的区别?
在Java中,使用abstract关键字修饰的类称之为抽象类。抽象类是不能被实例化的,通常需要写一个子类来继承抽象类,同时实例化子类来获得该类的对象。抽象类通常用于表示一种抽象的概念。
接口可以说是一种特殊的抽象类,接口中只能定义常量和抽象方法。由于接口的特殊性,在定义时需要使用interface关键字。
5. String和StringBuffer有什么区别?
String类是不可变类,即字符串值一旦初始化后就不可能改变。StringBuffer是可变字符串类,类似String的缓冲区,可以修改字符串的值。
6. 简述Java的特点。
面向对象、跨平台性、健壮性、安全性、可移植性、多线程性、动态性等。
7. 什么是多态?
多态意味着一个对象有着多种形态,可以在特定的情况下,表现不同的状态,从而对应着不同的属性和方法。简单的说,多态就是使用父类类型的变量引用子类对象,根据被引用子类对象的特性,程序会得到不同的运行效果。
8. 集合中的List、Set、Map有什么区别?
List的特点是元素有序、元素可重复。List接口的主要实现类有List和LinkedList。Set的特点是元素无序、元素不可重复。Set接口的主要实现类有HashSet和TreeSet。Map的特点是存储的元素是键(Key)、值(Value)映射关系,元素都是成对出现的。Map接口的主要实现类有HashMap和TreeMap。
9. 请说说Collection和Collections的有什么区别?
Collection是一个单例集合接口。它提供了对集合对象进行基本操作的通用方法。Collections是一个工具类。它包含各种有关集合操作的方法。
四、程序题
1. 请编写程序,实现计算“1+3+5+7+…+99”的值。
public class Test01 {
public static void main(String[] args) {
int sum = 0;
for (int i = 1; i < 100; i++) {
if (i % 2 != 0)
sum += i;
}
System.out.println(sum);
}
}
2. 请按照以下要求设计一个学生类Student,并进行测试。
要求如下:
1)Student类中包含姓名、成绩两个属性
2)分别给这两个属性定义两个方法,一个方法用于设置值,另一个方法用于获取值.
3)Student类中定义一个无参的构造方法和一个接收两个参数的构造方法,两个参数分别为姓名和成绩属性赋值
4)在测试类中创建两个Student对象,一个使用无参的构造方法,然后调用方法给姓名和成绩赋值,一个使用有参的构造方法,在构造方法中给姓名和成绩赋值
class Student {
private String name;
private double grade;
public Student() {
}
public Student(String name, double grade) {
this.name = name;
this.grade = grade;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getGrade() {
return grade;
}
public void setGrade(double grade) {
this.grade = grade;
}
}
public class Test01 {
public static void main(String[] args) {
Student stu1 = new Student();
stu1.setName("zhangsan");
stu1.setGrade(99);
Student stu2 = new Student("lisi", 100);
}
}.
3. 在HashSet集合中添加三个Person对象,把姓名相同的人当做同一个人,禁止重复添加。
提示:
1) Person类中定义name和age属性,重写hashCode()方法和equals()方法,针对Person类的name属性进行比较,如果name相同,hashCode()方法的返回值相同,equals方法返回true。
import java.util.*;
public class Test02 {
public static void main(String[] args) {
HashSet hashSet = new HashSet();
Person p1 = new Person("Jack",25);
Person p2 = new Person("Rose",23);
Person p3 = new Person("Jack",27);
hashSet.add(p1);
hashSet.add(p2);
hashSet.add(p3);
for(Object obj:hashSet){
Person p=(Person)obj;
System.out.println(p.name+":"+p.age);
}
}
}
class Person{
String name;
int age;
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
public int hashCode() {
return name.hashCode();
}
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
Person other = (Person) obj;
return other.name.equals(this.name);
} }
本文来源:https://www.2haoxitong.net/k/doc/c9430a742379168884868762caaedd3382c4b559.html
文档为doc格式