java 面向对象面试题,问答题,构造方法,抽象类,继承,多态,接口,异常总结;

一,构造方法的特点

面向对象的思想是如何在java展现的呢? 就是通过类和对象

类是一组相关的属性和行为的集合。是一个抽象的概念。

对象是该类事物的具体表现形式。具体存在的个体。

一、抽象类的抽象方法的特点是什么

abstract修饰的类称为抽象类

特点:

1、抽象类不能有对象(不能用new关键字来实例化对象)

2、抽象方法一定是在抽象类的,但是抽象类不一定有抽象方法

3、子类继承抽象类必须重写抽象类中的抽象方法

4、使用extends关键字来继承

要注意的是抽象方法没有方法体

二、抽象类的抽象方法的特点是什么?

一、使用abstract修饰符修饰的类被称为抽象类;

        抽象类不能实例化对象,只能被继承;

二、使用abstract修饰符修饰的方法被称为抽象方法;

 抽象方法不能有方法体,子类必须重写抽象类中所有的抽象方法;

 

三、抽象类中不一定包含抽象方法,但包含抽象方法的类一定是抽象类;

三、方法重载的方法重写是什么?有什么区别?

重写是子类的方法覆盖父类的方法,要求方法名和参数都相同

重载是在同一个类中的两个或两个以上的方法,拥有相同的方法名,但是参数却不相同,方法体也不相同,最常见的重载的例子就是类的构造函数,可以参考API帮助文档看看类的构造方法

四、使用继承有什么特点?继承的优点是什么?

子类是一种特殊的类型,而不只是父类的一个角色

子类的实例不需要变成另一个类的对象

子类扩展,而不是覆盖或者使父类的功能失效

 优点

新的实现很容易,因为大部分是继承而来的

很容易修改和扩展已有的实现

缺点

打破了封装,因为基类向子类暴露了实现细节

白盒重用,因为基类的内部细节通常对子类是可见的

当父类的实现改变时可能要相应的对子类做出改变

不能在运行时改变由父类继承来的实现

五、多态的特点?有什么优点

多态的特点:

一、要有继承;
二、要有重写;
三、父类引用指向子类对象

多态的优点
1.可替换性(substitutability)。多态对已存在代码具有可替换性。例如,多态对圆Circle类工作,对其他任何圆形几何体,如圆环,也同样工作。
2.可扩充性(extensibility)。多态对代码具有可扩充性。增加新的子类不影响已存在类的多态性、继承性,以及其他特性的运行和操作。实际上新加子类更容易获得多态功能。例如,在实现了圆锥、半圆锥以及半球体的多态基础上,很容易增添球体类的多态性。
3.接口性(interface-ability)。多态是超类通过方法签名,向子类提供了一个共同接口,由子类来完善或者覆盖它而实现的。如图8.3 所示。图中超类Shape规定了两个实现多态的接口方法,computeArea()以及computeVolume()。子类,如Circle和Sphere为了实现多态,完善或者覆盖这两个接口方法。
4.灵活性(flexibility)。它在应用中体现了灵活多样的操作,提高了使用效率。
5.简化性(simplicity)。多态简化对应用软件的代码编写和修改过程,尤其在处理大量对象的运算和操作时,这个特点尤为突出和重要。

六、多态的实现方式是什么

使用父类作为方法形参实现多态

使用父类作为方法返回值实现多态

七、如何编写接口

编写接口:   public interface UsbInterface {

              /**

              * USB接口提供服务。

               */

             void service();

}

实现接口   public class UDisk implements UsbInterface {

             public void service() {

             System.out.println("连接USB口,开始传输数据。");

             }

}

使用接口    UsbInterface uDisk = new UDisk();

uDisk.service();

八、接口的作用是什么?

接口是一种协议。例如两个开发者,开发时间完全不一致,那么需要两个人的配合开发,则需要一个人讲接口写好,定义好其中所有的变量命名规范、函数定义规范。具体实现类的开发人员则只需要按照接口实现相应功能即可。

接口更像是一种定义的规范

九、接口和抽象类有什么异同

相同点:

1.都不能被实例化

2.接口的实现类或者抽象的子类都必须实现类接口或者继承了抽象才可以被实例化

不同点

1.接口只有定义,方法不能再接口中实现,实现接口的类要实现接口中的所有方法;抽象类可以有定义与实现方法可以在抽象类中实现

