chengfengjie / chengfengjie.github.io

我叫MT
1 stars 0 forks source link

java题 #36

Open chengfengjie opened 6 years ago

chengfengjie commented 6 years ago

Java基础

一、HashtableHashMap的区别

1、HashMap是非synchronized的,并可以接受null作为键和值。 2、Hashtablesynchronized的,这意味这Hashtable是线程安全的,多个线程可以共享一个Hashtable 3、由于Hashtable是线程安全的,所以在单线程环境下它比HashMap要慢,如果你不需要同步,只需要单一线程,那么HashMap性能要比Hashtable好 4、可以通过Map m = Collections.synchronizeMap(hashMap);HashMap变成同步的

二、抽象类与接口的区别

抽象类的定义(abstract关键字):

abstract class Person {
    abstract void sayHello();
}

1、抽象类可以提供成员方法的实现细节,而接口中只能存在public abstract方法,接口不能提供方法实现 2、抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的 3、接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法 4、一个类只能继承一个抽象类,而一个类却可以实现多个接口

三、final关键字的使用

1、用来修饰数据,包括成员变量和局部变量,该变量只能被赋值一次并且它的值无法被改变,对于成员变量来讲,我们必须在声明时或构造方法中对他赋值 2、用来修饰方法参数,便是在变量的生存期中它的值不能被改变 3、修饰方法,表示该方法不能被重写 4、修饰类,表示该类无法被继承

四、异常分类和处理机制

1、非检测异常: 运行时异常(凡是直接或者间接继承自RuntimeException类的异常),调用代码不能继续执行,需要立即终止的异常,这种异常不需要调用代码显示的捕捉和处理,使代码简洁明了 2、检测异常:其他继承自Exception的异常,代码需要进一步处理和恢复的异常。 3、InterruptedException异常(线程被中断)

异常处理:

1、尽量避免将异常直接显示在页面或者客户端。 2、避免异常对代码层次结构的污染 3、避免忽略异常,如直接输出到控制台,这没有任何意义,这有可能导致更多的异常 4、避免将异常处理包含在循环语句中 5、避免利用Exception捕获所有潜在异常。

五、StringBuilder内部实现机制

StringBuilder内部有一个字符数组,代码如下:

char[] value;   //字符数组
int count;      //字符串长度

每一次append操作都是将新的字符串加入到可变长的字符数组中,调用toString()方法时,new一个String对象即可.

public String toString() {
        return new String(value, 0, count);// Create a copy, don't share the array
}

注意:StringBuffer实现的功能和StringBuilder一样,只是在操作方法上加了synchronized修饰,是线程安全的