菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
247
0

学习笔记(三)--->《Java 8编程官方参考教程(第9版).pdf》:第十章到十二章学习笔记

原创
05/13 14:22
阅读数 98761

回到顶部

注:本文声明事项。

本博文整理者:刘军

本博文出自于: 《Java8 编程官方参考教程》一书

声明:1:转载请标注出处。本文不得作为商业活动。若有违本之,则本人不负法律责任。违法者自负一切法律责任。

          2: 本书对应的jdk为 jdk8版本

          3:因为内容容量太大,编辑器无法承受于是给拆分了以下版本:

《Java 8编程官方参考教程(第9版).pdf》学习笔记(一)--->第一章到六章学习笔记讲:java的历史和演变、Java概述、数据类型、变量和数组、运算符、控制语句、类 等内容            

《Java 8编程官方参考教程(第9版).pdf》学习笔记(二)--->第七章到九章学习笔记讲:java 方法、继承详解、包和接口

学习笔记(三)--->《Java 8编程官方参考教程(第9版).pdf》:第十章到九章学习笔记 : 讲 java 异常处理、 java多线程编程  、(枚举、自动装箱与注解)

___________________________________________________________________________________________________________________________

《Java 8编程官方参考教程(第9版)》pdf 下载地址:http://pan.baidu.com/s/1o7Zp3Mq 密码:     33cf   

____________________________________________________________________________________________________________



第10章 异常处理


10.1 异常处理的基础知识

image

image

image


10.2 异常类型

image

image

10.3 未捕获的异常

image

image

image

10.4 使用try和

image

  1 class Exc2 {
  2   public static void main(String args[]) {
  3     int d, a;
  4 
  5     try { // monitor a block of code.
  6       d = 0;
  7       a = 42 / d;
  8       System.out.println("This will not be printed.");
  9     } catch (ArithmeticException e) { // catch divide-by-zero error
 10       System.out.println("Division by zero.");
 11     }
 12     System.out.println("After catch statement.");
 13   }
 14 }

image

image

  1 // Handle an exception and move on.
  2 import java.util.Random;
  3 
  4 class HandleError {
  5   public static void main(String args[]) {
  6     int a=0, b=0, c=0;
  7     Random r = new Random();
  8 
  9     for(int i=0; i<32000; i++) {
 10       try {
 11         b = r.nextInt();
 12         c = r.nextInt();
 13         a = 12345 / (b/c);
 14       } catch (ArithmeticException e) {
 15         System.out.println("Division by zero.");
 16         a = 0; // set a to zero and continue
 17       }
 18       System.out.println("a: " + a);
 19     }
 20   }
 21 }

image

  1 catch (ArithmeticException e) {
  2   System.out.println("Exception: " + e);
  3   a = 0; // set a to zero and continue
  4 }
  5 

image


10.5 多条catch子句

image

  1 // Demonstrate multiple catch statements.
  2 class MultipleCatches {
  3   public static void main(String args[]) {
  4     try {
  5       int a = args.length;
  6       System.out.println("a = " + a);
  7       int b = 42 / a;
  8       int c[] = { 1 };
  9       c[42] = 99;
 10     } catch(ArithmeticException e) {
 11       System.out.println("Divide by 0: " + e);
 12     } catch(ArrayIndexOutOfBoundsException e) {
 13       System.out.println("Array index oob: " + e);
 14     }
 15     System.out.println("After try/catch blocks.");
 16   }
 17 }
 18 

image

image

  1 /*  This program contains an error.
  2 
  3    A subclass must come before its superclass in
  4    a series of catch statements. If not,
  5    unreachable code will be created and a
  6    compile-time error will result.
  7 */
  8 class SuperSubCatch {
  9   public static void main(String args[]) {
 10     try {
 11       int a = 0;
 12       int b = 42 / a;
 13     } catch(Exception e) {
 14       System.out.println("Generic Exception catch.");
 15     }
 16     /* This catch is never reached because
 17        ArithmeticException is a subclass of Exception. */
 18     catch(ArithmeticException e) { // ERROR - unreachable
 19       System.out.println("This is never reached.");
 20     }
 21   }
 22 }
 23 

image

10.6 嵌套的try语句

image