2.接口要实现,抽象要继承,一个类可以实现多个接口,但只能继承一个抽象类

3.接口强调设计理念“has-a”的关系,抽象类强调“is-a”关系

4.接口中定义变量默认为publicstaticfinal且要设定初始值方法必须是publicstatic只能是这两个抽象类可以有自己的成员变量也可以有非抽象的成员方法,成员默认值为:default

5.接口被运用于比较常用的功能,抽象更倾向于充当公共类的角色

6.接口是定义规范的,抽象是对公共部分的抽取

十、什么是异常,你是如何理解的

一、运行时异常:我们可以不处理,当出现这种的异常时,总是由虚拟机接管;

二、检查时异常:我们经常遇到的IO异常及SQL异常就属于检查式异常;java编译器要求我们必须对出现的这些异常进行catch所以面对这种异常不管我们是否愿意,只能自己去写一堆catch来捕捉这些异常。

十一、如何处理异常,异常的关键字是什么

Try:执行可能产生异常的代码

Catch:捕获异常;

Finally:无论是否发生异常,代码总能执行;

声明异常 throws:声明方法可能要抛出的各种异常;

抛出异常 throw:手动抛出异常;

十二、常见的异常种类有哪些

Exception 异常层次结构的根类;

ArithmeticException 算术错误情形,如以零作除数;

ArrayIndexOutOfBoundsException 数组下标越界

NullPointerException 尝试访问 null 对象成员

ClassNotFoundException 不能加载所需的类

IllegalArgumentException 方法接收到非法参数

ClassCastException 对象强制类型转换出错

NumberFormatException 数字格式转换异常,如把"abc"转换成数字

 

十三、方法重载的方法重写是什么?有什么区别

重载:一个类中有一个方法A,你又在这个类中创建了一个方法B,方法B的名字和A一样,返回值类型也一  

样,但是参数的类型或个数不同,此时B重载了A。

重写:一个类M继承另一个类N,N中有一个方法A,这时你在M写了一个方法B,方法B的名字、返回值以及参数都和A一样,此时B重写了A。

方法重写与方法重载的相同点

1)方法的名称相同

2)都可以用于抽象方法和非抽象方法之间。

方法重写与方法重载的不同点:

1)方法重写要求参数签名必须相同,而方法的重载要求参数签名必须不同。

2)方法重写要求返回类型必须相同,而方法重载对此没有限制。

3)方法重写只能用于子类重写父类的方法,而方法的重载用于同一个类的所有方法(包括从父类中继承的方法)

4)方法重写对方法的访问权限和抛出的异常有特殊的要求,而方法的重载对此没有任何限制

5)父类的一个方法只能被子类重写一次,而一个方法在所在的类中可以被多次重载。

十四、多态的特点?有什么优点

特点

1.可替换性(substitutability)。多态对已存在代码具有可替换性。例如,多态对圆Circle类工作,对其他任何圆形几何体,如圆环,也同样工作。
2.可扩充性(extensibility)。多态对代码具有可扩充性。增加新的子类不影响已存在类的多态性、继承性,以及其他特性的运行和操作。实际上新加子类更容易获得多态功能。例如,在实现了圆锥、半圆锥以及半球体的多态基础上,很容易增添球体类的多态性。
3.接口性(interface-ability)。多态是超类通过方法签名,向子类提供了一个共同接口,由子类来完善或者覆盖它而实现的。如图8.3 所示。图中超类Shape规定了两个实现多态的接口方法,computeArea()以及computeVolume()。子类,如Circle和Sphere为了实现多态,完善或者覆盖这两个接口方法。
4.灵活性(flexibility)。它在应用中体现了灵活多样的操作,提高了使用效率。
5.简化性(simplicity)。多态简化对应用软件的代码编写和修改过程,尤其在处理大量对象的运算和操作时,这个特点尤为突出和重要。

优点

减少类中代码量

提高代码的可扩展性和可维护性

 

十五、多态的实现方式是什么

使用父类作为方法形参实现多态

使用父类作为方法返回值实现多态

十六、如何编写接口

public interface MyInterface {

    public void foo()

    //其他方法

}

十七、接口的作用是什么?

1.可以被多继承

2.设计和实现完全分离

3.更自然的使用多态

4.更容易搭建程序框架

5.更容易更换实现

 

十八、接口和抽象类有什么异同

相同点:

1.都不能被实例化

2.接口的实现类或者抽象的子类都必须实现类接口或者继承了抽象才可以被实例化

