java--面向对象重点
Posted cxiaojie
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java--面向对象重点相关的知识,希望对你有一定的参考价值。
构造方法的特点
1.名称和类名相同
2.没有返回值类型
3.参数列表不同
抽象类和抽象方法的特点
1.抽象类和抽象方法都通过abstract关键字来修饰。
2.抽象类不能实例化。抽象类中可以没有、有一个或多个抽象方法,甚至全部方法都可以是抽象方法。
3.抽象方法只有方法声明,没有方法实现。有抽象方法的类必须声明为抽象类。子类必须重写所有的抽象方法才能实例化,否则子类还是个抽象类
方法重载和重写是什么,有什么区别
重写:对父类的方法进行重新编写
要求方法名相同,参数列表相同,返回值类型相同,访问修饰符不能严与父类
重载:一个类中定义多个同名的方法,但要求每个方法具有不同的参数的类型或参数的个数
要求方法名相同,参数列表不同,包括参数的类型或个数,与返回值类型、访问修饰符无关
使用继承有什么特点,继承的优点是什么
特点:
1.只支持单继承,不支持多继承
2.可以多层继承
3.,所有的Java类(自己定义的,Jdk提供的)都继承自 Object类
优点
1.将重复代码抽取到父类中
2.方便修改代码,减少代码量
多态的特点是什么,有什么优点
特点:
继承是多态的基础,没有继承就没有多态
优点:
1.可替换性
2.可扩充性
3.接口性
4.灵活性
5.简化性
多态的实现方式是什么
1.编写具有继承关系的父类和子类
2.子类重写父类方法
3.使用父类的引用指向子类的对象
如何编写接口
接口的作用是什么
丰富Java面向对象的思想
提供简单,规范性
提高维护拓展性
增强安全严密性
接口和抽象类有什么异同
抽象类内部可以有方法的实现细节,而接口中只能存在public abstract方法;
抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的;
接口中不能含有静态代码块以及静态方法,而抽象类中可以有静态代码旷和静态方法;
一个类只能继承一个抽象类,而一个类可以实现多个接口。
什么是异常,你是如何理解的
在运行时发生的不正常事件,会中断正在运行的程序
如何处理异常,异常的关键字是什么
捕获异常,声明异常,抛出异常
关键字:try,catch,finally,throw,throws
常见的异常种类有哪些
Exception:异常层次结构的根类
ArithmeException:数组错误情形
ArrayIndexOutOfBoundsException:数组下标越界
NullPointerException:尝试访问NULL对象成员
ClassNotFoundException:不能加载所需要的类
InputMismatchException:欲得到的数据类型与实际数据类型不符
IllegalArgumentException:方法接收到非法参数
ClassCaseException:对象强制类型转换出错
NumberFormatException:数字格式转换异常
如何使用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
注意事项:
创建了记得关闭流
注意线程安全的问题
先关闭输入流再关闭输出流
Hashset和Treeset区别:
实现方式:
HashSet:HashSet是哈希表实现的
TreeSet:TreeSet是二差树实现的
数度据是否有序
HashSet:HashSet中的数据是无序的
TreeSet:Treeset中的数据是自动排好序的
是否可以放入问null值
HashSet:可以放入null,但只能放入一个null
TreeSet:不允许放入null值
B树,即二叉搜索树:
所有非叶子结点至多拥有两个儿子(Left和Right)
所有结点存储一个关键字
非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树
B-树,一种多路搜索树(并不是二叉的)
定义任意非叶子结点最多只有M个儿子;且M>2
根结点的儿子数为[2, M]
除根结点以外的非叶子结点的儿子数为[M/2, M]
.每个结点存放至少M/2-1(取上整)和至多M-1个关键字;(至少2个关键字)
非叶子结点的关键字个数=指向儿子的指针个数-1
非叶子结点的关键字:K[1], K[2], …, K[M-1];且K[i] < K[i+1]
非叶子结点的指针:P[1], P[2], …, P[M];其中P[1]指向关键字小于K[1]的子树,P[M]指向关键字大于K[M-1]的子树,其它P[i]指向关键字属于(K[i-1], K[i])的子树
所有叶子结点位于同一层
B+树,B+树是B-树的变体,也是一种多路搜索树
其定义基本与B-树同
非叶子结点的子树指针与关键字个数相同
非叶子结点的子树指针P[i],指向关键字值属于[K[i], K[i+1])的子树(B-树是开区间)
为所有叶子结点增加一个链指针
所有关键字都在叶子结点出现;
线程同步
脏读:
所谓脏读是指一个事务中访问到了另外一个事务未提交的数据
漏读:
不可重复读:指在一个事务内根据同一个条件对行记录进行多次查询,但是搜出来的结果却不一致
幻读:指同一个事务内多次查询返回的结果集不一样
HashMap,Hashset和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--面向对象重点的主要内容,如果未能解决你的问题,请参考以下文章