资源描述
. .
选择题〔每题3分,共45分〕
1、以下程序编译或运行的结果是。〔〕D
public static void main(String args[]){
int a = 10;
int b,c;
if(a>50){
b=9;
}
c = b + a;
System.out.println(c);
}
A.10 B. 19 C. 9 D. 编译错误
2、以下语句片段中,four的值为 ( ) D
int three = 3;
char one = ‘1’;
char four = (char)(three+one);
A. 3 B. 1 C. 31 D. 4
3、以下代码的运行结果是 ( ) D
public static void main(String[] args){
int a = 7;
System.out.println(a%3);
}
A.2.0 B.2 C.1.0 D.1
4、以下程序的输出结果为( )。D
public static void main(String[] args) {
int x = 1, y = 1, z =1;
if(x--==1&&y--==1||z--==1)
System.out.println(“x=〞 +x+〞, y=〞 +y+〞, z=〞 +z);
}
A. x=0, y=1, z=1
B. x=0, y=2, z=2
C. x=0, y=2, z=1
D. x=0, y=0, z=1
5、以下代码段编译和运行的结果是〔〕. C
public static void main(String args[]){
String str = “null〞;
if(str==null){
System.out.println(“null〞);
}else if(str.length()==0){
System.out.println(“zero〞);
} else {
System.out.println(“some〞);
}
}
A. null B. zero C. some D. 编译错误
6、以下代码的运行结果是〔〕:D
public class Animal{
public String noise(){
return “peep〞;
}
public static void main(String[] args){
Animal animal = new Dog();
Cat cat = (Cat)animal;
System.out.println(cat.noise());
}
}
class Dog extends Animal{
public String noise(){
return “bark〞;
}
}
class Cat extends Animal{
public String noise(){
return “meow〞;
}
}
A. peep B. bark C. meow D. 编译错误E. 抛出运行时异常
7、关于以下代码说确的是( ) D
public class Foo{
public int add(int a,int b){
return a+b;
}
public static void main(String[] args){
Foo foo = null;
System.out.println(foo.add(10,20));
}
}
A. 编译错误 B. 正常运行,但无结果输出 C.30 D.运行时抛出NullPointerException
8、程序的执行结果是 ( ) B
public class Test{
int x;
public static void main(String[] args){
Test t = new Test();
t.x = 5;
change(t);
System.out.println(t.x);
}
public static void change(Test t){
t.x = 3;
}
}
A. 5 B. 3 C. 0 D. 4
9、关于以下代码书确的是 ( ) B
public class A{
public void doit(){}
public String doit(){
return “a〞;
}
public double doit(int x){
return 1.0;
}
}
A. 无编译错误
B. 代码public String doit(){行,出现编译错误
C. 代码public double doit(int x){行,出现编译错误
D. 代码return “a〞;行处出现编译错误
10、以下代码的运行结果是〔〕D
String test = “This is a test〞;
String[] tokens = test.split(“\\s〞);
System.out.println(tokens.length);
A. 0 B. 1 C. 3 D. 4
11、请看以下代码〔〕A
1 //some code here
2 try{
3 //some code here
4 }catch(SomeException se){
5 //some code here
6 }finally{
7//some code here
8}
下面那种情况不能使第7行的代码执行:
A. 第1行抛出异常
B. 第3行抛出异常
C. 第5行抛出异常
D. 第3行代码成功执行
E. 第5行代码成功执行
F. 不管如何第7行都会运行
12、Java中单一文件里的关键字class import package 出现的顺序应为:〔〕C
A. class package import
B. class import package
C. package import class
D. import package class
13、给出以下代码,请问该程序的运行结果是什么?D
class Example {
public static void main(String args[]){
String s = new String( "puter" );
if( s == "puter" )
System.out.println( "Equal A" );
if( s.equals( "puter" ) )
System.out.println( "Equal B" );
}
}
A、 代码编译失败
B、 打印输出空白行
C、 打印输出:Equal A;
D、 打印输出:Equal B
E、 打印输出:Equal A和Equal B
14、Java语言中, 通常把可能发生异常的方法调用语句放到________、________块中,分别用来捕获和处理异常。〔〕C
A. try,finally;
B. catch,try;
C. try,catch
D. finally,try
15、以下哪个语句可以获取文件“file.txt〞的父目录名称?〔〕D
A. String name = File.getParentName(“file.txt〞);
B. String name = (new File(“file.txt〞)).getParent();
C. String name = (new File(“file.txt〞)).getParentName();
D. String name = (new File(“file.txt〞)).getParentFile();
填空题〔每空2分,共20分〕
1、完成代码计算10的阶乘并输出,把下面代码补全:
int result = 1;
for(int i = 2; i <= 10; i++){
}
System.out.println(“result=〞+ result);
答案:result *= i 或 result = result * i
2、在Java的类中需要将一个成员变量设置成子类可访问并且包可访问,那么使用访问修饰符来访问。
答案:protected
3、Java中所有类都是类__的子类
答案:java.lang.Object
4、System.out prinln(4/3)的输出结果为___,System.out prinln(4%3)的输出结果为___.
答案:1,1
5、Java语言中我们可以继承类或实现接口实现多线程。
答案:Thread Runnable
6、方法重载的条件中,参数只要满足、、中的任何一点即可。
答案:顺序不同、个数不同、类型不同
简答题〔共17分〕
1、请您简述Java语言中的面向对象的特征都有哪些?并逐个阐述。〔8分〕
答案
1.抽象:
抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一局部,暂时不用局部细节。一是过程抽象,二是数据抽象。过程抽象是指任何一个明确定义功能的操作都可被使用者看作单个的实体对待,尽管这个操作实际上可能由一系列更低级的操作来完成。数据抽象定义了数据类型和施加于该类型对象上的操作,并限定了对象的值只能通过使用这些操作修改和观察。
2.继承:
继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类〔子类〕,而原始类称为新类的基类〔父类〕。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。
3.封装:
封装是面向对象的特征之一,是对象和类概念的主要特性。封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个根本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。一旦定义了一个对象的特性,那么有必要决定这些特性的可见性,即哪些特性对外部世界是可见的,哪些特性用于表示部状态。在这个阶段定义对象的接口。通常,应制止直接访问一个对象的实际表示,而应通过操作接口访问对象,这称为信息隐藏。事实上,信息隐藏是用户对封装性的认识,封装那么为信息隐藏提供支持。封装保证了模块具有较好的独立性,使得程序维护修改较为容易。对应用程序的修改仅限于类的部,因而可以将应用程序修改带来的影响减少到最低限度。
4. 多态性:
多态性是指允许不同类的对象对同一消息作出响应。比方同样的加法,把两个时间加在一起和把两个整数加在一起肯定完全不同。又比方,同样的选择编辑-粘贴操作,在字处理程序和绘图程序中有不同的效果。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。
2、请说出List,Set和Map三个接口存储元素时各有什么特点?〔9分〕
答案:
List与Set具有相似性,它们都是单列元素的集合,它们有一个共同的父接口,叫做Collection。
Set里面不允许有重复的元素,所谓重复,即不能有两个相等〔不仅仅是一样〕的对象,即假设Set集合中有了一个A对象,现在我要向Set集合再存入一个B对象,但B对象与A对象equals相等,那么B对象存储不进去。Set集合的add方法有一个boolean的返回值,当集合中没有某个元素,此时add方法可成功参加该元素时,那么返回true,当集合含有与某个元素equals相等的元素时,此时add方法无法参加该元素,返回结果为false。
List表示有先后顺序的集合,当我们屡次调用add(Obj e)方法时,每次参加的对象就像火车站买票有排队顺序一样,按先来后到的顺序排序。有时候,也可以插队,即调用add(int index,Obj e)方法,就可以指定当前对象在集合中的存放位置。
一个对象可以被反复存储进List中,每调用一次add方法,这个对象就被插入进集合中一次,其实,并不是把这个对象本身存储进了集合中,而是在集合中用一个索引变量指向这个对象,当这个对象被add屡次时,即相当于集合中有多个索引指向了这个对象。
Map与List和Set不同,它是双列的集合,其中有put方法,定义如下:put(obj key,objvalue),每次存储时,要存储一对key/value,不能存储重复的key,
这个重复的规那么也是按equals比拟相等。
取那么可以根据key获得相应的value,即get(Object key)返回值为key所对应的value。
编程题〔共18分〕
1、请阅读以下程序,并写出其运行结果:〔6分〕
public class Test{
public static void main(String[] args){
Son s = new Son();
}
}
class Parent{
{
System.out.println(“A〞);
}
static{
System.out.println(“B〞);
}
public Parent(){
System.out.println(“C〞);
}
}
class Son extends Parent{
{
System.out.println(“D〞);
}
static{
System.out.println(“E〞);
}
public Son(){
System.out.println(“F〞);
}
}
答案:
B
E
A
C
D
F
2、写出一种实现单例的方式?〔懒汉式,饿汉式任选一种〕〔6分〕
答案:
懒汉式:
1. public class Singleton {
2. private static Singleton instance;
3. private Singleton (){}
4.
5. public static Singleton getInstance() {
6. if (instance == null) {
7. instance = new Singleton();
8. }
9. return instance;
10. }
11. }
饿汉式:
1. public class Singleton {
2. private static Singleton instance = new Singleton();
3. private Singleton (){}
4. public static Singleton getInstance() {
5. return instance;
6. }
7. }
3、编写一个应用程序,对程序中给定的四个double型数据求其最大值和最小值。〔6分〕
答案:
publicstaticvoid main(String[] args) {
doublea[] = { 8.2, 3.8, 15.1, 9.0 };
doublemax = 0, min = 0;
System.out.print("四个数分别为:");
for (inti = 0; i < a.length; i++) {
System.out.print(a[i] + " ");
}
for (inti = 0; i < a.length - 1; i++) {
if (a[i] > a[i + 1]) {
max = a[i];
}elseif (a[i] < a[i + 1]) {
min = a[i];
}
}
System.out.println();
System.out.println("四个数中最大值为:" + max);
System.out.println("四个数中最小值为:" + min);
}
. .word.zl.
展开阅读全文