不同点:

1.接口只有定义,方法不能再接口中实现,实现接口的类要实现接口中的所有方法;抽象类可以有定义与实现方法可以在抽象类中实现

2.接口要实现,抽象要继承,一个类可以实现多个接口,但只能继承一个抽象类

3.接口强调设计理念“has-a”的关系,抽象类强调“is-a”关系

4.接口中定义变量默认为publicstaticfinal且要设定初始值方法必须是publicstatic只能是这两个抽象类可以有自己的成员变量也可以有非抽象的成员方法,成员默认值为:default

5.接口被运用于比较常用的功能,抽象更倾向于充当公共类的角色

6.接口是定义规范的,抽象是对公共部分的抽取

十九、如何使用log4j记录日志

1. 定义配置文件

2. 配置日志信息输出目的地APPender

3. 配置日志信息格式

二十、常见的集合有哪些?他们有什么常用方法

ArraysList

Boolean add (Object o)

Void add (int index, Object o)

Int size()

Object get(int index)

Boolean contains(Object o)

Boolean remove(Object o)

Object remove(int index)

LinkedList

void addFirst(Object o)

void addLast(Object o)

Object getFirst()

Object getLast()

Object removeFirst()

Object removeLast()

 

二十一、list, set , map各有什么异同?

list:储存一组不唯一,有序的对象

set:储存一组唯一,无序的对象

map:储存一组成对的键-值对象,key不要求有序,不允许重复,value不要求有序,但允许重复

二十二、和数组类型采用相同结构的是哪个集合?

ArraysList

二十三、什么是foreach循环?

foreach 语句为数组或对象集合中的每个元素重复一个嵌入语句组

二十四、线程与进程的区别?

进程:是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态概念,竞争计算机系统资源的基本单位。

线程:是进程的一个执行单元,是进程内科调度实体。比进程更小的独立运行的基本单位。线程也被称为轻量级进程。

区别:

地址空间:同一进程的线程共享本进程的地址空间,而进程之间则是独立的地址空间。

资源拥有:同一进程内的线程共享本进程的资源如内存、I/Ocpu等,但是进程之间的资源是独立的。

执行过程:每个独立的进程程有一个程序运行的入口、顺序执行序列和程序入口。但是线程不能独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。

线程是处理器调度的基本单位,但是进程不是。

两者均可并发执行。

二十五、实现线程有哪几种方法?

继承Tread

Runnable接口

实现Callable接口通过FutureTask包装来创建Tread线程

使用ExecutorServiceCallableFuture实现有返回结果的多线程

二十六、线程的生命周期是什么?

创建状态   就绪状态   阻塞状态  运行状态   死亡状态

二十七、简单解释-一下线程休眠,线程强制执行,线程礼让.以及他们的实现方法

线性休眠:进入不可运行状态

sleep()方法

线性强制执行:暂停运行

join()方法

线程礼让:允许其他先执行

yeild()方法

二十八、什么情况下需要线程同步?

两个或多个线程需要访问同一资源时

二十九、什么是流?流的常见种类有哪些?使用流的过程中需要注意哪些问题?

流是指一连串流动的字符,是以先进先出方式发送信息的通道

字节流:

输出流:FileInputStream

输入流:FileOutputStream

字符流:

输入流:FileWriter

输出流:FileReader

缓冲流:

输入流:BufferedWriter

输出流:BufferedReader

注意事项:

创建了记得关闭流

注意线程安全的问题

先关闭输入流再关闭输出流

线程同步

三十、脏读,漏读,幻读

脏读:

所谓脏读是指一个事务中访问到了另外一个事务未提交的数据

漏读:

不可重复读:指在一个事务内根据同一个条件对行记录进行多次查询,但是搜出来的结果却不一致

幻读:指同一个事务内多次查询返回的结果集不一样

三十一、HashMap,Hashmaphashtable

HashMapHashtable的区别:

Hashtable是线程安全,而HashMap则非线程安全

HashMap可以使用null作为key,而Hashtable则不允许null作为key

HashMap是对Map接口的实现,HashTable实现了Map接口和Dictionary抽象类

ashMap的初始容量为16Hashtable初始容量为11

Hashtable计算hash是直接使用key的,hashcodetable数组的长度直接进行取模

HashSet不是key value结构,仅仅是存储不重复的元素,相当于简化版的HashMap,只是包含HashMap中的key而已

 

构造方法的特点

