Java复习大纲——Java应用程序设计

第九章——多线程

  1. 进程与线程

所谓多线程是指一个进程在执行过程中可以产生多个更小的程序单元,这些更小的单元称为线程

  1. Thread类与Runnable接口

如果一个类通过继承Thread来实现,那么同一个对象只能调用一次start()方法,为了避免单继承的局限,要想实现多线程要通过实现Runnable接口完成

Runnable接口中只定义了一个抽象方法:public void run()

Thread类是Runnable接口的子类

实现Runnable接口可以实现资源共享

  1. 线程的状态

创建:在程序中创建了一个线程对象后,新的线程对象处于新建状态

就绪:调用start()方法启动线程

运行:当线程被调用获得处理器资源时,线程就进入了运行状态,自动调用该线程的run()方法

阻塞:特殊情况下,如被人为挂起或需要执行耗时的输入/输出操作时,会让出CPU并暂时中止自己的执行

终止:调用stop()方法或run()方法执行结束

  1. 线程常用的相关方法

方法摘要

 String

getName()
          返回该线程的名称。

 int

getPriority()
          返回线程的优先级。

 void

interrupt()
          中断线程。

 boolean

isAlive()
          测试线程是否处于活动状态。

 boolean

isInterrupted()
          测试线程是否已经中断。

 void

join()
          等待该线程终止。

 void

join(long millis)
          等待该线程终止的时间最长为 millis 毫秒。

 void

join(long millis, int nanos)
          等待该线程终止的时间最长为 millis 毫秒 + nanos 纳秒。

 void

run()
          如果该线程是使用独立的 Runnable 运行对象构造的,则调用该 Runnable 对象的 run 方法;否则,该方法不执行任何操作并返回。

 void

setName(String name)
          改变线程名称,使之与参数 name 相同。

 void

setPriority(int newPriority)
          更改线程的优先级。

static void

sleep(long millis)
          在指定的毫秒数内让当前正在执行的线程休眠(暂停执行),此操作受到系统计时器和调度程序精度和准确性的影响。

static void

sleep(long millis, int nanos)
          在指定的毫秒数加指定的纳秒数内让当前正在执行的线程休眠(暂停执行),此操作受到系统计时器和调度程序精度和准确性的影响。

 void

start()
          使该线程开始执行;Java 虚拟机调用该线程的 run 方法。

 void

suspend()
          已过时。 该方法已经遭到反对,因为它具有固有的死锁倾向。如果目标线程挂起时在保护关键系统资源的监视器上保持有锁,则在目标线程重新开始以前任何线程都不能访问该资源。如果重新开始目标线程的线程想在调用 resume 之前锁定该监视器,则会发生死锁。这类死锁通常会证明自己是冻结的进程。有关更多信息,请参阅为何不赞成使用 Thread.stopThread.suspend Thread.resume

 String

toString()
          返回该线程的字符串表示形式,包括线程名称、优先级和线程组。

static void

yield()
          暂停当前正在执行的线程对象,并执行其他线程。

  1. 线程的优先级:Priority
  2. 同步:同步代码块和同步方法
  3. 死锁:线程之间互相等待而造成的程序停滞

第十章——泛型

  1. Object类可以接收任意的子类对象
  2. 指定多个泛型
  3. 通配符

在进行引用传递时泛型类型必须匹配才可以传递,无法使用Object进行操作,通配符“?”可以接收任意泛型对象,不能设置被泛型指定的内容,但可以设置null值

  1. 泛型的上限extends和下限super
  2. 泛型与子类继承的限制

子类的泛型类型无法使用父类的泛型类接收

  1. 泛型接口

一种是直接在子类后声明泛型,另一种是直接在子类实现的接口中明确给出泛型类型,但为了防止安全警告性息的出现,都要指定具体的泛型类型

  1. 泛型方法

在泛型方法中可以定义泛型参数,参数的类型就是传入数据的类型

  1. 泛型的嵌套设置

第十一章——Java常用类库

  1. StringBuffer

方法摘要

 StringBuffer

append(char[] str, int offset, int len)
          将 char 数组参数的子数组的字符串表示形式追加到此序列。

 StringBuffer

append(StringBuffer sb)
          将指定的 StringBuffer 追加到此序列中。

 char

charAt(int index)
          返回此序列中指定索引处的 char 值。

 StringBuffer

delete(int start, int end)
          移除此序列的子字符串中的字符。

 StringBuffer

deleteCharAt(int index)
          移除此序列指定位置的 char

 int

indexOf(String str)
          返回第一次出现的指定子字符串在该字符串中的索引。

 int

indexOf(String str, int fromIndex)
          从指定的索引处开始,返回第一次出现的指定子字符串在该字符串中的索引。

 StringBuffer

insert(int offset, String str)
          将字符串插入此字符序列中。

 int

lastIndexOf(String str)
          返回最右边出现的指定子字符串在此字符串中的索引。

 int

lastIndexOf(String str, int fromIndex)
          返回最后一次出现的指定子字符串在此字符串中的索引。

 int

