Java笔试题

第一章 Java概述
笔试题
一、	填空题
1.	【基础题】Java是一种先  编译  后  解释  运行的语言。
二、	选择题
三、	名词解释
1.	【基础题】J2SE:Java 2 Standard Edition    Java标准版  
2.	【基础题】J2EE:Java 2 Enterprise Edition   Java企业版  
3.	【基础题】J2ME:Java 2 Micro Edition      Java微型版  
4.	【基础题】JDK:Java Development Kit      Java开发工具包  
5.	【基础题】JRE:Java Runtime Environment   Java运行环境  
四、	问答题
1.	【基础题】Java的优点有哪些(回答六个以上)? 
1)	简单(Simple) 
2)	安全(Secure)
3)	可移植(Portable) 
4)	面向对象(Object-oriented)
5)	健壮(Robust) 
6)	多线程(Multithreaded) 
7)	体系结构中立(Architecture-neutral)
8)	解释执行(Interpreted) 
9)	高性能(Highperformance) 
10)	分布式(Distributed) 
11)	动态(Dynamic)
2.	【基础题】假设JDK安装在d:\java目录中。写出JAVA环境变量的设置方法。
答:
JAVA_HOME=d:\java              
CLASSPATH=.;d:\java\lib      
PATH=d:\java\bin
3.	【中等题】GC是什么? 为什么要有GC?
答:
GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。
4.	【中等题】垃圾回收的优点和原理。并考虑2种回收机制。
答:
Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再需要考虑内存管理。由于有个垃圾回收机制,Java中的对象不再有"作用域"的概念,只有对象的引用才有"作用域"。垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存。垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清楚和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。
5.	【提高题】heap和stack有什么区别。
答:
 (stack)栈是一种线形集合,其添加和删除元素的操作应在同一段完成。栈按照后进先出的方式进行处理。(heap)堆是栈的一个组成元素
 
第二章 基本词汇、数据类型、变量
笔试题
一、	填空题
1.	【基础题】Java中数据类型包括  基本数据类型  和  引用类型  。
二、	选择题
1.	【基础题】可作为Java标识符的是( A )
A.	identifier
B.	User.name
C.	Not/ok
D.	user-name
2.	【基础题】以下选项中,合法的赋值语句是( D ) 
A.	a == 1;
B.	++i;
C.	a = a + 1 = 5;
D.	y = (int)I;
三、	名词解释
四、	问答题
1.	【基础题】Java有没有goto? 
答:
goto是java中的保留字,现在没有在java中使用。
2.	【基础题】写出JAVA的基本数据类型。
答:
byte,short,int,long,char, float,double,boolean
3.	【基础题】什么是常量?什么是变量?
答:
常量能在任何地方被它所允许的类型使用,代表的是所属类型的一个值。变量是JAVA程序的一个基本存储单元。变量是有一个标识符,类型及一个可选初始值的组合定义
4.	【基础题】Java代码注释有几种?分别起什么作用?举例写出来。
答:
有3种;单行注释、多行注释和文档注释;//、/* */、/** */
5.	【基础题】字节型(byte)、短整形(short)、整形(int)、单精度浮点型(float)的取值范围是多少? 
答:
字节型(byte):它是有符号的8位类型,数的范围是-128~127。
短整形(short):short是有符号的16位类型,数的范围是 –32,768~32,767 。
整形(int):它是有符号的32位类型,数的范围是-2,147,483,648~2,147,483,647。
单精度浮点型(float):单精度浮点型(float)专指占用32位存储空间的单精度(single-precision)值。数的范围是3.4E–038~3.4E+038。
6.	【中等题】简述逻辑操作(&,|,^)与条件操作(&&,||)的区别。
答:
区别主要答两点:
a.条件操作只能操作布尔型的,而逻辑操作不仅可以操作布尔型,而且可以操作数值型
b.逻辑操作不会产生短路 
第三章 数据类型转换和运算符
笔试题
一、	填空题
1.	【中等题】int x = 5; int y = 4; y = x++; y的值是  5  。
二、	选择题
1.	【基础题】int类型不可以与下列那些数据类型进行数据类型转换( C )
A.	char
B.	byte
C.	boolean
D.	double
2.	【基础题】请选择以下运算优先级别:1()、2>、3++、4+=、5&&。( C )
A.	12345
B.	32154
C.	13254
D.	52134
3.	【中等题】int i=2;i+=i-=i*i的值为( A ) 
A.	0
B.	2
C.	4
D.	2
4.	【中等题】
boolean bool = true;
if(bool = false) {
System.out.println(“a”);
} else if (bool) {
System.out.println(“c”);
} else if (!bool) {
System.out.println(“c”);
} else {
System.out.println(“d”);
}