面向对象的思想是如何在java展现的呢? 就是通过类和对象

类是一组相关的属性和行为的集合。是一个抽象的概念。

对象是该类事物的具体表现形式。具体存在的个体。

一、抽象类的抽象方法的特点是什么?

abstract修饰的类称为抽象类

特点:

1、抽象类不能有对象(不能用new关键字来实例化对象)

2、抽象方法一定是在抽象类的,但是抽象类不一定有抽象方法

3、子类继承抽象类必须重写抽象类中的抽象方法

4、使用extends关键字来继承

要注意的是抽象方法没有方法体

二、抽象类的抽象方法的特点是什么?

一、使用abstract修饰符修饰的类被称为抽象类;

        抽象类不能实例化对象,只能被继承;

二、使用abstract修饰符修饰的方法被称为抽象方法;

 抽象方法不能有方法体,子类必须重写抽象类中所有的抽象方法;

 

三、抽象类中不一定包含抽象方法,但包含抽象方法的类一定是抽象类;

三、方法重载的方法重写是什么?有什么区别?

重写是子类的方法覆盖父类的方法,要求方法名和参数都相同

重载是在同一个类中的两个或两个以上的方法,拥有相同的方法名,但是参数却不相同,方法体也不相同,最常见的重载的例子就是类的构造函数,可以参考API帮助文档看看类的构造方法

四、使用继承有什么特点?继承的优点是什么?

子类是一种特殊的类型,而不只是父类的一个角色

子类的实例不需要变成另一个类的对象

子类扩展,而不是覆盖或者使父类的功能失效

 

优点

新的实现很容易,因为大部分是继承而来的

很容易修改和扩展已有的实现

缺点

打破了封装,因为基类向子类暴露了实现细节

白盒重用,因为基类的内部细节通常对子类是可见的

当父类的实现改变时可能要相应的对子类做出改变

不能在运行时改变由父类继承来的实现

五、多态的特点?有什么优点?

多态的特点:

一、要有继承;
二、要有重写;
三、父类引用指向子类对象

多态的优点
1.可替换性(substitutability)。多态对已存在代码具有可替换性。例如,多态对圆Circle类工作,对其他任何圆形几何体,如圆环,也同样工作。
2.可扩充性(extensibility)。多态对代码具有可扩充性。增加新的子类不影响已存在类的多态性、继承性,以及其他特性的运行和操作。实际上新加子类更容易获得多态功能。例如,在实现了圆锥、半圆锥以及半球体的多态基础上,很容易增添球体类的多态性。
3.接口性(interface-ability)。多态是超类通过方法签名,向子类提供了一个共同接口,由子类来完善或者覆盖它而实现的。如图8.3 所示。图中超类Shape规定了两个实现多态的接口方法,computeArea()以及computeVolume()。子类,如Circle和Sphere为了实现多态,完善或者覆盖这两个接口方法。
4.灵活性(flexibility)。它在应用中体现了灵活多样的操作,提高了使用效率。
5.简化性(simplicity)。多态简化对应用软件的代码编写和修改过程,尤其在处理大量对象的运算和操作时,这个特点尤为突出和重要。

六、多态的实现方式是什么?

使用父类作为方法形参实现多态

使用父类作为方法返回值实现多态

七、如何编写接口?

编写接口:   public interface UsbInterface {

              /**

              * USB接口提供服务。

               */

             void service();

}

实现接口   public class UDisk implements UsbInterface {

             public void service() {

             System.out.println("连接USB口,开始传输数据。");

             }

}

使用接口    UsbInterface uDisk = new UDisk();

uDisk.service();

 

 

八、接口的作用是什么?

接口是一种协议。例如两个开发者,开发时间完全不一致,那么需要两个人的配合开发,则需要一个人讲接口写好,定义好其中所有的变量命名规范、函数定义规范。具体实现类的开发人员则只需要按照接口实现相应功能即可。

接口更像是一种定义的规范

九、接口和抽象类有什么异同?

相同点:

1.都不能被实例化

2.接口的实现类或者抽象的子类都必须实现类接口或者继承了抽象才可以被实例化

不同点

1.接口只有定义,方法不能再接口中实现,实现接口的类要实现接口中的所有方法;抽象类可以有定义与实现方法可以在抽象类中实现

2.接口要实现,抽象要继承,一个类可以实现多个接口,但只能继承一个抽象类

