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.接口中定义变量默认为public、static、final且要设定初始值方法必须是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.接口中定义变量默认为public、static、final且要设定初始值方法必须是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/O、cpu等,但是进程之间的资源是独立的。
执行过程:每个独立的进程程有一个程序运行的入口、顺序执行序列和程序入口。但是线程不能独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
线程是处理器调度的基本单位,但是进程不是。
两者均可并发执行。
二十五、实现线程有哪几种方法?
继承Tread类
Runnable接口
实现Callable接口通过FutureTask包装来创建Tread线程
使用ExecutorService,Callable,Future实现有返回结果的多线程
二十六、线程的生命周期是什么?
创建状态 就绪状态 阻塞状态 运行状态 死亡状态
二十七、简单解释-一下线程休眠,线程强制执行,线程礼让.以及他们的实现方法
线性休眠:进入不可运行状态
sleep()方法
线性强制执行:暂停运行
join()方法
线程礼让:允许其他先执行
yeild()方法
二十八、什么情况下需要线程同步?
两个或多个线程需要访问同一资源时
二十九、什么是流?流的常见种类有哪些?使用流的过程中需要注意哪些问题?
流是指一连串流动的字符,是以先进先出方式发送信息的通道
字节流:
输出流:FileInputStream
输入流:FileOutputStream
字符流:
输入流:FileWriter
输出流:FileReader
缓冲流:
输入流:BufferedWriter
输出流:BufferedReader
注意事项:
创建了记得关闭流
注意线程安全的问题
先关闭输入流再关闭输出流
线程同步
三十、脏读,漏读,幻读
脏读:
所谓脏读是指一个事务中访问到了另外一个事务未提交的数据
漏读:
不可重复读:指在一个事务内根据同一个条件对行记录进行多次查询,但是搜出来的结果却不一致
幻读:指同一个事务内多次查询返回的结果集不一样
三十一、HashMap,Hashmap和hashtable?
HashMap和Hashtable的区别:
Hashtable是线程安全,而HashMap则非线程安全
HashMap可以使用null作为key,而Hashtable则不允许null作为key
HashMap是对Map接口的实现,HashTable实现了Map接口和Dictionary抽象类
ashMap的初始容量为16,Hashtable初始容量为11
Hashtable计算hash是直接使用key的,hashcode对table数组的长度直接进行取模
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.接口中定义变量默认为public、static、final且要设定初始值方法必须是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.接口中定义变量默认为public、static、final且要设定初始值方法必须是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/O、cpu等,但是进程之间的资源是独立的。
执行过程:每个独立的进程程有一个程序运行的入口、顺序执行序列和程序入口。但是线程不能独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
线程是处理器调度的基本单位,但是进程不是。
两者均可并发执行。
二十五、实现线程有哪几种方法?
继承Tread类
Runnable接口
实现Callable接口通过FutureTask包装来创建Tread线程
使用ExecutorService,Callable,Future实现有返回结果的多线程
二十六、线程的生命周期是什么?
创建状态 就绪状态 阻塞状态 运行状态 死亡状态
二十七、简单解释-一下线程休眠,线程强制执行,线程礼让.以及他们的实现方法
线性休眠:进入不可运行状态
sleep()方法
线性强制执行:暂停运行
join()方法
线程礼让:允许其他先执行
yeild()方法
二十八、什么情况下需要线程同步?
两个或多个线程需要访问同一资源时
二十九、什么是流?流的常见种类有哪些?使用流的过程中需要注意哪些问题?
流是指一连串流动的字符,是以先进先出方式发送信息的通道
字节流:
输出流:FileInputStream
输入流:FileOutputStream
字符流:
输入流:FileWriter
输出流:FileReader
缓冲流:
输入流:BufferedWriter
输出流:BufferedReader
注意事项:
创建了记得关闭流
注意线程安全的问题
先关闭输入流再关闭输出流
线程同步
三十、脏读,漏读,不可重复读
脏读:
所谓脏读是指一个事务中访问到了另外一个事务未提交的数据
漏读:
不可重复读:指在一个事务内根据同一个条件对行记录进行多次查询,但是搜出来的结果却不一致
幻读:指同一个事务内多次查询返回的结果集不一样
三十一、HashMap,Hashmap和hashtable?
HashMap和Hashtable的区别:
Hashtable是线程安全,而HashMap则非线程安全
HashMap可以使用null作为key,而Hashtable则不允许null作为key
HashMap是对Map接口的实现,HashTable实现了Map接口和Dictionary抽象类
ashMap的初始容量为16,Hashtable初始容量为11
Hashtable计算hash是直接使用key的,hashcode对table数组的长度直接进行取模
HashSet不是key value结构,仅仅是存储不重复的元素,相当于简化版的HashMap,只是包含HashMap中的key而已
java 面向对象面试题,问答题,构造方法,抽象类,继承,多态,接口,异常总结;的更多相关文章
- php面向对象 封装继承多态 接口、重载、抽象类、最终类总结
1.面向对象 封装继承多态 接口.重载.抽象类.最终类 面向对象 封装继承多态 首先,在解释面向对象之前先解释下什么是面向对象? [面向对象]1.什么是类? 具有相同属性(特征)和方法(行为)的一 ...
- 黑马程序猿——JAVA面向对象的特性:封装,继承,多态
- ----------android培训.java培训.java学习型技术博客.期待与您交流!------------ ...
- Python 入门 之 面向对象的三大特性(封装 / 继承 / 多态)
Python 入门 之 面向对象的三大特性(封装 / 继承 / 多态) 1.面向对象的三大特性: (1)继承 继承是一种创建新类的方式,在Python中,新建的类可以继承一个或多个父类,父类又可以 ...
- Java面向对象理解_代码块_继承_多态_抽象_接口
面线对象: /* 成员变量和局部变量的区别? A:在类中的位置不同 成员变量:在类中方法外 局部变量:在方法定义中或者方法声明上 B:在内存中的位置不同 成员变量:在堆内存 局部变量:在栈内存 C:生 ...
- java面向对象(三)之抽象类,接口,向上转型
java类 java类分为普通类和抽象类,接口,上一节我大概讲了java类的一般格式,今天将抽象类和接口.同时讲一下它们是怎样存储的. 最重要的是理解为什么要有抽象和接口,这样学下来你猜不会迷茫,才能 ...
- Java 面向对象面试题
1.Java面向对象的三种特性 封装:封装是把数据和操作数据的方法封装起来,对数据的访问只能通过已定义的接口进行访问. Java的四种访问控制符: - 默认的(default):不使用任何修饰符,在同 ...
- Java面向对象笔记 • 【第3章 继承与多态】
全部章节 >>>> 本章目录 3.1 包 3.1.1 自定义包 3.1.2 包的导入 3.1.3 包的访问权限 3.1.4 实践练习 3.2 继承 3.2.1 继承概述 3 ...
- Java基础系列 - 抽象类继承和接口实现
package com.inter; /** * 继承和接口的关系,单继承,多接口 * java不支持多继承,但可通过接口实现多重继承 */ public class test2 { public s ...
- java 面向对象(二十四):interface:接口
interface:接口1.使用说明: 1.接口使用interface来定义 * 2.Java中,接口和类是并列的两个结构 * 3.如何定义接口:定义接口中的成员 * * 3.1 JDK7及以前:只能 ...
- 学习博客之Java继承多态接口
这一篇博客主要是对软工前一阶段学习的总结,主要是对Java的学习总结,包括三部分:Java的继承.多态和接口 Java的继承 继承是面向对象的三大特性之一,能够实现软件的复用. Java子类继承父类的 ...
随机推荐
- tp5--路由的使用方法(深入)
懒得写注释,直接上代码 配置文件Route: <?php use think\Route; //tp5路由测试 //动态注册 //Route::rule('路由表达式','路由地址','请求类型 ...
- 2019-2020-1 20199326《Linux内核原理与分析》第六周作业
本周学习了庖丁解牛Linux内核分析第五章:系统调用的三层机制(下),是上一章的延续 实验内容:使用gdb跟踪分析一个系统调用内核函数 上周实验我选择的getpid这个系统系统调用,这次准备使用gdb ...
- Docker 部署 halo 启动时,MySql 连接不上
原因 halo 是部署在 docker 容器内部的,而 MySql 是部署在"宿主机"上的,docker默认的网络模式是bridge,容器内127.0.0.1访问不到的,把网络模式 ...
- 【Linux题目】第四关
1. 如何过滤出已知当前目录下oldboy中的所有一级目录? 提示:不包含oldboy目录下面目录的子目录和隐藏目录,只要一级目录即可. 解答: ls -F|grep / 通过ls -F给目录后面 ...
- 标准库hashlib模块
hashlib模块用于加密相关的操作,3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512, MD5 算法(都是基于hash的算法, ...
- 【STM32 .Net MF开发板学习-05】PC通过Modbus协议远程操控开发板
从2002年就开始接触Modbus协议,以后陆续在PLC.DOS.Windows..Net Micro Framework等系统中使用了该协议,在我以前写的一篇博文中详细记载了这一段经历,有兴趣的朋友 ...
- Leetcode2 两数相加 Python
给出两个 非空 的链表用来表示两个非负的整数.其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字. 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和 ...
- 在Windows中快速配置vim
vim原本是在Linux中的编辑器,如果使用熟练写代码速度可以远高于其它编辑器 当然很多OI比赛也会要求在Linux中进行 然而: 想学Linux,首先要有一个Linux,但有了Linux,这个直播间 ...
- Python2 与 Python3 的区别
python解释器默认编码(python2与python3的区别一) python2 解释器默认编码:ascii python3 解释器默认编码:utf-8 输入(python2与python3的区别 ...
- T - zxa and leaf HDU - 5682 二分+dfs
T - zxa and leaf HDU - 5682 题目大意是:给你一颗树,这棵树有些节点已经设置了它的美丽值,然后剩下一些节点需要我们设置美丽值. 一条边的丑陋程度等于被定义为由这个边缘连接的两 ...