What is the result?  ( C ) 
A.	a
B.	b
C.	c
D.	d
E.	Compilation fails
5.	【中等题】
public class Delta {
static boolean foo(char c) {
System.out.print(c);
return true;
}
public static void main( String[] argv ) {
        int i =0;
for ( foo(‘A’); foo(‘B’)&&(i<2); foo(‘C’)){
i++ ;
 foo(‘D’);
}
}
}

What is the result?  ( A ) 
A.	ABDCBDCB
B.	ABCDABCD
C.	Compilation fails.
D.	An exception is thrown at runtime.
6.	【 提高题】
public class Alpha1 {
public static void main( String[] args ) {
        boolean flag; int i=0;
        do {
            flag = false;
            System.out.println( i++ );
            flag = i < 10;
            continue;
         } while ( (flag)? true:false );
     }
 }
What is the result? ( B )
A.	000000000
B.	0123456789
C.	Compilation fails.
D.	The code runs with no output.
E.	The code enters an infinite loop.
F.	An exception is thrown at runtime.
三、	名词解释
四、	问答题
1.	【基础题】请阐述=运算符和==运算符的区别。
答:
=是赋值运算符, 用于给变量赋值                   
==是比较运算符, 用于逻辑比较 
第四章 流程控制
笔试题
一、	填空题
1.	【基础题】Java程序控制语句中的循环语法分  for  ,  while  和  do…while  三种。
二、	选择题
2.	【基础题】下列程序在执行完循环后的结果为 ( D ) 
int i=1,j=10; 
do{ 
if(i++>--j)
    continue;
 } while(i<5);