3.接口强调设计理念“has-a”的关系,抽象类强调“is-a”关系

4.接口中定义变量默认为publicstaticfinal且要设定初始值方法必须是publicstatic只能是这两个抽象类可以有自己的成员变量也可以有非抽象的成员方法,成员默认值为:default

5.接口被运用于比较常用的功能,抽象更倾向于充当公共类的角色

6.接口是定义规范的,抽象是对公共部分的抽取

十、什么是异常,你是如何理解的?

一、运行时异常:我们可以不处理,当出现这种的异常时,总是由虚拟机接管;

二、检查时异常:我们经常遇到的IO异常及SQL异常就属于检查式异常;java编译器要求我们必须对出现的这些异常进行catch所以面对这种异常不管我们是否愿意,只能自己去写一堆catch来捕捉这些异常。

十一、如何处理异常,异常的关键字是什么?

Try:执行可能产生异常的代码

Catch:捕获异常;

Finally:无论是否发生异常,代码总能执行;

声明异常 throws:声明方法可能要抛出的各种异常;

抛出异常 throw:手动抛出异常;

十二、常见的异常种类有哪些?

Exception 异常层次结构的根类;

ArithmeticException 算术错误情形,如以零作除数;

ArrayIndexOutOfBoundsException 数组下标越界

NullPointerException 尝试访问 null 对象成员

ClassNotFoundException 不能加载所需的类

IllegalArgumentException 方法接收到非法参数

ClassCastException 对象强制类型转换出错

NumberFormatException 数字格式转换异常,如把"abc"转换成数字

 

十三、方法重载的方法重写是什么?有什么区别

重载:一个类中有一个方法A,你又在这个类中创建了一个方法B,方法B的名字和A一样,返回值类型也一  

样,但是参数的类型或个数不同,此时B重载了A。

重写:一个类M继承另一个类N,N中有一个方法A,这时你在M写了一个方法B,方法B的名字、返回值以及参数都和A一样,此时B重写了A。

方法重写与方法重载的相同点

1)方法的名称相同

2)都可以用于抽象方法和非抽象方法之间。

方法重写与方法重载的不同点:

1)方法重写要求参数签名必须相同,而方法的重载要求参数签名必须不同。

2)方法重写要求返回类型必须相同,而方法重载对此没有限制。

3)方法重写只能用于子类重写父类的方法,而方法的重载用于同一个类的所有方法(包括从父类中继承的方法)

4)方法重写对方法的访问权限和抛出的异常有特殊的要求,而方法的重载对此没有任何限制

5)父类的一个方法只能被子类重写一次,而一个方法在所在的类中可以被多次重载。

十四、多态的特点?有什么优点?

特点

1.可替换性(substitutability)。多态对已存在代码具有可替换性。例如,多态对圆Circle类工作,对其他任何圆形几何体,如圆环,也同样工作。
2.可扩充性(extensibility)。多态对代码具有可扩充性。增加新的子类不影响已存在类的多态性、继承性,以及其他特性的运行和操作。实际上新加子类更容易获得多态功能。例如,在实现了圆锥、半圆锥以及半球体的多态基础上,很容易增添球体类的多态性。
3.接口性(interface-ability)。多态是超类通过方法签名,向子类提供了一个共同接口,由子类来完善或者覆盖它而实现的。如图8.3 所示。图中超类Shape规定了两个实现多态的接口方法,computeArea()以及computeVolume()。子类,如Circle和Sphere为了实现多态,完善或者覆盖这两个接口方法。
4.灵活性(flexibility)。它在应用中体现了灵活多样的操作,提高了使用效率。
5.简化性(simplicity)。多态简化对应用软件的代码编写和修改过程,尤其在处理大量对象的运算和操作时,这个特点尤为突出和重要。

优点

减少类中代码量

提高代码的可扩展性和可维护性

 

十五、多态的实现方式是什么?

使用父类作为方法形参实现多态

使用父类作为方法返回值实现多态

十六、如何编写接口?

public interface MyInterface {

    public void foo()

    //其他方法

}

十七、接口的作用是什么?

1.可以被多继承

2.设计和实现完全分离

3.更自然的使用多态

4.更容易搭建程序框架

5.更容易更换实现

 

十八、接口和抽象类有什么异同?

相同点:

1.都不能被实例化

2.接口的实现类或者抽象的子类都必须实现类接口或者继承了抽象才可以被实例化

不同点:

