java面试必背代码 java面试题( 四 )


switch(expr1)中,expr1是一个整数表达式 。因此传递给 switch 和 case 语句的参数应该是 int、 short、 char 或者 byte 。long,string 都不能作用于swtich 。
第三十二 , 编程题: 写一个Singleton出来 。
Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在 。
一般Singleton模式通常有几种种形式:
第一种形式: 定义一个类,它的构造函数为private的,它有一个static的private的该类变量,在类初始化时实例话,通过一个public的getInstance方法获取对它的引用,继而调用其中的方法 。
public class Singleton {
private Singleton(){}
//在自己内部定义自己一个实例,是不是很奇怪?
//注意这是private 只供内部调用
private static Singleton instance = new Singleton();
//这里提供了一个供外部访问本class的静态方法,可以直接访问
public static Singleton getInstance() {
return instance;
}
}
第二种形式:
public class Singleton {
private static Singleton instance = null;
public static synchronized Singleton getInstance() {
//这个方法比上面有所改进 , 不用每次都进行生成对象,只是第一次
//使用时生成实例 , 提高了效率!
if (instance==null)
instance=new Singleton();
return instance;}
}
其他形式:
定义一个类,它的构造函数为private的,所有方法为static的 。
一般认为第一种形式要更加安全些
第三十三 Hashtable和HashMap
Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现
HashMap允许将null作为一个entry的key或者value,而Hashtable不允许
还有就是,HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey 。因为contains方法容易让人引起误解 。
最大的不同是 , Hashtable的方法是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap就必须为之提供外同步 。
Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异 。
java基础面试题1.抽象:
抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面 。抽象并不打算了解全部问题 , 而只是选择其中的一部分,暂时不用部分细节 。抽象包括两个方面 , 一是过程抽象,二是数据抽象 。
2.继承:
继承是一种联结类的层次模型 , 并且允许和鼓励类的重用 , 它提供了一种明确表述共性的方法 。对象的一个新类可以从现有的类中派生,这个过程称为类继承 。新类继 承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类) 。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增 加新的方法使之更适合特殊的需要 。
3.封装:
封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面 。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象 。
4. 多态性:
多态性是指允许不同类的对象对同一消息作出响应 。多态性包括参数化多态性和包含多态性 。多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题 。
5、String 和StringBuffer的区别
JAVA平台提供了两个类:String和 StringBuffer , 它们可以储存和操作字符串,即包含多个字符的字符数据 。这个String类提供了数值不可改变的字符串 。而这个 StringBuffer类提供的字符串进行修改 。当你知道字符数据要改变的时候你就可以使用StringBuffer 。典型地,你可以使用 StringBuffers来动态构造字符数据 。

推荐阅读