image

  1 // An example nested try statements.
  2 class NestTry {
  3   public static void main(String args[]) {
  4     try {
  5       int a = args.length;
  6 
  7       /* If no command line args are present,
  8          the following statement will generate
  9          a divide-by-zero exception. */
 10       int b = 42 / a;
 11 
 12       System.out.println("a = " + a);
 13 
 14       try { // nested try block
 15         /* If one command line arg is used,
 16            then an divide-by-zero exception
 17            will be generated by the following code. */
 18         if(a==1) a = a/(a-a); // division by zero
 19 
 20         /* If two command line args are used
 21            then generate an out-of-bounds exception. */
 22         if(a==2) {
 23           int c[] = { 1 };
 24           c[42] = 99; // generate an out-of-bounds exception
 25         }
 26       } catch(ArrayIndexOutOfBoundsException e) {
 27         System.out.println("Array index out-of-bounds: " + e);
 28       }
 29 
 30     } catch(ArithmeticException e) {
 31       System.out.println("Divide by 0: " + e);
 32     }
 33   }
 34 }
 35 

image

image

  1 /* Try statements can be implicitly nested via
  2    calls to methods. */
  3 class MethNestTry {
  4   static void nesttry(int a) {
  5     try { // nested try block
  6       /* If one command line arg is used,
  7          then an divide-by-zero exception
  8          will be generated by the following code. */
  9       if(a==1) a = a/(a-a); // division by zero
 10 
 11       /* If two command line args are used
 12          then generate an out-of-bounds exception. */
 13       if(a==2) {
 14         int c[] = { 1 };
 15         c[42] = 99; // generate an out-of-bounds exception
 16       }
 17     } catch(ArrayIndexOutOfBoundsException e) {
 18       System.out.println("Array index out-of-bounds: " + e);
 19     }
 20   }
 21 
 22   public static void main(String args[]) {
 23     try {
 24       int a = args.length;
 25 
 26       /* If no command line args are present,
 27          the following statement will generate
 28          a divide-by-zero exception. */
 29       int b = 42 / a;
 30 
 31       System.out.println("a = " + a);
 32 
 33       nesttry(a);
 34     } catch(ArithmeticException e) {
 35       System.out.println("Divide by 0: " + e);
 36     }
 37   }
 38 }

image

10.7 throw

image

  1 // Demonstrate throw.
  2 class ThrowDemo {
  3   static void demoproc() {
  4     try {
  5       throw new NullPointerException("demo");
  6     } catch(NullPointerException e) {
  7       System.out.println("Caught inside demoproc.");
  8       throw e; // re-throw the exception
  9     }
 10   }
 11 
 12   public static void main(String args[]) {
 13     try {
 14       demoproc();
 15     } catch(NullPointerException e) {
 16       System.out.println("Recaught: " + e);
 17     }
 18   }
 19 }
 20 

image

image

10.8 throws

image

  1 // This program contains an error and will not compile.
  2 class ThrowsDemo {
  3   static void throwOne() {
  4     System.out.println("Inside throwOne.");
  5     throw new IllegalAccessException("demo");
  6   }
  7   public static void main(String args[]) {
  8     throwOne();
  9   }
 10 }
 11 

image

  1 // This program contains an error and will not compile.
  2 class ThrowsDemo {
  3   static void throwOne() {
  4     System.out.println("Inside throwOne.");
  5     throw new IllegalAccessException("demo");
  6   }
  7   public static void main(String args[]) {
  8     throwOne();
  9   }
 10 }
 11 

image

  1 // This is now correct.
  2 class ThrowsDemo {
  3   static void throwOne() throws IllegalAccessException {
  4     System.out.println("Inside throwOne.");
  5     throw new IllegalAccessException("demo");
  6   }
  7   public static void main(String args[]) {
  8     try {
  9       throwOne();
 10     } catch (IllegalAccessException e) {
 11       System.out.println("Caught " + e);
 12     }
 13   }
 14 }
 15 

image

10.9 finally

image

  1 // Demonstrate finally.
  2 class FinallyDemo {
  3   // Throw an exception out of the method.
  4   static void procA() {
  5     try {
  6       System.out.println("inside procA");
  7       throw new RuntimeException("demo");
  8     } finally {
  9       System.out.println("procA's finally");
 10     }
 11   }
 12 
 13   // Return from within a try block.
 14   static void procB() {
 15     try {
 16       System.out.println("inside procB");
 17       return;
 18     } finally {
 19       System.out.println("procB's finally");
 20     }
 21   }
 22 
 23   // Execute a try block normally.
 24   static void procC() {
 25     try {
 26       System.out.println("inside procC");
 27     } finally {
 28       System.out.println("procC's finally");
 29     }
 30   }
 31 
 32   public static void main(String args[]) {
 33     try {
 34       procA();
 35     } catch (Exception e) {
 36       System.out.println("Exception caught");
 37     }
 38     procB();
 39     procC();
 40   }
 41 }
 42 