length()
          返回长度(字符数)。

 StringBuffer

replace(int start, int end, String str)
          使用给定 String 中的字符替换此序列的子字符串中的字符。

 StringBuffer

reverse()
          将此字符序列用其反转形式取代。

 void

setCharAt(int index, char ch)
          将给定索引处的字符设置为 ch

 void

setLength(int newLength)
          设置字符序列的长度。

 String

substring(int start)
          返回一个新的 String,它包含此字符序列当前所包含的字符子序列。

 String

substring(int start, int end)
          返回一个新的 String,它包含此序列当前所包含的字符子序列。

 String

toString()
          返回此序列中数据的字符串表示形式。

  1. 对象的生命周期:初始化、实例化、垃圾回收、对象终结、卸载

一个类加载后进行初始化,然后就可以进行对象的实例化,对象实例化时会调用构造方法完成,当一个对象不再使用时就要等待被垃圾收集,然后对象终结,最终程序卸载

  1. Math:sqrt(),max(),min(),pow(),round()
  2. Rantim

表示运行时操作类,是一个封装了JVM进程的类,每一个JVM都对应着一个Runtime类的实例,此实例由JVM运行时为其实例化,Runtime类的构造方法是私有化的(单利模式)

  1. 垃圾对象回收

Java中有垃圾自动回收机制,可以不定期地释放Java中的垃圾空间,在System类中有也有一个gc()方法,此方法是对Runtime中的gc()方法的封装。一个对象如果不再被任何栈内存引用,那么此对象就可以称为垃圾对象,等待被回收,等待的时间是不确定的,所以可以直接调用System.gc()方法进行垃圾回收,单在实际的开发中,垃圾回收基本上都是由系统自动完成的,除非特殊情况,一般都很少直接去调用gc()方法。

  1. 对象克隆技术

覆写Object中的clone()方法,而且对象所在类中必须实现Cloneable接口,Cloneable接口中没有任何方法定义,所以此接口在设计上称为是一种标识接口,表示对象可以被克隆

  1. Arrays

  1. Comparable与Comparator

sort()也可以对Object数组进行排序,需要实现接口

Comparable接口用于指定对象排序规则,其中只有一个compareTo方法

如果一个类没有实现Comparable接口,可以使用Comparator接口实现,但需要单独指定好一个比较器的比较规则类。

第十二章——Java IO

  1. File

方法摘要

 int

compareTo(File pathname)
          按字母顺序比较两个抽象路径名。

 boolean

createNewFile()
          当且仅当不存在具有此抽象路径名指定名称的文件时,不可分地创建一个新的空文件。

 boolean

delete()
          删除此抽象路径名表示的文件或目录。

 void

deleteOnExit()
          在虚拟机终止时,请求删除此抽象路径名表示的文件或目录。

 boolean

equals(Object obj)
          测试此抽象路径名与给定对象是否相等。

 boolean

exists()
          测试此抽象路径名表示的文件或目录是否存在。

 String

getName()
          返回由此抽象路径名表示的文件或目录的名称。

 String

getParent()
          返回此抽象路径名父目录的路径名字符串;如果此路径名没有指定父目录,则返回 null

 File

getParentFile()
          返回此抽象路径名父目录的抽象路径名;如果此路径名没有指定父目录,则返回 null

 String

getPath()
          将此抽象路径名转换为一个路径名字符串。

 boolean

isDirectory()
          测试此抽象路径名表示的文件是否是一个目录。

 boolean

isFile()
          测试此抽象路径名表示的文件是否是一个标准文件。

 long

length()
          返回由此抽象路径名表示的文件的长度。

 String[]

list()
          返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。

 File[]

listFiles()
          返回一个抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件。

static File[]

listRoots()
          列出可用的文件系统根。

 boolean

mkdir()
          创建此抽象路径名指定的目录。

 boolean

mkdirs()
          创建此抽象路径名指定的目录,包括所有必需但不存在的父目录。

  1. 字节流

操作时必须使用接收File类的实例

      追加新内容,将append的值设置为true

      File类中存在一个length()方法,可以取得文件的大小

  1. 字符流

一个字符等于两个字节

  1. 字节流与字符流的区别

实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字节流在操作时使用了缓冲去,通过缓冲区在操作文件,不关闭字节流依然可以进行操作,在关闭字符流时会强制性地将缓冲区中的内容进行输出,但如果程序没有关闭,则缓冲区的内容是无法输出的。

  1. 转换流
  2. 内存操作流

将输入和输出的位置设置在内存上,一般在生成一些临时的信息时才使用

  1. 打印流

打印流是输出信息最方便的类,可

  1. System类对IO的支持

System表示系统类

System.out是PrintStream的对象

System.err表示的是错误信息输出

System.in实际上是一个键盘的输入流

  1. BufferReader

只能接收字符输入流的实例

  1. Scanner

Scanner类可以接收任意的输入功能

  1. 对象序列化

对象序列化就是把一个对象变为二进制的数据流的一种方法

第十三章——Java类集

所谓类集就是一个动态的对象数组,类集框架本身不受对象数组长度的限制

 

  1. Collection接口