1.接口只有定义,方法不能再接口中实现,实现接口的类要实现接口中的所有方法;抽象类可以有定义与实现方法可以在抽象类中实现

2.接口要实现,抽象要继承,一个类可以实现多个接口,但只能继承一个抽象类

3.接口强调设计理念“has-a”的关系,抽象类强调“is-a”关系

4.接口中定义变量默认为publicstaticfinal且要设定初始值方法必须是publicstatic只能是这两个抽象类可以有自己的成员变量也可以有非抽象的成员方法,成员默认值为:default

5.接口被运用于比较常用的功能,抽象更倾向于充当公共类的角色

6.接口是定义规范的,抽象是对公共部分的抽取

十九、如何使用log4j记录日志?

1. 定义配置文件

2. 配置日志信息输出目的地APPender

3. 配置日志信息格式

二十、常见的集合有哪些?他们有什么常用方法?

ArraysList

Boolean add (Object o)

Void add (int index, Object o)

Int size()

Object get(int index)

Boolean contains(Object o)

Boolean remove(Object o)

Object remove(int index)

LinkedList

void addFirst(Object o)

void addLast(Object o)

Object getFirst()

Object getLast()

Object removeFirst()

Object removeLast()

 

二十一、list, set , map各有什么异同?

list:储存一组不唯一,有序的对象

set:储存一组唯一,无序的对象

map:储存一组成对的键-值对象,key不要求有序,不允许重复,value不要求有序,但允许重复

二十二、和数组类型采用相同结构的是哪个集合?

ArraysList

二十三、什么是foreach循环?

foreach 语句为数组或对象集合中的每个元素重复一个嵌入语句组

二十四、线程与进程的区别?

进程:是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态概念,竞争计算机系统资源的基本单位。

线程:是进程的一个执行单元,是进程内科调度实体。比进程更小的独立运行的基本单位。线程也被称为轻量级进程。

区别:

地址空间:同一进程的线程共享本进程的地址空间,而进程之间则是独立的地址空间。

资源拥有:同一进程内的线程共享本进程的资源如内存、I/Ocpu等,但是进程之间的资源是独立的。

执行过程:每个独立的进程程有一个程序运行的入口、顺序执行序列和程序入口。但是线程不能独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。

线程是处理器调度的基本单位,但是进程不是。

两者均可并发执行。

二十五、实现线程有哪几种方法?

继承Tread

Runnable接口

实现Callable接口通过FutureTask包装来创建Tread线程

使用ExecutorServiceCallableFuture实现有返回结果的多线程

二十六、线程的生命周期是什么?

创建状态   就绪状态   阻塞状态  运行状态   死亡状态

二十七、简单解释-一下线程休眠,线程强制执行,线程礼让.以及他们的实现方法

线性休眠:进入不可运行状态

sleep()方法

线性强制执行:暂停运行

join()方法

线程礼让:允许其他先执行

yeild()方法

二十八、什么情况下需要线程同步?

两个或多个线程需要访问同一资源时

二十九、什么是流?流的常见种类有哪些?使用流的过程中需要注意哪些问题?

流是指一连串流动的字符,是以先进先出方式发送信息的通道

字节流:

输出流:FileInputStream

输入流:FileOutputStream

字符流:

输入流:FileWriter

输出流:FileReader

缓冲流:

输入流:BufferedWriter

输出流:BufferedReader

注意事项:

创建了记得关闭流

注意线程安全的问题

先关闭输入流再关闭输出流

线程同步

三十、脏读,漏读,不可重复读

脏读:

所谓脏读是指一个事务中访问到了另外一个事务未提交的数据

漏读:

不可重复读:指在一个事务内根据同一个条件对行记录进行多次查询,但是搜出来的结果却不一致

幻读:指同一个事务内多次查询返回的结果集不一样

三十一、HashMap,Hashmaphashtable

HashMapHashtable的区别:

Hashtable是线程安全,而HashMap则非线程安全

HashMap可以使用null作为key,而Hashtable则不允许null作为key

HashMap是对Map接口的实现,HashTable实现了Map接口和Dictionary抽象类

ashMap的初始容量为16Hashtable初始容量为11

Hashtable计算hash是直接使用key的,hashcodetable数组的长度直接进行取模

HashSet不是key value结构,仅仅是存储不重复的元素,相当于简化版的HashMap,只是包含HashMap中的key而已

 

原文地址:https://www.cnblogs.com/henshuai/p/12925909.html