image

imageimage

10.10 Java的内置异常

image

imageimageimage

10.11 创建自己的异常子类

image

image

imageimageimage

image

  1 // This program creates a custom exception type.
  2 class MyException extends Exception {
  3   private int detail;
  4 
  5   MyException(int a) {
  6     detail = a;
  7   }
  8 
  9   public String toString() {
 10     return "MyException[" + detail + "]";
 11   }
 12 }
 13 
 14 class ExceptionDemo {
 15   static void compute(int a) throws MyException {
 16     System.out.println("Called compute(" + a + ")");
 17     if(a > 10)
 18       throw new MyException(a);
 19     System.out.println("Normal exit");
 20   }
 21 
 22   public static void main(String args[]) {
 23     try {
 24       compute(1);
 25       compute(20);
 26     } catch (MyException e) {
 27       System.out.println("Caught " + e);
 28     }
 29   }
 30 }
 31 

image

10.12 链式异常

image

image


  1 // Demonstrate exception chaining.
  2 class ChainExcDemo {
  3   static void demoproc() {
  4     // create an exception
  5     NullPointerException e =
  6       new NullPointerException("top layer");
  7 
  8     // add a cause
  9     e.initCause(new ArithmeticException("cause"));
 10 
 11     throw e;
 12   }
 13 
 14   public static void main(String args[]) {
 15     try {
 16       demoproc();
 17     } catch(NullPointerException e) {
 18       // display top level exception
 19       System.out.println("Caught: " + e);
 20 
 21       // display cause exception
 22       System.out.println("Original cause: " +
 23                           e.getCause());
 24     }
 25   }
 26 }
 27 

image

image

10.13 3个近期添加的异常特性

image

  1 // Demonstrate JDK 7's multi-catch feature.
  2 class MultiCatch {
  3   public static void main(String args[]) {
  4     int a=10, b=0;
  5     int vals[] = { 1, 2, 3 };
  6 
  7     try {
  8       int result = a / b; // generate an ArithmeticException  
  9 
 10 //      vals[10] = 19; // generate an ArrayIndexOutOfBoundsException
 11 
 12       // This catch clause catches both exceptions.
 13     } catch(ArithmeticException | ArrayIndexOutOfBoundsException e) {
 14       System.out.println("Exception caught: " + e);
 15     }
 16 
 17     System.out.println("After multi-catch.");
 18   }
 19 }
 20 

image



10.14 使用异常

image

第11章 多线程编程

imageimage

image

11.1 Java线程模型

image

image

11.1.1 线程优先级

image

11.1.2 同步

imageimage


11.1.3 消息传递

image

11.1.4 Thread类和Runnable接口

imageimage



11.2 主线程


11.3 创建线程


11.3.1 实现Runnable接口


11.3.2 扩展Thread类


11.3.3 选择一种创建方式


11.4 创建多个线程


11.5 使用isAlive()和join()方法


11.6 线程优先级


11.7 同步


11.7.1 使用同步方法


11.7.2 synchronized语句


11.8 线程间通信


11.9 挂起、恢复与停止线程


11.10 获取线程的状态


11.11 使用多线程