方法摘要

 boolean

add(E e)
          确保此 collection 包含指定的元素(可选操作)。

 boolean

addAll(Collection<? extends E> c)
          将指定 collection 中的所有元素都添加到此 collection 中(可选操作)。

 void

clear()
          移除此 collection 中的所有元素(可选操作)。

 boolean

contains(Object o)
          如果此 collection 包含指定的元素,则返回 true。

 boolean

containsAll(Collection<?> c)
          如果此 collection 包含指定 collection 中的所有元素,则返回 true。

 boolean

equals(Object o)
          比较此 collection 与指定对象是否相等。

 boolean

isEmpty()
          如果此 collection 不包含元素,则返回 true。

 Iterator<E>

iterator()
          返回在此 collection 的元素上进行迭代的迭代器。

 boolean

remove(Object o)
          从此 collection 中移除指定元素的单个实例,如果存在的话(可选操作)。

 boolean

removeAll(Collection<?> c)
          移除此 collection 中那些也包含在指定 collection 中的所有元素(可选操作)。

 boolean

retainAll(Collection<?> c)
          仅保留此 collection 中那些也包含在指定 collection 的元素(可选操作)。

 int

size()
          返回此 collection 中的元素数。

 Object[]

toArray()
          返回包含此 collection 中所有元素的数组。

<T> T[]

toArray(T[] a)
          返回包含此 collection 中所有元素的数组;返回数组的运行时类型与指定数组的运行时类型相同。

Collertion接口是单值存放的最大父类接口

  1. List接口

List是Collection的子接口,可以保存各个重复的内容

  1. List接口的常用子类

Arraylist是List子类,可以直接通过对象的多态性为List接口实例化

LinkedList表示的是一个链表的操作类

  1. Set接口

不能加入重复的元素

  1. Set接口常用子类

散列的存放HashSet

有序的存放TreeSet,TreeSet中的每个对象所在的类必需都实现Comparable才可以正常的使用,比较器操作时如果某个属性没有进行比较的指定,则会认为是同一对象

  1. SortedSet接口

TreeSet中实现了SortedSet接口,实现此接口的子类都隶属于排序的子类

  1. Map接口

Map接口中的每个元素都使用“key——value”的形式储存

Map.Entry接口是Map内部定义的一个接口,每一个“key——value”的数据都保存在了Map.Entry接口实例之后,再在Map集合中插入一个Map.Entry的实例化对象

  1. Map接口常用子类

HashMap:无序存放,key不允许重复

TreeMap:可以排序的Map集合

WeakHashMap:弱引用的Map集合,当集合中的某些内容不再使用时清除掉无用的数据,使用gc进行回收

IdentityHashMap:key可以重复的Map集合

  1. 输出Map

其本身不能直接使用迭代进行输出,通过entrySet()变为Set接口对象

  1. 集合工具类:Collection

第十四章——枚举

      enum定义枚举类型,使用“枚举.variable”的形式取出枚举的指定内容,“枚举.values()”表示得到全部枚举的内容

      取得枚举信息:name()取得名称,ordinal()取得编号

      为枚举对象属性赋值:

每一个枚举对象都可以包含多个属性,可以通过构造方法赋值,通过setter方法为属性赋值

第十五章——Jva反射机制

通过一个实例化对象找到一个类的完整信息,所有类的对象实际上都是java.lang.Class类的实例

第十七章——Java数据库编程

  1. JDBC驱动分类

与平台无关的用于执行SQL语句的标准Java API

  JDBC本地驱动:使用各个数据库生产商提供的JDBC驱动程序,只能     应用在特定的数据库上会丧失程序的可移植性

JDBC网络驱动:将JDBC转换为与DBMS无关的网络协议,之后又被某个服务器转换为一种DBMS协议。能将它的纯Java客户机连接到多种不同的数据库上,是最为灵活的JDBC驱动程序。

本地协议纯JDBC驱动:将JDBC调用直接转换为DBMS所使用的网络协议,从客户机器上直接调用DBMS服务器,用于Intranet访问

          

  1. JDBC操作步骤

 

第十九章——Java网络编程

  1. URL与URLConnection

URL是统一资源定位符,可以直接使用此类找到互联网上的资源

URLConnection是封装访问远程网络资源一般方法的类,通过它可以建立与远程服务器的连接,检查远程资源的一些属性

  1. URLEncoder与URLDecoder

URLEncoder可以为传递内容进行编码,而URLDecoder可以为传递内容进行解码

  1. TCP程序设计

在Java中使用Socket(即嵌套字)完成TCP程序开发,服务器端使用ServerSocket等待客户端的连接,每一个客户端都使用一个Socket对象表示

  1. UDP程序设计

TCP的所有操作都必须建立可靠的连接,会浪费大量的系统性能。UDP(不可靠的连接)协议,被广泛用于聊天工具。使用DatagramSocket类用于完成信息的发送操作,使用DatagramPacket类包装要发送的信息。

猜你喜欢

转载自blog.csdn.net/qq_36750352/article/details/86318201