A.	i = 6 	j = 5
B.	i = 5		j = 5
C.	i = 6		j = 4
D.	i = 5		j = 6
3.	【基础题】以下选项中,那一个是结束本次循环关键字 ( B ) 
A.	break
B.	continue
C.	go
D.	do
4.	【基础题】   
int i = 0;
for (; i <4; i += 2) {
    System.out.print(i + “”);
}
System.out.println(i);
What is the result? ( A ) 
A.	0 2 4
B.	0 2 4 5
C.	0 1 2 3 4
D.	Compilation fails.
E.	An exception is thrown at runtime.
5.	【基础题】
public class SwitchTest {
    public static void main(String[] args) {
        System.out.println(“value = “ + switchIt(4));
    }
    public static int switchIt(int x) {
        int j = 1;
        switch (x) {
        case 1: j++;
        case 2: j++;
        case 3: j++;
        case 4: j++;
        case 5: j++;
        default: j++;
        }
        return j + x;
    }
}
What is the result?  ( F )
A.	value = 3
B.	value = 4
C.	value = 5
D.	value = 6
E.	value = 7
F.	value = 8
6.	【基础题】
int i = 1,j = -1;
switch (i) {
    case 0, 1:j = 1;
    case 2: j = 2;
    default; j = 0;
}
System.out.println(“j=”+j);
What is the result? ( E ) 
A.	j = -1
B.	j = 0
C.	j = 1
D.	j = 2
E.	Compilation fails.
7.	【基础题】
switch(x) {
default:
System.out.println(“Hello”);
}
Which two are acceptable types for x? (Choose two) ( A、C ) 
A.	byte
B.	long
C.	char
D.	float
E.	Short
F.	Long
三、	名词解释
四、	问答题


 
第五章 Eclipse使用
笔试题
一、	填空题
1.	【基础题】Eclipse中代码助手的快捷键是 alt+/ ,格式化的快捷键是  ctrl+shift+f  。
二、	选择题
1.	【基础题】Eclipse目录下,插件jar包放在什么文件夹里( B ) 
A.	configuration
B.	plugins
C.	links
D.	features
三、	名词解释
1.	【基础题】IDE:Integrated Development Environment集成开发环境。
四、	问答题
1.	【基础题】常用的Java  IDE都有哪些?
答:
JBuilder  
NetBeans
Eclipse
2.	【基础题】MyEclipse是JAVA  IDE吗?
答:
不是,MyEclipse是Eclipse的一个插件。
3.	【中等题】Eclipse安装插件的方法。
答:
一般来说,安装插件都是直接拷贝到Plugins子目录下,但是这样有个缺陷,若插件太多,会使内容非常混乱,而且分不清哪个是系统自带的,哪个是以后安装的。这里提供一个办法: 
在Eclipse安装目录下新建一个子目录links,里面新建一个文件abcd.link,文件名随便取,文件里的内容为path=D:/MyPlugins(目录可换成自己的),而在Path中指定的目录,即刚才的D:/MyPlugins目录下,一定要有一个eclipse子目录,在此子目录下再有features及plugins子目录(同Eclipse安装目录一样),新插件在安装时即可以拷贝到此plugins目录下,这样就避免了所有插件都放在一起的缺点。而且links目录下可以建多个*.link文件,每个.link文件中的内容可有多行path=...,极大的方便了将插件按照功能来进行分门别类。 
第六章 String
笔试题
一、	填空题
1.	【基础题】字符串的下标从  0  开始。
2.	【基础题】String的取子串的方法是  substring()  , 取某个位置上字符的方法是  charAt()  。
二、	选择题
1.	【基础题】比较两个字符串引用地址是否相等用那个方法 ( C ) 
A.	contact()
B.	charAt()
C.	equals()
D.	substring()
2.	【基础题】取出字符串的长度是以下那个( B ) 
A.	String.length
B.	String.length()
C.	String.long
D.	String.long()
3.	【中等题】  
String a = “ABCD”;
String b = a.toLowerCase();
b.replace(‘a’, ‘d’);
b.replace(‘b’, ‘c’);
System.out.println(b);
What is the result? ( A )
A.	abcd
B.	ABCD
C.	dccd
D.	dcba
E.	Compilation fails.
F.	An exception is thrown at runtime.
4.	【中等题】
public class Foo {
public static void main (String [] args) {
StringBuffer a = new StringBuffer (“A”);
StringBuffer b = new StringBuffer (“B”);
operate (a,b);
System.out.println(a + “,” +b);
}
static void operate (StringBuffer x, StringBuffer y) {
x.append(y);
	y = x;
}
}
What is the result? ( D )
A.	The code compiles and prints “A,B”.
B.	The code compiles and prints “A,A”.
C.	The code compiles and prints “B,B”.
D.	The code compiles and prints “AB,B”.
E.	The code compiles and prints “AB,AB”.
F.	The code does not compile because “+” cannot be overloaded for StringBuffer.
 

三、	名词解释
四、	问答题
1.	【中等题】equals()和==比较两个字符串是否相同有什么区别。
答:
equals()比较的是两个字符串的值,==比较的是两个字符串的地址。
2.	【中等题】简述String 和StringBuffer的区别。
答:
JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供的字符串进行修改。当你知道字符数据要改变的时候你就可以使用StringBuffer。典型地,你可以使用StringBuffers来动态构造字符数据。
3.	【中等题】String s = new String("xyz");创建了几个String Object? 
答:
2个,1个在String池中,一个在堆内存中。
4.	【基础题】是否可以继承String类? 
答:
String类是final类故不可以继承。 
第七章 数组及算法
笔试题
一、	填空题
1.	【基础题】字符串的下标从 0 开始,数组的下标从 0 开始。
2.	【基础题】int[] c1 = new int[10];  int[] c2 = {1,2,3,4,5,6,7,8,9,0};  数组c1中的元素有__10__个;c2中的元素有__10__个;已初始化赋值的是__C2__;当执行System.out.println(c2[12])代码会产生__数组下标越界 错误.
二、	选择题
1.	【基础题】以下选项中,请选出数组声明错误的  (D )
A.	String[] seasons = {"winter", "spring", "summer", "fall"};
B.	int[] intArray = new int[5];
C.	String []StrArray = new String("abc","123");
D.	int[] anArray = {3,x,9,2};
2.	【基础题】以下关于数组的描述有误的是 ( D ) 
A.	整型数组中的各元素的值必须是整型
B.	数组是有序数据的集合
C.	如数组名为ab,即ab.length可以取得该数组的长度
D.	数组的下标从1开始
3.	【基础题】请选择不正确的描述 ( C ) 
A.	可以声明任何类型的数组──包括原始类型或类类型
B.	数组的下标从0开始
C.	数组中的元素可以自动增长
D.	用数组的属性length可以得到数组的长度
三、	名词解释
1.	【基础题】数组:数组是一种数据结构,用来存储同一类型值的集合.通过一个整形下标可以访问数组中的每一个值.一旦创建了数组就不能再改变它的大小了. 
四、	问答题
1.	【基础题】数组有没有length()这个方法? String有没有length()这个方法?
答:  
数组没有length()这个方法,有length的属性。
  String有length()这个方法。
 