第12章 枚举、自动装箱与注解(元数据


12.1 枚举


12.1.1 枚举的基础知识


12.1.2 values()和valueOf()方法


12.1.3 Java枚举是类类型


12.1.4 枚举继承自Enum类


12.1.5 另一个枚举示例


12.2 类型封装器


12.2.1 Character封装器


12.2.2 Boolean封装器


12.2.3 数值类型封装器


12.3 自动装箱


12.3.1 自动装箱与方法


12.3.2 表达式中发生的自动装箱/拆箱


12.3.3 布尔型和字符型数值的自动装箱/拆箱


12.3.4 自动装箱/拆箱有助于防止错误


12.3.5 一些警告


12.4 注解(元数据


12.4.1 注解的基础知识


12.4.2 指定保留策略


12.4.3 在运行时使用反射获取注解


12.4.4 AnnotatedElement接口


12.4.5 使用默认值


12.4.6 标记注解


12.4.7 单成员注解


12.4.8 内置注解


12.5 类型注解


12.6 重复注解


第13章 I/O、applet以及其他主题


13.1 I/O的基础知识


13.1.1 流


13.1.2 字节流和字符流


13.1.3 预定义流


13.2 读取控制台输入


13.2.1 读取字符


13.2.2 读取字符串


13.3 向控制台写输出


13.4 PrintWriter类


13.5 读/写文件


13.6 自动关闭文件


13.7 applet的基础知识


13.8 transient和volatile修饰符


13.9 使用instanceof运算符


13.10 str


13.11 本地方法


13.12 使用a


13.13 静态导入


13.14 通过this()调用重载的构造函数


13.15 紧凑API配置文件


第14章 泛型


14.1 什么是泛型


14.2 一个简单的泛型示例


14.2.1 泛型只使用引用类型


14.2.2 基于不同类型参数的泛型类型是不同的


14.2.3 泛型提升类型安全性的原理


14.3 带两个类型参数的泛型类


14.4 泛型类的一般形式


14.5 有界类型


14.6 使用通配符参数


14.7 创建泛型方法


14.8 泛型接口


14.9 原始类型与遗留代码


14.10 泛型类层次


14.10.1 使用泛型超类


14.10.2 泛型子类


14.10.3 泛型层次中的运行时类型比较


14.10.4 强制转换


14.10.5 重写泛型类的方法


14.11 泛型的类型推断


14.12 擦除


14.13 模糊性错误


14.14 使用泛型的一些限制


14.14.1 不能实例化类型参数


14.14.2 对静态成员的一些限制


14.14.3 对泛型数组的一些限制


14.14.4 对泛型异常的限制


第15章 lambda表达式


15.1 lambda表达式简介


15.1.1 lambda表达式的基础知识


15.1.2 函数式接口


15.1.3 几个lambda表达式示例


15.2 块lambda表达式


15.3 泛型函数式接口


15.4 作为参数传递lambda表达式


15.5 lambda表达式与异常


15.6 lambda表达式和变量捕获


15.7 方法引用


15.7.1 静态方法的方法引用


15.7.2 实例方法的方法引用


15.7.3 泛型中的方法引用


15.8 构造函数引用


15.9 预定义的函数式接口


第Ⅱ部分 Java库


第16章 字符串处理


16.1 String类的构造函数


16.2 字符串的长度


16.3 特殊的字符串操作


16.3.1 字符串字面值


16.3.2 字符串连接


16.3.3 字符串和其他数据类型的连接


16.3.4 字符串转换和toString()方法


16.4 提取字符


16.4.1 cha


16.4.2 getCh


16.4.3 getBy


16.4.4 toCharAr


16.5 比较字符串


16.5.1 equals()和equalsIgnoreC


16.5.2 regionMatc


16.5.3 startsWith()和endsW


16.5.4 equals()与


16.5.5 compar


16.6 查找字符串


16.7 修改字符串


16.7.1 substr


16.7.2 con


16.7.3 repl


16.7.4 t


16.8 使用valueOf()转换数据


16.9 改变字符串中字符的大小写


16.10 连接字符串


16.11 其他String方法


16.12 StringBuffer类


16.12.1 StringBuffer类的构造函数


16.12.2 length()与capac


16.12.3 ensureCapac


16.12.4 setLen


16.12.5 charAt()与setCha


16.12.6 getCh


16.12.7 app


16.12.8 ins


16.12.9 reve


16.12.10 delete()与deleteCha


16.12.11 repl


16.12.12 substr


16.12.13 其他StringBuffer方法


16.13 StringBuilder类


第17章 探究java


17.1 基本类型封装器


17.1.1 N


17.1.2 Double与


17.1.3 理解isInfinite()与is


17.1.4 Byte、Short、Integer?


17.1.5 Char


17.1.6 对Unicode代码点的附加支持


17.1.7 Bo


17.2 Void类


17.3 Process类


17.4 Runtime类


17.4.1 内存管理


17.4.2 执行其他程序


17.5 ProcessBuilder类


17.6 System类


17.6.1 使用currentTimeMillis()计时程序的执行


17.6.2 使用arrayc


17.6.3 环境属性


17.7 Object类


17.8 使用clone()方法和Cloneable接口


17.9 Class类


17.10 ClassLoader类


17.11 Math类


17.11.1 三角函数


17.11.2 指数函数


17.11.3 舍入函数


17.11.4 其他数学方法


17.12 StrictMath类


17.13 Compiler类


17.14 Thread类、ThreadGroup类和Runnable接口


17.14.1 Runnable接口


17.14.2 Thread类


17.14.3 ThreadGroup类


17.15 ThreadLocal和 InheritableThreadLocal类


17.16 Package类


17.17 RuntimePermission类


17.18 Throwable类


17.19 SecurityManager类


17.20 StackTraceElement类


17.21 Enum类


17.22 ClassValue类


17.23 CharSequence接口


17.24 Comparable接口


17.25 Appendable接口


17.26 Iterable接口


17.27 Readable接口


17.28 AutoCloseable接口


17.29 Thread.UncaughtExceptionHandler接口


17.30 java.lang子包


17.30.1 java.lang.annot


17.30.2 java.lang.instr


17.30.3 java.lang.i


17.30.4 java.lang.manag


17.30.5 java.lan


17.30.6 java.lang.re


第18章 java.util第1部分:集合框架


18.1 集合概述


18.2 JDK 5对集合框架的修改


18.2.1 泛型从根本上改变了集合框架


18.2.2 自动装箱使得使用基本类型更加容易


18.2.3 for-each风格的for循环


18.3 集合接口


18.3.1 Collection接口


18.3.2 List接口


18.3.3 Set接口


18.3.4 SortedSet接口


18.3.5 NavigableSet接口


18.3.6 Queue接口


18.3.7 Deque接口


18.4 集合类


18.4.1 ArrayList类


18.4.2 LinkedList类


18.4.3 HashSet类


18.4.4 LinkedHashSet类


18.4.5 TreeSet类


18.4.6 PriorityQueue类


18.4.7 ArrayDeque类


18.4.8 EnumSet类


18.5 通过迭代器访问集合


18.5.1 使用迭代器


18.5.2 使用for-each循环替代迭代器


18.6 Splite


18.7 在集合中存储用户定义的类


18.8 RandomAccess接口


18.9 使用映射


18.9.1 映射接口


18.9.2 映射类


18.10 比较器


18.11 集合算法


18.12 Arrays类


18.13 遗留的类和接口


18.13.1 Enumeration接口


18.13.2 Vector类


18.13.3 Stack类


18.13.4 Dictionary类


18.13.5 Hashtable类


18.13.6 Properties类


18.13.7 使用store()和l


18.14 集合小结


第19章 java.util第2部分:更多实用工具类


19.1 StringTokenizer类


19.2 BitSet类


19.3 Optional、OptionalDouble、OptionalInt和Optiona


19.4 Date类


19.5 Calendar类


19.6 GregorianCalendar类


19.7 TimeZone类


19.8 SimpleTimeZone类


19.9 Locale类


19.10 Random类


19.11 Observable类


19.11.1 Observer接口


19.11.2 Observer示例


19.12 Timer和TimerTask类


19.13 Currency类


19.14 Formatter类


19.14.1 Formatter类的构造函数


19.14.2 Formatter类的方法


19.14.3 格式化的基础知识


19.14.4 格式化字符串和字符


19.14.5 格式化数字


19.14.6 格式化时间和日期


19.14.7 %n和%%说明符


19.14.8 指定最小字段宽度


19.14.9 指定精度


19.14.10 使用格式标志


19.14.11 对齐输出


19.14.12 空格、“+”、“0”以及“(”标志


19.14.13 逗号标志


19.14.14 “#”标志


19.14.15 大写选项


19.14.16 使用参数索引


19.14.17 关闭Formatter对象


19.14.18 printf()方法


19.15 Scanner类


19.15.1 Scanner类的构造函数


19.15.2 扫描的基础知识


19.15.3 一些Scanner示例


19.15.4 设置定界符


19.15.5 其他Scanner特性


19.16 ResourceBundle、ListResourceBundle和


19.17 其他实用工具类和接口


19.18 java.util子包


19.18.1 java.util.concurrent、java.util.concurrent.atomic和 java.util.concurrent.


19.18.2 java.util.fun


19.18.3 java.uti


19.18.4 java.util.lo


19.18.5 java.util.


19.18.6 java.util.


19.18.7 java.uti


19.18.8 java.util.s


19.18.9 java.uti


第20章 输入/输出:探究ja


20.1 I/O类和接口


20.2 File类


20.2.1 目录


20.2.2 使用FilenameFilter接口


20.2.3 listFiles()方法


20.2.4 创建目录


20.3 AutoCloseable、Closeable和Flushable接口


20.4 I/O异常


20.5 关闭流的两种方式


20.6 流类


20.7 字节流


20.7.1 InputStream类


20.7.2 OutputStream类


20.7.3 FileInputStream类


20.7.4 FileOutputStream类


20.7.5 ByteArrayInputStream类


20.7.6 ByteArrayOutputStream类


20.7.7 过滤的字节流


20.7.8 缓冲的字节流


20.7.9 SequenceInputStream类


20.7.10 PrintStream类


20.7.11 DataOutputStream和DataInputStream类


20.7.12 RandomAccessFile类


20.8 字符流


20.8.1 Reader类


20.8.2 Writer类


20.8.3 FileReader类


20.8.4 FileWriter类


20.8.5 CharArrayReader类


20.8.6 CharArrayWriter类


20.8.7 BufferedReader类


20.8.8 BufferedWriter类


20.8.9 PushbackReader类


20.8.10 PrintWriter类


20.9 Console类


20.10 串行化


20.10.1 Serializable接口


20.10.2 Externalizable接口


20.10.3 ObjectOutput接口


20.10.4 ObjectOutputStream类


20.10.5 ObjectInput接口


20.10.6 ObjectInputStream类


20.10.7 串行化示例


20.11 流的优点



第21章 探究


21.1 NIO类


21.2 NIO的基础知识


21.2.1 缓冲区


21.2.2 通道


21.2.3 字符集和选择器


21.3 JDK 7对NIO的增强


21.3.1 Path接口


21.3.2 Files类


21.3.3 Path接口


21.3.4 文件属性接口


21.3.5 FileSystem、FileSystems和FileStore类


21.4 使用NIO系统


21.4.1 为基于通道的I/O使用


21.4.2 为基于流的I/O使用


21.4.3 为路径和文件系统操作使用


21.5 JDK 7之前基于通道的例子


21.5.1 读文件(JDK 7之前



21.5.2 写文件(JDK 7之前



第22章 联网


22.1 联网的基础知识


22.2 联网类和接口


22.3 InetAddress类


22.3.1 工厂方法


22.3.2 实例方法


22.4 Inet4Address类和Inet6Address类


22.5 TCP/IP客户端套接字


22.6 URL类


22.7 URLConnection类


22.8 HttpURLConnection类


22.9 URI类


22.10 c


22.11 TCP/IP服务器套接字


22.12 数据报


22.12.1 DatagramSocket类


22.12.2 DatagramPacket类


22.12.3 数据报示例


第23章 Applet类


23.1 applet的两种类型


23.2 applet的基础知识


23.3 applet的架构


23.4 applet的骨架


23.4.1 applet的初始化和终止


23.4.2 重写update()方法


23.5 简单的applet显示方法


23.6 请求重画


23.7 使用状态栏窗口


23.8 HTML APPLET标记


23.9 向applet传递参数


23.10 getDocumentBase()和getCodeB


23.11 AppletContext接口和showDocument()方法


23.12 AudioClip接口


23.13 AppletStub接口


23.14 向控制台输出


第24章 事件处理


24.1 两种事件处理机制


24.2 委托事件模型


24.2.1 事件


24.2.2 事件源


24.2.3 事件监听器


24.3 事件类


24.3.1 ActionEvent类


24.3.2 AdjustmentEvent类


24.3.3 ComponentEvent类


24.3.4 ContainerEvent类


24.3.5 FocusEvent类


24.3.6 InputEvent类


24.3.7 ItemEvent类


24.3.8 KeyEvent类


24.3.9 MouseEvent类


24.3.10 MouseWheelEvent类


24.3.11 TextEvent类


24.3.12 WindowEvent类


24.4 事件源


24.5 事件监听器接口


24.5.1 ActionListener接口


24.5.2 AdjustmentListener接口


24.5.3 ComponentListener接口


24.5.4 ContainerListener接口


24.5.5 FocusListener接口


24.5.6 ItemListener接口


24.5.7 KeyListener接口


24.5.8 MouseListener接口


24.5.9 MouseMotionListener接口


24.5.10 MouseWheelListener接口


24.5.11 TextListener接口


24.5.12 WindowFocusListener接口


24.5.13 WindowListener接口


24.6 使用委托事件模型


24.6.1 处理鼠标事件


24.6.2 处理键盘事件


24.7 适配器类


24.8 内部类


第25章 AWT介绍:使用窗口、图形和文本


25.1 AWT类


25.2 窗口基本元素


25.2.1 Component类


25.2.2 Container类


25.2.3 Panel类


25.2.4 Window类


25.2.5 Frame类


25.2.6 Canvas类


25.3 使用框架窗口


25.3.1 设置窗口的尺寸


25.3.2 隐藏和显示窗口


25.3.3 设置窗口的标题


25.3.4 关闭框架窗口


25.4 在基于AWT的applet中创建框架窗口


25.5 创建基于窗口的程序


25.6 在窗口中显示信息


25.7 使用图形


25.7.1 绘制直线


25.7.2 绘制矩形


25.7.3 绘制椭圆和圆


25.7.4 绘制弧形


25.7.5 绘制多边形


25.7.6 演示绘制方法


25.7.7 改变图形的大小


25.8 使用颜色


25.8.1 Color类的方法


25.8.2 设置当前图形的颜色


25.8.3 一个演示颜色的


25.9 设置绘图模式


25.10 使用字体


25.10.1 确定可用字体


25.10.2 创建和选择字体


25.10.3 获取字体信息


25.11 使用FontMetrics管理文本输出


25.11.1 显示多行文本


25.11.2 居中显示文本


25.11.3 对齐多行文本


第26章 使用AWT控件、布局管理器和菜单


26.1 AWT控件的基础知识


26.1.1 添加和移除控件


26.1.2 响应控件


26.1.3 HeadlessException异常


26.2 使用标签


26.3 使用命令按钮


26.4 使用复选框


26.5 使用复选框组


26.6 使用下拉列表


26.7 使用列表框


26.8 管理滚动条


26.9 使用Text


26.10 使用Tex


26.11 理解布局管理器


26.11.1 FlowLayout布局管理器


26.11.2 BorderLayout布局管理器


26.11.3 使用I


26.11.4 GridLayout布局管理器


26.11.5 CardLayout布局管理器


26.11.6 GridBagLayout布局管理器


26.12 菜单栏和菜单


26.13 对话框


26.14 FileDialog类


26.15 关于重写paint()方法


第27章 图像


27.1 文件格式


27.2 图像基础:创建、加载与显示


27.2.1 创建Image对象


27.2.2 加载图像


27.2.3 显示图像


27.3 ImageObserver接口


27.4 双缓冲


27.5 MediaTracker类


27.6 ImageProducer接口


27.7 ImageConsumer接口


27.8 ImageFilter类


27.8.1 CropImageFilter类


27.8.2 RGBImageFilter类


27.9 其他图像类


第28章 并发实用工具


28.1 并发API包


28.1.1 java.util.concurrent包


28.1.2 java.util.concurrent.atomic包


28.1.3 java.util.concurrent.locks包


28.2 使用同步对象


28.2.1 Semaphore类


28.2.2 CountDownLatch类


28.2.3 CyclicBarrier类


28.2.4 Exchanger类


28.2.5 Phaser类


28.3 使用执行器


28.3.1 一个简单的执行器示例


28.3.2 使用Callable和Future接口


28.4 TimeUnit枚举


28.5 并发集合


28.6 锁


28.7 原子操作


28.8 通过Fork/Join框架进行并行编程


28.8.1 主要的Fork/Join类


28.8.2 分而治之的策略


28.8.3 一个简单的Fork/Join示例


28.8.4 理解并行级别带来的影响


28.8.5 一个使用RecursiveTask[V]的例子


28.8.6 异步执行任务


28.8.7 取消任务


28.8.8 确定任务的完成状态


28.8.9 重新启动任务


28.8.10 深入研究


28.8.11 关于Fork/Join框架的一些提示


28.9 并发实用工具与Java传统方式的比较


第29章 流


29.1 流的基础知识


29.1.1 流接口


29.1.2 如何获得流


29.1.3 一个简单的流示例


29.2 缩减操作


29.3 使用并行流


29.4 映射


29.5 收集


29.6 迭代器和流


29.6.1 对流使用迭代器


29.6.2 使用Splite


29.7 流API中更多值得探究的地方


第30章 正则表达式和其他包


30.1 核心Java API包


30.2 正则表达式处理


30.2.1 Pattern类


30.2.2 Matcher类


30.2.3 正则表达式的语法


30.2.4 演示模式匹配


30.2.5 模式匹配的两个选项


30.2.6 探究正则表达式


30.3 反射


30.4 远程方法调用


30.5 使用java.text格式化日期和时间


30.5.1 DateFormat类


30.5.2 SimpleDateFormat类


30.6 JDK 8新增的时间和日?


30.6.1 时间和日期的基础知识


30.6.2 格式化日期和时间


30.6.3 解析日期和时间字符串


30.7 探究java.time包的其他方面



第Ⅲ部分 使用Swing进行 GUI编程


第31章 Swing简介


31.1 Swing的起源


31.2 Swing以AWT为基础


31.3 两个关键的Swing特性


31.3.1 Swing组件是轻量级的


31.3.2 Swing支持可插入外观


31.4 MVC连接


31.5 组件与容器


31.5.1 组件


31.5.2 容器


31.5.3 顶级容器窗格


31.6 Swing包


31.7 一个简单的Swing应用程序


31.8 事件处理


31.9 创建Swing ap


31.10 在Swing中绘图


31.10.1 绘图的基础知识


31.10.2 计算可绘制区域


31.10.3 一个绘图示例


第32章 探究S


32.1 JLabel与Image


32.2 JTextF


32.3 Swing按钮


32.3.1 JBu


32.3.2 JToggleBu


32.3.3 复选框


32.3.4 单选按钮


32.4 JTabbed


32.5 JScroll


32.6 J


32.7 JComb


32.8 树


32.9 JT


第33章 Swing菜单简介


33.1 菜单的基础知识


33.2 JMenuBar、JMenu和JMenuItem概述


33.2.1 JMen


33.2.2 J


33.2.3 JMenu


33.3 创建主菜单


33.4 向菜单项添加助记符和加速键


33.5 向菜单项添加图片和工具提示


33.6 使用JRadioButtonMenuItem和JCheckBoxMenu


33.7 创建弹出菜单


33.8 创建工具栏


33.9 使用动作


33.10 完整演示MenuDemo程序


33.11 继续探究S


第Ⅳ部分 使用JavaFX进行GUI编程


第34章 JavaFX GUI编程简介


34.1 JavaFX的基础概念


34.1.1 JavaFX包


34.1.2 Stage和Scene类


34.1.3 节点和场景图


34.1.4 布局


34.1.5 Application类和生命周期方法


34.1.6 启动JavaFX应用程序


34.2 JavaFX应用程序的骨架


34.3 编译和运行JavaFX程序


34.4 应用程序线程


34.5 一个简单的JavaFX控件:L


34.6 使用按钮和事件


34.6.1 事件的基础知识


34.6.2 按钮控件简介


34.6.3 演示事件处理和按钮


34.7 直接在画布上绘制


第35章 探究JavaFX控件


35.1 使用Image和Image


35.1.1 向标签添加图片
35.1.2 在按钮中使用图片

35.2 ToggleBu


35.3 RadioBu


35.3.1 处理开关组中的变化事件


35.3.2 处理单选按钮的另一种方式


35.4 Chec


35.5 List


35.5.1 ListView的滚动条


35.5.2 启用多项选择


35.6 Comb


35.7 TextF


35.8 Scroll


35.9 Tree


35.10 效果和变换简介


35.10.1 效果


35.10.2 变换


35.10.3 演示效果和变换


35.11 添加工具提示


35.12 禁用控件


第36章 JavaFX菜单简介


36.1 菜单的基础知识


36.2 MenuBar、Menu和MenuItem概述


36.2.1 Men


36.2.2


36.2.3 Menu


36.3 创建主菜单


36.4 向菜单项添加助记符和加速键


36.5 向菜单项添加图片


36.6 使用RadioMenuItem和CheckMenu


36.7 创建上下文菜单


36.8 创建工具栏


36.9 完整的MenuDemo程序


36.10 继续探究Ja


第Ⅴ部分 应用


第37章 Java


37.1 Java Bean是什么


37.2 Java Bean的优势


37.3 内省


37.3.1 属性的设计模式


37.3.2 事件的设计模式


37.3.3 方法与设计模式


37.3.4 使用BeanInfo接口


37.4 绑定属性与约束属性


37.5 持久性


37.6 定制器


37.7 Java Bean


37.7.1 Introspector类


37.7.2 PropertyDescriptor类


37.7.3 EventSetDescriptor类


37.7.4 MethodDescriptor类


37.8 一个Bean示例


第38章 ser


38.1 背景


38.2 servelet的生命周期


38.3 servlet开发选项


38.4 使用To


38.5 一个简单的ser


38.5.1 创建和编译servlet源代码
38.5.2 启动To
38.5.3 启动Web浏览器并请求ser

38.6 Servlet


38.7 javax.servlet包


38.7.1 Servlet接口


38.7.2 ServletConfig接口


38.7.3 ServletContext接口


38.7.4 ServletRequest接口


38.7.5 ServletResponse接口


38.7.6 GenericServlet类


38.7.7 ServletInputStream类


38.7.8 ServletOutputStream类


38.7.9 servlet异常类


38.8 读取servlet参数


38.9 javax.servlet.http包


38.9.1 HttpServletRequest接口


38.9.2 HttpServletResponse接口


38.9.3 HttpSession接口


38.9.4 Cookie类


38.9.5 HttpServlet类


38.10 处理HTTP请求和响应


38.10.1 处理HTTP GET请求


38.10.2 处理HTTP POST请求


38.11 使用co


38.12 会话跟踪

附录 使用Java的文档注释



 

发表评论

0/200
247 点赞
0 评论
收藏