32、String s = new String("xyz");创建了几个 String Object?
New 了一个,”XYZ”本来又是一个
两个
33、float 型 float f=3.4 是否正确?
Ø 报错,应当是 float f=3.4f
Ø 如果是 float f=3(整数)正确
35、说出一些常用的类,包,接口,请各举 5 个
常用的类: BufferedReader BufferedWriter FileReader FileWirter String
Integer
常 用 的 包 : java.lang java.awt java.io java.util java.sql javax.xml
javax.sevlet javax.ejb. java.net javax.faces
常用的接口: List Map Document NodeList EjbObject EjbHome SessionBean
EntityBean
36、java 中会存在内存泄漏吗,请简单描述。
会。如:int i,i2; return (i-i2); //when i 为足够大的正数,i2 为足够大的负数。
结果会造成溢位,导致错误。java 面试题
- 13 -
37、java中实现多态的机制是什么?
静态的多态:方法名相同,参数个数或类型不相同。(overloading)
动态的多态:
子类覆盖父类的方法,将子类的实例传与父类的引用调用的是子类的方法
实现接口的实例传与接口的引用调用的实现类的方法。
38、垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主
动通知虚拟机进行垃圾回收?
动态内存
存放类实例
静态内存
类本身
垃圾收集主要针对的是动态内存,一般当内存不够用时会进行垃圾收集。
或通过 System.gc()手动收集,但不保证一定执行。
39、静态变量和实例变量的区别?
static i = 10; //常量
class A a; a.i =10;//可变
静态方法可以调用静态变量。
实现方法可以调用静态变量、实例变量
41、是否可以从一个 static 方法内部发出对非 static 方法的调用?
不可以,如果其中包含对象的 method();不能保证对象初始化.
42、写 clone()方法时,通常都有一行代码,是什么?
Clone 有缺省行为,super.clone();他负责产生正确大小的空间,并逐位复制。
43、JAVA 语言如何进行异常处理,关键字:throws,throw,try,catch,finally 分别代
表什么意义?在 try 块中可以抛出异常吗?
Try:执行部分,产生异常
Catch:捕捉异常
Finally:不管有没有异常都执行
Throws:在方法声明处声明要抛出的异常,调用者必须对其进行处理。
Throw:抛出一个异常
在 try 中可以抛出异常,一般与声明的异常相同。
自定义异常要继承于 Exception 或 Exception 的子类
45、冒泡排序法
//相邻两个数比较,将最小或最大的放到后面,最后面数的不参与比较
public class BubbleSort {
private static int al[] = new int[10];
public BubbleSort() {
al[0]=2;
al[1]=3;
al[2]=23;
al[3]=45;
al[4]=1;
al[5]=67;
al[6]=23;
al[7]=80;
al[8]=35;
al[9]=72;
}
public static void main(String[] args) {
BubbleSort bs = new BubbleSort();java 面试题
- 14 -
System.out.println("排序前:");
display(al);
for(int i=0;i<al.length;i++) {
for (int j = 0; j < al.length-i-1; j++) {
if(al[j]>al[j+1]) {
swap(j,j+1);
}
}
}
System.out.println();
System.out.println("排序后:");
display(al);
}
private static void display(int[] al2) {
for (int i = 0; i < al2.length; i++) {
System.out.print(al2[i]+" ");
}
}
private static void swap(int i, int j) {
int temp = al[i];
al[i]= al[j];
al[j] = temp;
}
}
46、String and StringBuffer 的区别?
String:长度给定不可变,当多个字符串联合时要先转为StringBuffer,再联合,
速度慢。
StringBuffer:长度可变,可以将多个字符串值直接联合,效率高
47、用 java代码编写堆栈
public class Stack {
int[] data;
int maxSize;
int top;
public Stack(int maxSize) {
this.maxSize = maxSize;
data = new int[maxSize];
top = -1;
}
/**
* 依次加入数据
* @param data 要加入的数据
* @return 添加是否成功
*/
public boolean push(int data) {
if(top+1== maxSize) {
System.out.println("栈已满!");
return false;
}
this.data[++top] = data;
return true;
}
/**
* 从栈中取出数据
* @return 取出的数据
*/
public int pop() throws Exception{
if(top==-1) {java 面试题
- 15 -
throw new Exception("栈已空!");
}
return this.data[top--];
}
public static void main(String[] args) throws Exception {
Stack stack=new Stack(1000);
stack.push(1);
stack.push(2);
stack.push(3);
stack.push(4);
stack.push(5);
while(stack.top>=0)
{
System.out.println(stack.pop());
}
}
}
48、集合的作用是什么?
数据的传送 增、删、改、查、constainsAll,可以存放不同类型的对象。
49、集合的通用方法有那些?通用方法是什么?(操作)
集合 List 的遍历方法有:
Iterator:
Enumeration
For
Get
set
Collection 的通用方法有:
Iterator()
Add()
Clear();
remove()
50、说出 ArrayList,Vector, LinkedList 的存储性能和特性 HashMap 和 Hashtable
的区别
ArrayList Vector:以数组的方式存储,增、删慢,查、改快
ArrayList:线程不安全,速度快
Vector:线程安全,速度慢(synchoronized)
LikedList: 以单链表的方式存储,增、删快,查、改慢
HashMap 与 Hashtable 都实现的 Map 接口,HashTable 线程安全,HashMap 线程不安全。
51、Collection 和 Collections 的区别。
Collection 是集合的根接口,其下有 set 及 list
Collections 是集合的算法。
52、Se t 里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是
equals()? 它们有何区别?用 contains 来区分是否有重复的对象。还是都不用。
在比较时先调用 hashCode 方法,如果不相同,证明不相等。
如果相同,再调用 equals 方法,如果 equals 方法相同,证明相等,不相同,证明不相等。
==:主要用在基本数据类型及引用
Equals:主要是对象或对象引用的比较。
集合中是否包含某一个元素用 contains 来判断。java 面试题
- 16 -
53、List, Se t, Map 是否继承自 Collection 接口?
List,set 继承于 Collection
Map 没有继承于 Collection,其相对是独立的。
属于 Collection 类型的对象,可以通过构造函数将一个集合构造成另外一个集合。
54、面向对象的特征有哪些方面
1.抽象:
找共性,将共有的属性、方法放到父类中
2.继承:
子类继承于父类,具有父类的所有属性与方法,可以重用,也可以覆盖。
3.封装:
一个类包括多个属性及方法。
4. 多态性:
动态:
静态:
55、String 是最基本的数据类型吗?
基本数据类型包括 byte、int、char、long、float、double、boolean 和 short。
java.lang.String 类是 final 类型的,因此不可以继承这个类、不能修改这个类。为
了提高效率节省空间,我们应该用 StringBuffer 类
56、int 和 Integer 有什么区别?
Int 是基本数据类型,不是对象,占一个内存空间,没有方法。与其同类的有
long,char,doble
Integer 是封装类,具有方法及属性。与其同类的有 Long,Double.Float
57、运行时异常与一般异常有何异同?
运行时异常:java JVM 抛出的异常,代码中不用处理。
一般异常:用户抛出的异常,如果用 throws 声明了,调用这个方法的代码必须对
其处理。
58、&和&&的区别?
&:与: 左边若为 false 右边还执行。
&&:短路与,左边若为 false 右边不执行。
59、final, finally, finalize 的区别?
final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继
承。
finally 是异常处理语句结构的一部分,表示总是执行。
finalize 是 Object 类的一个方法,在垃圾收集器执行的时候会调用被回收对象的
此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。
算符可以用来决定某对象的类是否实现了接口。