第八章  类和对象
笔试题
一、	填空题
1.	【基础题】抽象类的关键字是abstract  
2.	【基础题】子类的构造中显示调用父类默认构造方法的代码是   super()  父类有参构造中显示调用自身默认构造方法的代码是   this()   。
3.	【基础题】final关键字可以修饰在  类   、  属性  和  方法  前面
二、	选择题
1.	【基础题】面向对象的特征有(ABC)
A.	继承
B.	多态
C.	封装
D.	抽象
2.	【基础题】请选择下面程序中正确的选项 (B C)
A.	int i=0; 
if (i) { 
  System.out.println(“Hi”); 
} 
B.	boolean b=true; 
boolean b2=true; 
 if(b==b2) { 
      System.out.println(“So true”); 
   } 
C.	int i=1; 
 	int j=2; 
  if(i==1|| j==2) 
     System.out.println(“OK”); 
D.	int i=1; 
int j=2; 
if (i==1 &| j==2) 
  System.out.println(“OK”);  
3.	【基础题】方法重载必须的条件为 (A B) 
A.	参数不同 
B.	参数类型不同
C.	返回值不同             
D.	参数顺序不同
三、	名词解释
1.	【基础题】重载:如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载
2.	【基础题】OOA: 面向对象分析方法(Object-Oriented Analysis)
3.	【基础题】OOD: 面向对象设计方法(Object-Oriented design) 
4.	【基础题】OOP: 面向对象编程方法(Object-Oriented programming)
四、	问答题
1.	【中等题】abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized? 
  答:
  都不能 
