第九章——多线程
- 进程与线程
所谓多线程是指一个进程在执行过程中可以产生多个更小的程序单元,这些更小的单元称为线程
- Thread类与Runnable接口
如果一个类通过继承Thread来实现,那么同一个对象只能调用一次start()方法,为了避免单继承的局限,要想实现多线程要通过实现Runnable接口完成
Runnable接口中只定义了一个抽象方法:public void run()
Thread类是Runnable接口的子类
实现Runnable接口可以实现资源共享
- 线程的状态
创建:在程序中创建了一个线程对象后,新的线程对象处于新建状态
就绪:调用start()方法启动线程
运行:当线程被调用获得处理器资源时,线程就进入了运行状态,自动调用该线程的run()方法
阻塞:特殊情况下,如被人为挂起或需要执行耗时的输入/输出操作时,会让出CPU并暂时中止自己的执行
终止:调用stop()方法或run()方法执行结束
- 线程常用的相关方法
方法摘要 |
|
getName |
|
|
getPriority |
|
interrupt |
|
isAlive |
|
isInterrupted |
|
join |
|
join |
|
join |
|
run |
|
|
|
setPriority |
|
sleep |
|
sleep |
|
start |
|
suspend |
toString |
|
|
yield |
- 线程的优先级:Priority
- 同步:同步代码块和同步方法
- 死锁:线程之间互相等待而造成的程序停滞
第十章——泛型
- Object类可以接收任意的子类对象
- 指定多个泛型
- 通配符
在进行引用传递时泛型类型必须匹配才可以传递,无法使用Object进行操作,通配符“?”可以接收任意泛型对象,不能设置被泛型指定的内容,但可以设置null值
- 泛型的上限extends和下限super
- 泛型与子类继承的限制
子类的泛型类型无法使用父类的泛型类接收
- 泛型接口
一种是直接在子类后声明泛型,另一种是直接在子类实现的接口中明确给出泛型类型,但为了防止安全警告性息的出现,都要指定具体的泛型类型
- 泛型方法
在泛型方法中可以定义泛型参数,参数的类型就是传入数据的类型
- 泛型的嵌套设置
第十一章——Java常用类库
- StringBuffer
方法摘要 |
|
append |
|
append |
|
|
charAt |
delete |
|
deleteCharAt |
|
|
|
|
indexOf |
|
lastIndexOf |
|
lastIndexOf |
|
length |
replace |
|
reverse |
|
|
setCharAt |
|
setLength |
substring |
|
substring |
|
toString |
- 对象的生命周期:初始化、实例化、垃圾回收、对象终结、卸载
一个类加载后进行初始化,然后就可以进行对象的实例化,对象实例化时会调用构造方法完成,当一个对象不再使用时就要等待被垃圾收集,然后对象终结,最终程序卸载
- Math:sqrt(),max(),min(),pow(),round()
- Rantim
表示运行时操作类,是一个封装了JVM进程的类,每一个JVM都对应着一个Runtime类的实例,此实例由JVM运行时为其实例化,Runtime类的构造方法是私有化的(单利模式)
- 垃圾对象回收
Java中有垃圾自动回收机制,可以不定期地释放Java中的垃圾空间,在System类中有也有一个gc()方法,此方法是对Runtime中的gc()方法的封装。一个对象如果不再被任何栈内存引用,那么此对象就可以称为垃圾对象,等待被回收,等待的时间是不确定的,所以可以直接调用System.gc()方法进行垃圾回收,单在实际的开发中,垃圾回收基本上都是由系统自动完成的,除非特殊情况,一般都很少直接去调用gc()方法。
- 对象克隆技术
覆写Object中的clone()方法,而且对象所在类中必须实现Cloneable接口,Cloneable接口中没有任何方法定义,所以此接口在设计上称为是一种标识接口,表示对象可以被克隆
- Arrays
- Comparable与Comparator
sort()也可以对Object数组进行排序,需要实现接口
Comparable接口用于指定对象排序规则,其中只有一个compareTo方法
如果一个类没有实现Comparable接口,可以使用Comparator接口实现,但需要单独指定好一个比较器的比较规则类。
第十二章——Java IO
- File
方法摘要 |
|
|
|
|
createNewFile |
|
delete |
|
deleteOnExit |
|
|
|
exists |
getName |
|
getParent |
|
getParentFile |
|
getPath |
|
|
isDirectory |
|
isFile |
|
length |
|
list |
|
listFiles |
|
listRoots |
|
mkdir |
|
mkdirs |
- 字节流
操作时必须使用接收File类的实例
追加新内容,将append的值设置为true
File类中存在一个length()方法,可以取得文件的大小
- 字符流
一个字符等于两个字节
- 字节流与字符流的区别
实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字节流在操作时使用了缓冲去,通过缓冲区在操作文件,不关闭字节流依然可以进行操作,在关闭字符流时会强制性地将缓冲区中的内容进行输出,但如果程序没有关闭,则缓冲区的内容是无法输出的。
- 转换流
- 内存操作流
将输入和输出的位置设置在内存上,一般在生成一些临时的信息时才使用
- 打印流
打印流是输出信息最方便的类,可
- System类对IO的支持
System表示系统类
System.out是PrintStream的对象
System.err表示的是错误信息输出
System.in实际上是一个键盘的输入流
- BufferReader
只能接收字符输入流的实例
- Scanner
Scanner类可以接收任意的输入功能
- 对象序列化
对象序列化就是把一个对象变为二进制的数据流的一种方法
第十三章——Java类集
所谓类集就是一个动态的对象数组,类集框架本身不受对象数组长度的限制
- Collection接口
方法摘要 |
||
|
||
|
addAll |
|
|
clear |
|
|
||
|
containsAll |
|
|
||
|
isEmpty |
|
iterator |
||
|
||
|
removeAll |
|
|
retainAll |
|
|
size |
|
|
toArray |
|
|
toArray |
Collertion接口是单值存放的最大父类接口
- List接口
List是Collection的子接口,可以保存各个重复的内容
- List接口的常用子类
Arraylist是List子类,可以直接通过对象的多态性为List接口实例化
LinkedList表示的是一个链表的操作类
- Set接口
不能加入重复的元素
- Set接口常用子类
散列的存放HashSet
有序的存放TreeSet,TreeSet中的每个对象所在的类必需都实现Comparable才可以正常的使用,比较器操作时如果某个属性没有进行比较的指定,则会认为是同一对象
- SortedSet接口
TreeSet中实现了SortedSet接口,实现此接口的子类都隶属于排序的子类
- Map接口
Map接口中的每个元素都使用“key——value”的形式储存
Map.Entry接口是Map内部定义的一个接口,每一个“key——value”的数据都保存在了Map.Entry接口实例之后,再在Map集合中插入一个Map.Entry的实例化对象
- Map接口常用子类
HashMap:无序存放,key不允许重复
TreeMap:可以排序的Map集合
WeakHashMap:弱引用的Map集合,当集合中的某些内容不再使用时清除掉无用的数据,使用gc进行回收
IdentityHashMap:key可以重复的Map集合
- 输出Map
其本身不能直接使用迭代进行输出,通过entrySet()变为Set接口对象
- 集合工具类:Collection
第十四章——枚举
enum定义枚举类型,使用“枚举.variable”的形式取出枚举的指定内容,“枚举.values()”表示得到全部枚举的内容
取得枚举信息:name()取得名称,ordinal()取得编号
为枚举对象属性赋值:
每一个枚举对象都可以包含多个属性,可以通过构造方法赋值,通过setter方法为属性赋值
第十五章——Jva反射机制
通过一个实例化对象找到一个类的完整信息,所有类的对象实际上都是java.lang.Class类的实例
第十七章——Java数据库编程
- JDBC驱动分类
与平台无关的用于执行SQL语句的标准Java API
JDBC本地驱动:使用各个数据库生产商提供的JDBC驱动程序,只能 应用在特定的数据库上会丧失程序的可移植性
JDBC网络驱动:将JDBC转换为与DBMS无关的网络协议,之后又被某个服务器转换为一种DBMS协议。能将它的纯Java客户机连接到多种不同的数据库上,是最为灵活的JDBC驱动程序。
本地协议纯JDBC驱动:将JDBC调用直接转换为DBMS所使用的网络协议,从客户机器上直接调用DBMS服务器,用于Intranet访问
- JDBC操作步骤
第十九章——Java网络编程
- URL与URLConnection
URL是统一资源定位符,可以直接使用此类找到互联网上的资源
URLConnection是封装访问远程网络资源一般方法的类,通过它可以建立与远程服务器的连接,检查远程资源的一些属性
- URLEncoder与URLDecoder
URLEncoder可以为传递内容进行编码,而URLDecoder可以为传递内容进行解码
- TCP程序设计
在Java中使用Socket(即嵌套字)完成TCP程序开发,服务器端使用ServerSocket等待客户端的连接,每一个客户端都使用一个Socket对象表示
- UDP程序设计
TCP的所有操作都必须建立可靠的连接,会浪费大量的系统性能。UDP(不可靠的连接)协议,被广泛用于聊天工具。使用DatagramSocket类用于完成信息的发送操作,使用DatagramPacket类包装要发送的信息。