0
点赞
收藏
分享

微信扫一扫

java部分知识点总结

一、异常

java部分知识点总结_抽象类

1.throw和throws的区别

throws:用来声明一个方法可能产生的所有异常,不做任何处理而是将异常往上传,谁调用我我就抛给谁。

用在方法声明后面,跟的是异常类名

可以跟多个异常类名,用逗号隔开

表示抛出异常,由该方法的调用者来处理

throws表示出现异常的一种可能性,并不一定会发生这些异常

throw:则是用来抛出一个具体的异常类型。

用在方法体内,跟的是异常对象名

只能抛出一个异常对象名

表示抛出异常,由方法体内的语句处理

throw则是抛出了异常,执行throw则一定抛出了某种异常

2.常见异常总结

java部分知识点总结_数组_02

算术异常类:ArithmeticExecption 空指针异常类:NullPointerException 类型强制转换异常:ClassCastException 数组负下标异常:NegativeArrayException 数组下标越界异常:ArrayIndexOutOfBoundsException 违背安全原则异常:SecturityException 文件已结束异常:EOFException 文件未找到异常:FileNotFoundException 字符串转换为数字异常:NumberFormatException 操作数据库异常:SQLException 输入输出异常:IOException 方法未找到异常:NoSuchMethodException

3.Error和Exception

Error 和 Exception 都是 Throwable 的子类,用于表示程序出现了不正常的情况。区别在于:

Error 表示系统级的错误和程序不必处理的异常,是恢复不是不可能但很困难的情况下的一种严重问题,比如内存溢出,不可能指望程序能处理这样的情况。

Exception 表示需要捕捉或者需要程序进行处理的异常,是一种设计或实现问题,也就是说,它表示如果程序运行正常,从不会发生的情况。

二、集合

java部分知识点总结_抽象类_03

1.List,Set,Map三者区别

List(有序性): List 接口存储一组不唯一(可以有多个元素引用相同的对象)、有序的对象。

Set(不重复):不允许重复的集合,不会有多个元素引用相同的对象。

Map(键值对): 使用键值对存储。Map 会维护与 Key 有关联的值。两个 Key可以引用相同的对象,但 Key 不能重复,典型的 Key 是String类型,但也可以是任何对象。

2.底层实现

java部分知识点总结_抽象方法_04

ArrayList,Vector:数组 LinkedList:双向链表

HashSet:哈希表 LinkedHashSet:链表和哈希表构成 TreeSet:红黑树

ConcurrentHashMap:1.7分段数组+链表,1.8数组加链表/红黑树 Queue:队列

Hashtable:哈希表 TreeMap:红黑树 LinkedHashMap:HashMap+双向链表

HashMap:1.7>,数组+单向链表;1.8<数组+(单向链表/红黑树),下图为put方法

java部分知识点总结_数组_05

3.安全性

集合中有部分线程是安全的,如:vector,Hashtable,StringBuffer,ConcurrentHashMap

4.comparable 和 Comparator的区别

comparable接口出自java.lang包 它有一个 compareTo(Object obj)方法用来排序

comparator接口出自 java.util 包它有一个compare(Object obj1, Object obj2)方法用来排序

5.哈希冲突

键(key)经过hash函数得到的结果作为地址去存放当前的键值对,但是却发现该地址已经被占用,这个时候就会发生冲突。这个冲突就是hash冲突了。

java部分知识点总结_抽象方法_06

解决方法:拉链法,开放地址法,再哈希法,链地址法,建立公共溢出区

6.HashCode与equals

1.如果两个对象相等,则hashcode一定也是相同的

2.两个对象相等,对两个equals方法返回true

3.两个对象有相同的hashcode值,它们也不一定是相等的

4.综上,equals方法被覆盖过,则hashCode方法也必须被覆盖

5.hashCode()的默认行为是对堆上的对象产生独特值。如果没有重写hashCode(),则该class的两个对象无论如何都不会相等(即使这两个对象指向相同的数据)。

7.扩容机制

1.ArrayList:jdk1.8之前默认容量为10,1.8之后是0,加载因子1,扩容增量:0.5

2.Vector:默认容量10,加载因子1,扩容增量1

3.HashSet:默认容量16,加载因子0.75,扩容增量1

4.HashMap:默认容量16,加载因子0.75,扩容增量1

5.HashTable:默认容量11,加载因子0.75,扩容增量1 +1

6.StringBuffer:16 StringBuilder:

三、线程和进程

1.定义

进程:有独立的内存空间,进程中的数据存放空间(堆空间和栈空间)是独立的,至少有一个线程。线程:堆空间是共享的,栈空间是独立的,线程消耗的资源也比进程小,相互之间可以影响的,又称为轻型进程或进程元。

进程——资源分配的最小单位,线程——程序执行的最小单位”

2.区别

根本区别:进程是操作系统分配资源的最小单位,线程是任务调动和执行的最小单位。

在开销方面:每个进程都有独立的代码和数据空间,程序切换会有较大的开销。线程之间共享代码和数据,每个线程都有自己独立的栈和调度器,线程之间的切换的开销较小。

所处环境:一个操作系统中可以运行多个进程,一个进程中有多个线程同时执行。

内存分配方面:系统在运行时会为每个进程分配内存,系统不会单独为每个线程分配内存。

包含关系:创建进程时系统会自动创建一个主线程由主线程完成,进程中有多线程时,由多线程共同执行完成。

3.并发和并行

并行:指两个或多个事件在同一时刻点发生; 并发:指两个或多个事件在同一时间段内发生。

4.Files的常用方法有什么

existcreateFilecreateDirectorywritereadcopysizedeletemove

四、IO流

java部分知识点总结_数组_07

流的种类

1.按流的方向分为输入流和输出流

2.按流的数据单位分为字节流和字符流

3.按流的功能分为节点流和处理流

操作流程

1.创建并打开流

2.通过流完成数据传输

3.关闭流(降低系统损耗,不会让系统资源过早使用完)

五、类

1.抽象类与普通类

1.普通类可以去实例化调用,抽象类不能被实例化,因为它是存在于一种概念而不非具体

2.普通类和抽象类都可以被继承,但是抽象类被继承后子类必须重写继承的方法,除非自身也是抽象类

2.接口和抽象类

(1)接口

接口使用interface修饰;

接口不能实例化;

类可以实现多个接口;

①java8之前,接口中的方法都是抽象方法,省略了public abstract。②java8之后;接口中可以定义静态方法,静态方法必须有方法体,普通方法没有方法体,需要被实现;

(2)抽象类

抽象类使用abstract修饰;

抽象类不能被实例化;

抽象类只能单继承;

抽象类中可以包含抽象方法和非抽象方法,非抽象方法需要有方法体; 如果一个类继承了抽象类,①如果实现了所有的抽象方法,子类可以不是抽象类;②如果没有实现所有的抽象方法,子类仍然是抽象类。

3.操纵字符串的类

(1)String

String是不可变对象,每次对String类型的改变时都会生成一个新的对象。

(2)StringBuilder

线程不安全,效率高,多用于单线程。

(3)StringBuffer

线程安全,由于加锁的原因,效率不如StringBuilder,多用于多线程。

不频繁的字符串操作使用String,操作频繁的情况不建议使用String。

StringBuilder > StringBuffer > String。


举报

相关推荐

0 条评论