2.	【中等题】是否可以在静态(static)方法内部调用非静态(static)方法?
答:
不可以,如果其中包含对象的method();不能保证对象初始化。
3.	【中等题】面向对象的特征有哪些方面
1)	抽象:
抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。
2)	继承:
继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性, 新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。
3)	封装:
封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。
4)	多态:
多态是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。

 
第九章  构造方法
笔试题
一、	填空题
1.	【基础题】构造方法   能   ( 能或者不能)被public、private、protected修饰
二、	选择题
1.	【基础题】下列说法正确的有( C) 
A.	类中的构造函数不可省略
B.	构造函数必须与class同名,但方法不能与class同名
C.	构造函数在一个对象被new时执行
D.	一个class只能定义一个构造函数
2.	【中等题】下面哪个关键字可以用在构造方法中? ( E) 
A.	final 
B.	static 
C.	synchronized 
D.	native 
E.	都不行
(解析:构造方法不能被子类继承,所以用final修饰没有意义。构造方法用于创建一个新的对象,不能作为类的静态方法,所以用static修饰没有意义。此外,Java语言不支持native或synchronized的构造方法。)
三、	名词解释
1.	【基础题】constructor: 构造器
四、	问答题
1.	【基础题】构造方法必须满足哪些条件?
答:
方法名必须与类名称完全相匹配; 
不要声明返回类型; 
不能被static、final、synchronized、abstract、native修饰。

 
第十章 变量的生命周期、作用域、参数传递
笔试题
一、	填空题
1.	【基础题】Java中的静态声明包括  变量    方法 和  块    
2.	【基础题】final类可以修饰在   类   ,    属性   和    方法    前面 
3.	【基础题】Java的访问控制有四种:   private   、       protected、    public    、     默认    
4.	【基础题】封装一个类通常将属性设为  private    ,如果属性名称为speed,该属性的setter方法的应该写成     public void setSpeed(String speed).。
二、	选择题
1.	【基础题】下面那个是用声明静态方法的关键字 (D) 
A.	String
B.	switch
C.	final
D.	static
2.	【基础题】那个可以作为方法的参数传递  (A、B、C)  
A.	基本数据类型
B.	数组
C.	类实例化的对象
D.	常量
三、	名词解释
四、	问答题
1.	【中等题】简述final, finally, finalize的含义 
答:
final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
finally是异常处理语句结构的一部分,表示总是执行。
finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。
2.	【中等题】当类被加载时,请简述一下类中的静态声明执行顺序
答:
首先初始化静态属性值
然后执行静态块
最后执行类加载时的构造函数
3.	【中等题】简述final和finalize的区别
答:
1)	如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承。因此一个类不能既被声明为abstract的,又被声明为final的。
2)	将变量或方法声明为final,可以保证它们在使用中不被改变。
3)	被声明为final的变量必须在声明时给定初值,而在以后的引用中只能读取,不可修改。
4)	被声明为final的方法也同样只能使用,不能重载。                        finalize()方法名,不是关键字,它在Object中定义的。Java技术允许使用 finalize是方法名;在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作。finalize()方法是在垃圾收集器删除对象之前对这个对象调用的。
4.	【中等题】Java语言里,一个类中静态变量与非静态变量有什么区别?
答:
静态变量或方法, 就是以static修饰的变量或方法, 如static int count; 它的意义是让系统分配一个静态空间给这个变量count, 那么包含这个变量的类的全部实例就会共用这个变量, 任何一个改变了count都会对其余的实例产生影响, 它是在文件编绎时就被初始化的, 比一切其它non-static 变量都要早;
而non-static 变量就是每一个类实例都有自己的count, 任何实例的改变都不会影响到其它的实例的count(也就是分配了各自的空间), 它们是第一次使用的时候才被初始化的
5.	【中等题】当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 
答:
是值传递。Java 编程语言只有值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的。 
第十一章 常用系统类使用、包和访问控制符
笔试题
一、	填空题
二、	选择题
1.	【基础题】下面导入包语法正确的是( B)
A.	import util.Date;
B.	import java.util.*;
C.	package java.util.*;
D.	package java.util.Date
2.	【基础题】属于访问控制的关键字是(  D) 
A.	import
B.	final
C.	static
D.	protected
3.	【基础题】对成员的访问控制保护最强的是(  B) 
A.	public
B.	private
C.	默认
D.	protected
4.	【基础题】Math类哪个方法是求绝对值(  A) 
A.	abs
B.	random
C.	exp
D.	print
三、	名词解释
1.	【基础题】包:Java中的包(package)指的就是目录,它是为了更好地管理Java类(Class)和接口(Interface)。包是类的容器,用于分隔类名空间
四、	问答题
1.	【中等题】简述包的用途
答:
1)	包允许你将类文件组织起来,便于查找和使用合适的类。
2)	包不仅包含类和接口,还能包含其它包,从而形成有层次的包空间。
3)	包有助于避免命名冲突。当你使用很多类时,确保类和方法名称的唯一性是非常困难的。
4)	包能够形成层次命名空间,缩小了名称冲突的范围,易于管理名称。
2.	【基础题】定义包和引入包有什么区别?请各写一个标准语法例子
答:
定义包就是用户自己定义一个类文件夹路径来管理编写的类,不需要对包中的类进行定义说明!而引用一个包就是把系统或者用户一个已经定义好的包直接用,其中包括包里面的类!
package user
import java.io.*
3.	【基础题】请描述访问控制符的各自作用域与区别
访问控制	private成员	缺省的成员	protected成员	public成员
同一类中				
同一包中其他类				
不同包中子类 				
不同包中非子类 				
答:
访问控制	private成员	缺省的成员	protected成员	public成员
同一类中	√	√	√	√
同一包中其他类	×	√	√	√
不同包中子类 	×	×	√	√
不同包中非子类 	×	×	×	√
 
第十二章 继承
笔试题
一、	填空题
1.	【基础题】 继承  是一种软件重用形式,在这种形式中,新类获得现有类的数据和方法,并可增加新的功能。
2.	【基础题】派生类构造方法可以通过关键字  super 调用基类构造方法
3.	【基础题】在Java中继承的关键字是  extends 
二、	选择题
1.	【基础题】如果任何包中的子类都能访问超类中的成员,那么应使用哪个关键词( A) 
A.	public
B.	private
C.	protected
D.	final
2.	【提高题】有关类Demo,那些描述是正确的 (AC)                                                                      
public class Demo extends Base{ 
private int count; 
public Demo(){ 
System.out.println("A Demo object has been created"); 
}
protected void addOne() {
count++;
} 
}
A.	当创建一个Demo类的实例对象时,count的值为0。
B.	当创建一个Demo类的实例对象时,count的值是不确定的。
C.	超类对象中可以包含改变count 值的方法。
D.	Demo的子类对象可以访问count。
三、	名词解释
1.	【基础题】uses-a: 依赖
2.	【基础题】has-a: 聚合
3.	【基础题】is-a: 继承
四、	问答题
1.	【基础题】通过继承,子类可以获得哪些好处?
答:
扩展自己,获得父类的属性和方法。
获取父类的数据和对数据的操作
2.	【基础题】简述方法覆盖
答:
方法覆盖是指子类中存在和父类完全同名(方法名相同、返回类型相同、参数表相同)的方法
3.	【基础题】简述Super关键词的好处和使用方法、访问范围
答:
super关键字用来解决如何直接访问或初始化从父类继承来的成员。
在写子类无参数构造方法时,不用显式调用父类无参数构造方法,系统会自动提供 ,但在写子类带参数构造方法时,应在第一句写super(参数)来初始化父类成员变量;访问范围包括父类属性、一般方法和构造方法。
4.	【中等题】请描述继承中的访问权限控制
答:
本类访问权限
本类方法可访问本类所有变量
本类对象不可访问本类private变量
子类访问权限
子类方法不可访问父类private变量
子类对象不可访问父类private变量       
父类对象引用可指向它的任何子类对象,不论是直接还是间接子类,反之不行
 
第十三章 多态
笔试题
一、	填空题
二、	选择题
1.	【基础题】下列哪种说法是正确的(D ) 
A.	实例方法可直接调用超类的实例方法
B.	实例方法可直接调用超类的类方法
C.	实例方法可直接调用其他类的实例方法
D.	实例方法可直接调用本类的类方法对象?
2.	【中等题】请在下题XXXXXX中选择正确的代码填入(D)
public class Parent{
	public Parent(){
		System.out.println(“good”);
}
	public Parent(int j){
	System.out.println(“bad”);
}
}

public class Example extends Parent{
	public static void main(String[] args){
		new Example();
}

public Example(){
	XXXXXX
}
}

A.	this  
B.	super 
C.	Parent 
D.	什么都不填
3.	【基础题】class BaseClass{    
 			private float x=1.0f; 
 			private float getVar(){return x;} 
  		 } 
		class SubClass extends BaseClass{ 
 			private float x=2.0f; 
 			//insert code 
 		} 
		下面哪个构成getVar() 方法的覆盖 (  B )  
A.	float getVar(){ 
B.	public float getVar(){ 
C.	public double getVar(){ 
D.	protected float getVar(){ 
E.	public float getVar(float f){ 
4.	【中等题】下列说法正确的有(C ) 
A.	类中的构造函数不可省略
B.	构造函数必须与class同名,但方法不能与class同名
C.	构造函数在一个对象被new时执行
D.	一个class只能定义一个构造函数
三、	名词解释
四、	问答题
5.	【基础题】简述什么是多态现象?
答:
是允许将父对象设置成为和一个和多个它的子对象相等的技术,
举个例子:从一个基类中派生,响应一个虚命令,产生不同的结果 
6.	【中等题】简述方法覆盖重载有什么区别 
答:
在继承中,如果子类的一个方法与父类中的方法有相同的名字并具有相同数量和类型的参数,这种情况称为方法覆盖
覆盖是父类与子类之间多态性的一种表现,重载是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被覆盖
7.	【基础题】final有哪三种用法?每种用法是什么含义?
答:
1)	当你在类中定义变量时,在其前面加上final关键字,那便是说,这个变量一旦被初始化便不可改变
2)	将方法声明为final,那就说明你已经知道这个方法提供的功能已经满足你要求,不需要进行扩展,并且也不允许任何从此类继承的类来覆写这个方法,但是继承仍然可以继承这个方法,也就是说可以直接使用
3)	当你将final用于类身上时,你就需要仔细考虑,因为一个final类是无法被任何人继承的,那也就意味着此类在一个继承树中是一个叶子类,并且此类的设计已被认为很完美而不需要进行修改或扩展
 
第十四章 抽象类
笔试题
一、	填空题
1.	【基础题】抽象类的关键字是abstract 。
2.	【基础题】抽象类 可以 实现接口,可以继承实体类。
3.	【基础题】抽象类不能被实例化,抽象类可以有构造函数  。
4.	【基础题】如果一个类里有一个以上的抽象方法,则该类必须声明为抽象类,该方法也必须声明为抽象方法 。 
二、	选择题
三、	名词解释
四、	问答题
1.	【中等题】什么是抽象类?
答:
声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。==========================
2.	【中等题】抽象类为什么不能实例化?
答:
抽象类就是类里面含有了抽象的方法。抽象的方法就是没有实现的方法 
有抽象的方法当然不能实例化,如果它能实例 那么这个实例调用那个没有实现的抽象类会有什么结果。所以抽象类不能实例化
3.	【中等题】抽象类的方法是否可同时是static,是否可同时是native,是否可同时是synchronized? 
答:
抽象方法不可被上述三个中的任意一个修饰,抽象方法只能被public或protected修饰,其他修饰符皆不可以。抽象类的一般就是没有什么具体的实现,主要是让子类来帮助他实现。如果在再abstract之前加static,native,synchronized这些修饰符没有任何意义
4.	【中等题】Java中的抽象类有没有对象?
答:
抽象类可以声明对象,但是不能使用自身的构造方法创建对象,但是可以使用子类的构造方法进行创建。 
public abstract class A{} 
public class B extends A{} 
A a = new B();
 
第十五章 接口
笔试题
一、	填空题
二、	选择题
1.	【中等题】下列那些选项符合接口的特征(A C D )
A.	接口中只能包含public、static、final类型的成员变量和public、abstract类型的成员方法
B.	接口有构造方法,可以被实例化。
C.	一个接口不能实现另一个接口,但可以继承多个其他接口
D.	接口中的方法默认都是public、abstract类型的
2.	【基础题】下列哪种定义接口的方式是正确的 ( A ) 
A.	public interface A{ int a(); }
B.	public interface A implement B{}
C.	interface C { int a; }
D.	private interface D{}
E.	abstract interface E{}
3.	【提高题】请指出下列代码错误的地方 (D)
interface Playable {
      void play();
}
interface Bounceable {
      void play();
}

interface Rollable extends Playable, Bounceable {
      Ball ball = new Ball("PingPang");       A
}
class Ball implements Rollable {          B
      private String name;
      public String getName() {
            return name;
      }
      public Ball(String name) {
            this.name = name;        
      }
     public void play() {                   C
           ball = new Ball("Football");           D
            System.out.println(ball.getName());
       }
  }
三、	名词解释
四、	问答题
1.	【中等题】抽象类和接口有什么区别? 
答:
声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。
接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。
2.	【中等题】接口里定义的成员变量都是使用final static修饰的,为什么?
答:
接口就是提供一种统一的”协议”,而接口中的属性也属于“协议”中的成员。它们是公共的,静态的,最终的常量。相当于全局常量。如果接口可以定义变量,但是接口中的方法又都是抽象的,在接口中无法通过行为来修改属性。所以接口不能定义变量。
 
第十六章 异常处理
笔试题
一、	填空题
1.	【基础题】在“异常”类最上层的类叫Throwable,它有两个直接的子类:Exception和Error。 
二、	选择题
2.	【基础题】程序员将可能发生异常的代码放在(A )块中,后面紧跟着一个或多个(B )块。
A.	try 
B.	catch 
C.	try、exception
D.	exception、try
三、	名词解释
四、	问答题
1.	【中等题】运行时异常与一般异常有何异同?
答:
异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常
2.	【基础题】throw和throws关键字有什么区别?
答:
throws 用于抛出方法层次的异常,并且直接由些方法调用异常处理类来处理该异常, 所以它常用在方法的后面。throw 用于方法块里面的代码,比throws的层次要低,比如try...catch ....语句块,表示它抛出异常,但它不会处理它,而是由方法块的throws Exception来调用异常处理类来处理。throw用在程序中,明确表示这里抛出一个异常。  throws用在方法声明的地方,表示这个方法可能会抛出某异常。throw是抛出一个具体的异常类,产生一个异常。throws则是在方法名后标出该方法会产生何种异常需要方法的使用者捕获并处理。
3.	【中等题】JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?
答:
Java通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口。在Java中,每个异常都是一个对象,它是Throwable类或其它子类的实例。当一个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息,调用这个对象的方法可以捕获到这个异常并进行处理。Java的异常处理是通过5个关键词来实现的:try、catch、throw、throws和finally。一般情况下是用try来执行一段程序,如果出现异常,系统会抛出(throws)一个异常,这时候你可以通过它的类型来捕捉(catch)它。
用try来指定一块预防所有"异常"的程序。紧跟在try程序后面,应包含一个catch子句来指定你想要捕捉的"异常"的类型。
throw语句用来明确地抛出一个"异常"。
throws用来标明一个成员函数可能抛出的各种"异常"。
finally为确保一段代码不管发生什么"异常"都被执行一段代码。
可以在一个成员函数调用的外面写一个try语句,在这个成员函数内部写另一个try语句保护其他代码。每当遇到一个try语句,"异常"的框架就放到堆栈上面,直到所有的try语句都完成。如果下一级的try语句没有对某种"异常"进行处理,堆栈就会展开,直到遇到有处理这种"异常"的try语句。
4.	【中等题】请说出Java中的异常处理机制的简单原理和应用?
答:
当JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常。违反语义规则包括2种情况。一种是JAVA类库内置的语义检查。例如数组下标越界,会引发IndexOutOfBoundsException;访问null的对象时会引发NullPointerException。另一种情况就是JAVA允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用throw关键字引发异常。所有的异常都是java.lang.Thowable的子类。
 
第十七章 集合框架
笔试题
一、	填空题
二、	选择题
1.	【基础题】下面哪个类是实现的Set接口 ( C )
A.	Vector
B.	LinkedList
C.	HashSet
D.	Hashtable
2.	【基础题】下列哪个集合可以存放重复数据 ( A  B) 
A.	Collection
B.	List
C.	Map
D.	Set
3.	【基础题】List中能存放一个NULL值吗? (A )  
A.	可以
B.	可以,不过仅仅当List是一个有序的集合的时候
C.	可以,当List为空的时候
D.	不可以
4.	【中等题】下列程序运行结果是 ( C ) 
Class Question{
	public static void main(String args[]){
	TreeMap map = new TreeMap();
	map.put(“one”,”1”);
	map.put(“two”,”2”);
	map.put(“three”,”3”);
	displayMap(map);
}

static void displayMap(TreeMap map){
	Collection c = map.entrySet();
	Iterator i = c.iterator();
	while(i.hasNext()){
	Object o = i.next();
	System.out.print(o.toString());
}
}
}
A.	onetwothree
B.	123
C.	ont = 1 three = 3 two=2
D.	one three two
5.	【提高题】下列哪个类实现了Collection接口 (B D)
A.	Dictionary
B.	List
C.	Map
D.	Set
三、	名词解释
四、	问答题
1.	【中等题】请说出 ArrayList和Vector的区别 
答:
主要从二方面来说. 
同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的
二.数据增长:当需要增长时,Vector 默认增长为原来一培,而ArrayList却是原来的一半
2.	【中等题】请说出HashMap和Hashtable的区别
答:HashMap与HashTable主要从三方面来说。
一.历史原因:Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现 
二.同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的 
三.值:只有HashMap可以让你将空值作为一个表的条目的key或value 
3.	【基础题】Collection 和 Collections的区别  
答:
Collections是个java.util下的类,它包含有各种有关集合操作的静态方法。 
Collection是个java.util下的接口,它是各种集合结构的父接口

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值