疯狂Java讲义

您所在的位置:网站首页 疯狂java讲义第五版pdf 疯狂Java讲义

疯狂Java讲义

#疯狂Java讲义| 来源: 网络整理| 查看: 265

第1章 Java语言概述与开发环境1.1 Java语言的发展简史1.2 Java的竞争对手及各自优势1.2.1 C#简介和优势1.2.2 Ruby简介和优势1.2.3 Python简介和优势1.3 Java程序运行机制1.3.1 高级语言的运行机制1.3.2 Java程序的运行机制和JVM1.4 开发Java的准备1.4.1 下载和安装Java 8的JDK不是说JVM是运行Java程序的虚拟机吗?那JRE和JVM的关系是怎样的呢?为什么不安装公共JRE呢?1.4.2 设置PATH环境变量为什么选择用户变量?用户变量与系统变量有什么区别?1.5 第一个Java程序1.5.1 编辑Java源代码1.5.2 编译Java程序当编译C程序时,不仅需要指定存放目标文件的位置,也需要指定目标文件的文件名,这里使用javac编译Java程序时怎么不需要指定目标文件的文件名呢?1.5.3 运行Java程序1.5.4 根据CLASSPATH环境变量定位类1.6 Java程序的基本规则1.6.1 Java程序的组织形式1.6.2 Java源文件的命名规则1.6.3 初学者容易犯的错误1.7 垃圾回收机制1.8 何时开始使用IDE工具我想学习Java编程,到底是学习Eclipse好,还是学习NetBeans好呢?1.9 本章小结

第2章 理解面向对象2.1 面向对象2.1.1 结构化程序设计简介2.1.2 程序的三种基本结构2.1.3 面向对象程序设计简介2.1.4 面向对象的基本特征2.2 UML(统一建模语言)介绍2.2.1 用例图2.2.2 类图2.2.3 组件图2.2.4 部署图2.2.5 顺序图2.2.6 活动图2.2.7 状态机图2.3 Java的面向对象特征2.3.1 一切都是对象2.3.2 类和对象2.4 本章小结

第3章 数据类型和运算符3.1 注释3.1.1 单行注释和多行注释3.1.2 文档注释API文档是什么?为什么要学习查看API文档的方法?3.2 标识符和关键字3.2.1 分隔符3.2.2 标识符规则3.2.3 Java关键字3.3 数据类型分类什么是变量?变量有什么用?3.4 基本数据类型3.4.1 整型3.4.2 字符型什么是字符集?3.4.3 浮点型3.4.4 数值中使用下画线分隔3.4.5 布尔型3.5 基本类型的类型转换3.5.1 自动类型转换3.5.2 强制类型转换3.5.3 表达式类型的自动提升3.6 直接量3.6.1 直接量的类型3.6.2 直接量的赋值3.7 运算符3.7.1 算术运算符3.7.2 赋值运算符3.7.3 位运算符3.7.4 扩展后的赋值运算符3.7.5 比较运算符3.7.6 逻辑运算符3.7.7 三目运算符3.7.8 运算符的结合性和优先级3.8 本章小结

第4 章 流程控制与数组4.1 顺序结构4.2 分支结构4.2.1 if条件语句4.2.2 Java 7增强后的switch分支语句4.3 循环结构4.3.1 while循环语句4.3.2 do while循环语句4.3.3 for循环4.3.4 嵌套循环4.4 控制循环结构4.4.1 使用break结束循环4.4.2 使用continue忽略本次循环剩下语句4.4.3 使用return结束方法4.5 数组类型4.5.1 理解数组:数组也是一种类型int[]是一种类型吗?怎么使用这种类型呢?4.5.2 定义数组4.5.3 数组的初始化能不能只分配内存空间,不赋初始值呢?4.5.4 使用数组为什么要我记住这些异常信息?4.5.5 foreach循环4.6 深入数组4.6.1 内存中的数组为什么有栈内存和堆内存之分?4.6.2 基本类型数组的初始化4.6.3 引用类型数组的初始化4.6.4 没有多维数组我是否可以让图4.13中灰色覆盖的数组元素再次指向另一个数组?这样不就可以扩展成三维数组,甚至扩展成更多维的数组吗?4.6.5 Java 8增强的工具类:Arrays4.6.6 数组的应用举例4.7 本章小结本章练习

第5 章 面向对象(上)5.1 类和对象5.1.1 定义类构造器不是没有返回值吗?为什么不能用void声明呢?5.1.2 对象的产生和使用5.1.3 对象、引用和指针5.1.4 对象的this引用5.2 方法详解5.2.1 方法的所属性5.2.2 方法的参数传递机制5.2.3 形参个数可变的方法5.2.4 递归方法5.2.5 方法重载为什么方法的返回值类型不能用于区分重载的方法?5.3 成员变量和局部变量5.3.1 成员变量和局部变量5.3.2 成员变量的初始化和内存中的运行机制5.3.3 局部变量的初始化和内存中的运行机制5.3.4 变量的使用规则5.4 隐藏和封装5.4.1 理解封装5.4.2 使用访问控制符5.4.3 package、import和import static5.4.4 Java的常用包5.5 深入构造器5.5.1 使用构造器执行初始化构造器是创建Java对象的途径,是不是说构造器完全负责创建Java对象?5.5.2 构造器重载为什么要用this来调用另一个重载的构造器?我把另一个构造器里的代码复制、粘贴到这个构造器里不就可以了吗?5.6 类的继承5.6.1 继承的特点5.6.2 重写父类的方法5.6.3 super限定5.6.4 调用父类构造器为什么我创建Java对象时从未感觉到java.lang. Object类的构造器被调用过?5.7 多态5.7.1 多态性5.7.2 引用变量的强制类型转换5.7.3 instanceof运算符5.8 继承与组合5.8.1 使用继承的注意点5.8.2 利用组合实现复用使用组合关系来实现复用时,需要创建两个Animal对象,是不是意味着使用组合关系时系统开销更大?5.9 初始化块5.9.1 使用初始化块5.9.2 初始化块和构造器5.9.3 静态初始化块5.10 本章小结

第6 章 面向对象(下)6.1 Java 8增强的包装类Java为什么要对这些数据进行缓存呢?6.2 处理对象6.2.1 打印对象和toString方法6.2.2 ==和equals方法上面程序中判断obj是否为Person类的实例时,为何不用obj instanceof Person来判断呢?6.3 类成员6.3.1 理解类成员6.3.2 单例(Singleton)类6.4 final修饰符6.4.1 final成员变量6.4.2 final局部变量6.4.3 final修饰基本类型变量和引用类型变量的区别6.4.4 可执行"宏替换"的final变量6.4.5 final方法6.4.6 final类6.4.7 不可变类6.4.8 缓存实例的不可变类6.5 抽象类6.5.1 抽象方法和抽象类6.5.2 抽象类的作用6.6 Java 8改进的接口6.6.1 接口的概念6.6.2 Java 8中接口的定义6.6.3 接口的继承6.6.4 使用接口6.6.5 接口和抽象类6.6.6 面向接口编程6.7 内部类6.7.1 非静态内部类非静态内部类对象和外部类对象的关系是怎样的?6.7.2 静态内部类为什么静态内部类的实例方法也不能访问外部类的实例属性呢?接口里是否能定义内部接口?6.7.3 使用内部类既然内部类是外部类的成员,那么是否可以为外部类定义子类,在子类中再定义一个内部类来重写其父类中的内部类呢?6.7.4 局部内部类6.7.5 Java 8改进的匿名内部类6.8 Java 8新增的Lambda表达式6.8.1 Lambda表达式入门6.8.2 Lambda表达式与函数式接口6.8.3 方法引用与构造器引用6.8.4 Lambda表达式与匿名内部类的联系和区别6.8.5 使用Lambda表达式调用Arrays的类方法6.9 枚举类6.9.1 手动实现枚举类6.9.2 枚举类入门6.9.3 枚举类的成员变量、方法和构造器6.9.4 实现接口的枚举类枚举类不是用final修饰了吗?怎么还能派生子类呢?6.9.5 包含抽象方法的枚举类6.10 对象与垃圾回收6.10.1 对象在内存中的状态6.10.2 强制垃圾回收6.10.3 finalize方法6.10.4 对象的软、弱和虚引用6.11 修饰符的适用范围6.12 使用JAR文件6.12.1 jar命令详解6.12.2 创建可执行的JAR包6.12.3 关于JAR包的技巧6.13 本章小结本章练习

第7 章 Java基础类库7.1 与用户互动7.1.1 运行Java程序的参数7.1.2 使用Scanner获取键盘输入7.2 系统相关7.2.1 System类7.2.2 Runtime类7.3 常用类7.3.1 Object类7.3.2 Java 7新增的Objects类7.3.3 String、StringBuffer和StringBuilder类7.3.4 Math类7.3.5 Java 7的ThreadLocalRandom与Random7.3.6 BigDecimal类7.4 Java 8的日期、时间类7.4.1 Date类7.4.2 Calendar类7.4.3 Java 8新增的日期、时间包7.5 正则表达式7.5.1 创建正则表达式7.5.2 使用正则表达式7.6 国际化与格式化7.6.1 Java国际化的思路7.6.2 Java支持的国家和语言7.6.3 完成程序国际化7.6.4 使用MessageFormat处理包含占位符的字符串7.6.5 使用类文件代替资源文件7.6.6 使用NumberFormat格式化数字7.6.7 使用DateFormat格式化日期、时间7.6.8 使用SimpleDateFormat格式化日期7.7 Java 8新增的日期、时间格式器7.7.1 使用DateTimeFormatter完成格式化7.7.2 使用DateTimeFormatter解析字符串7.8 本章小结本章练习

第8 章 Java集合8.1 Java集合概述8.2 Collection和Iterator接口8.2.1 使用Lambda表达式遍历集合8.2.2 使用Java 8增强的Iterator遍历集合元素8.2.3 使用Lambda表达式遍历Iterator8.2.4 使用foreach循环遍历集合元素8.2.5 使用Java 8新增的Predicate操作集合8.2.6 使用Java 8新增的Stream操作集合8.3 Set集合8.3.1 HashSet类hashCode()方法对于HashSet是不是十分重要?8.3.2 LinkedHashSet类8.3.3 TreeSet类8.3.4 EnumSet类8.3.5 各Set实现类的性能分析8.4 List集合8.4.1 Java 8改进的List接口和ListIterator接口8.4.2 ArrayList和Vector实现类8.4.3 固定长度的List8.5 Queue集合8.5.1 PriorityQueue实现类8.5.2 Deque接口与ArrayDeque实现类8.5.3 LinkedList实现类8.5.4 各种线性表的性能分析8.6 Java 8增强的Map集合8.6.1 Java 8为Map新增的方法8.6.2 Java 8改进的HashMap和Hashtable实现类8.6.3 LinkedHashMap实现类8.6.4 使用Properties读写属性文件8.6.5 SortedMap接口和TreeMap实现类8.6.6 WeakHashMap实现类8.6.7 IdentityHashMap实现类8.6.8 EnumMap实现类8.6.9 各Map实现类的性能分析8.7 HashSet和HashMap的性能选项8.8 操作集合的工具类:Collections8.8.1 排序操作8.8.2 查找、替换操作8.8.3 同步控制8.8.4 设置不可变集合8.9 烦琐的接口:Enumeration8.10 本章小结本章练习

第9 章 泛型9.1 泛型入门9.1.1 编译时不检查类型的异常9.1.2 使用泛型9.1.3 Java 7泛型的"菱形"语法9.2 深入泛型9.2.1 定义泛型接口、类9.2.2 从泛型类派生子类9.2.3 并不存在泛型类9.3 类型通配符9.3.1 使用类型通配符9.3.2 设定类型通配符的上限9.3.3 设定类型形参的上限9.4 泛型方法9.4.1 定义泛型方法9.4.2 泛型方法和类型通配符的区别9.4.3 Java 7的"菱形"语法与泛型构造器9.4.4 设定通配符下限9.4.5 泛型方法与方法重载9.4.6 Java 8改进的类型推断9.5 擦除和转换9.6 泛型与数组9.7 本章小结

第10 章 异常处理10.1 异常概述10.2 异常处理机制10.2.1 使用try...catch捕获异常10.2.2 异常类的继承体系10.2.3 Java 7提供的多异常捕获10.2.4 访问异常信息10.2.5 使用finally回收资源10.2.6 异常处理的嵌套10.2.7 Java 7的自动关闭资源的try语句10.3 Checked异常和Runtime异常体系10.3.1 使用throws声明抛出异常10.4 使用throw抛出异常10.4.1 抛出异常10.4.2 自定义异常类10.4.3 catch和throw同时使用10.4.4 Java 7增强的throw语句10.4.5 异常链10.5 Java的异常跟踪栈10.6 异常处理规则10.6.1 不要过度使用异常10.6.2 不要使用过于庞大的try块10.6.3 避免使用Catch All语句10.6.4 不要忽略捕获到的异常10.7 本章小结本章练习

第11 章 AWT编程11.1 GUI(图形用户界面)和AWT11.2 AWT容器11.3 布局管理器11.3.1 FlowLayout布局管理器11.3.2 BorderLayout布局管理器BorderLayout最多只能放置5个组件吗?那它也太不实用了吧?11.3.3 GridLayout布局管理器11.3.4 GridBagLayout布局管理器11.3.5 CardLayout布局管理器11.3.6 绝对定位11.3.7 BoxLayout布局管理器图11.15和图11.16显示的所有按钮都紧挨在一起,如果希望像FlowLayout、GridLayout等布局管理器那样指定组件的间距应该怎么办?11.4 AWT常用组件11.4.1 基本组件11.4.2 对话框(Dialog)11.5 事件处理11.5.1 Java事件模型的流程11.5.2 事件和事件监听器11.5.3 事件适配器11.5.4 使用内部类实现监听器11.5.5 使用外部类实现监听器11.5.6 类本身作为事件监听器类11.5.7 匿名内部类实现监听器11.6 AWT菜单11.6.1 菜单条、菜单和菜单项11.6.2 右键菜单为什么即使我没有给多行文本域编写右键菜单,但当我在多行文本域上单击右键时也一样会弹出右键菜单?11.7 在AWT中绘图11.7.1 画图的实现原理11.7.2 使用Graphics类11.8 处理位图11.8.1 Image抽象类和BufferedImage实现类11.8.2 使用ImageIO输入/输出位图11.9 剪贴板11.9.1 数据传递的类和接口11.9.2 传递文本11.9.3 使用系统剪贴板传递图像11.9.4 使用本地剪贴板传递对象引用11.9.5 通过系统剪贴板传递Java对象11.10 拖放功能11.10.1 拖放目标11.10.2 拖放源11.11 本章小结本章练习

第12 章 Swing编程12.1 Swing概述12.2 Swing基本组件的用法12.2.1 Java 7 的Swing组件层次12.2.2 AWT组件的Swing实现为什么单击Swing多行文本域时不是弹出像AWT多行文本域中的右键菜单?12.2.3 为组件设置边框12.2.4 Swing组件的双缓冲和键盘驱动12.2.5 使用JToolBar创建工具条12.2.6 使用JFileChooser和Java 7增强的JColorChooser12.2.7 使用JOptionPane12.3 Swing中的特殊容器12.3.1 使用JSplitPane12.3.2 使用JTabbedPane12.3.3 使用JLayeredPane、JdesktopPane和JInternalFrame12.4 Swing简化的拖放功能12.5 Java 7新增的Swing功能12.5.1 使用JLayer装饰组件12.5.2 创建透明、不规则形状窗口12.6 使用JProgressBar、ProgressMonitor和BoundedRangeModel创建进度条12.6.1 创建进度条12.6.2 创建进度对话框12.7 使用JSlider和BoundedRangeModel创建滑动条12.8 使用JSpinner和SpinnerModel创建微调控制器12.9 使用JList、JComboBox创建列表框12.9.1 简单列表框12.9.2 不强制存储列表项的ListModel和ComboBoxModel12.9.3 强制存储列表项的DefaultListModel和DefaultComboBoxModel为什么JComboBox提供了添加、删除列表项的方法?而JList没有提供添加、删除列表项的方法呢?12.9.4 使用ListCellRenderer改变列表项外观12.10 使用JTree和TreeModel创建树12.10.1 创建树12.10.2 拖动、编辑树节点12.10.3 监听节点事件12.10.4 使用DefaultTreeCellRenderer改变节点外观12.10.5 扩展DefaultTreeCellRenderer改变节点外观12.10.6 实现TreeCellRenderer改变节点外观12.11 使用JTable和TableModel创建表格12.11.1 创建表格我们指定的表格数据、表格列标题都是Object类型的数组,JTable如何显示这些Object对象?12.11.2 TableModel和监听器12.11.3 TableColumnModel和监听器12.11.4 实现排序12.11.5 绘制单元格内容12.11.6 编辑单元格内容12.12 使用JFormattedTextField和JtextPane创建格式文本12.12.1 监听Document的变化12.12.2 使用JPasswordField12.12.3 使用JFormattedTextField12.12.4 使用JEditorPane12.12.5 使用JTextPane12.13 本章小结本章练习

第13 章 MySQL数据库与JDBC编程13.1 JDBC基础13.1.1 JDBC简介13.1.2 JDBC驱动程序13.2 SQL语法13.2.1 安装数据库13.2.2 关系数据库基本概念和MySQL基本命令13.2.3 SQL语句基础13.2.4 DDL语句13.2.5 数据库约束13.2.6 索引13.2.7 视图13.2.8 DML语句语法13.2.9 单表查询13.2.10 数据库函数13.2.11 分组和组函数13.2.12 多表连接查询13.2.13 子查询13.2.14 集合运算13.3 JDBC的典型用法13.3.1 JDBC 4.2常用接口和类简介13.3.2 JDBC编程步骤前面给出的仅仅是MySQL和Oracle两种数据库的驱动,我看不出驱动类字符串有什么规律啊。如果我希望使用其他数据库,那怎么找到其他数据库的驱动类呢?13.4 执行SQL语句的方式13.4.1 使用Java 8新增的executeLargeUpdate方法执行DDL和DML语句13.4.2 使用execute方法执行SQL语句13.4.3 使用PreparedStatement执行SQL语句13.4.4 使用CallableStatement调用存储过程13.5 管理结果集13.5.1 可滚动、可更新的结果集13.5.2 处理Blob类型数据13.5.3 使用ResultSetMetaData分析结果集13.6 Java 7的RowSet 1.113.6.1 Java 7新增的RowSetFactory与RowSet13.6.2 离线RowSet13.6.3 离线RowSet的查询分页13.7 事务处理13.7.1 事务的概念和MySQL事务支持13.7.2 JDBC的事务支持13.7.3 Java 8增强的批量更新13.8 分析数据库信息13.8.1 使用DatabaseMetaData分析数据库信息13.8.2 使用系统表分析数据库信息13.8.3 选择合适的分析方式13.9 使用连接池管理连接13.9.1 DBCP数据源13.9.2 C3P0数据源13.10 本章小结本章练习

第14 章 Annotation(注释)14.1 基本Annotation14.1.1 限定重写父类方法:@Override14.1.2 标示已过时:@Deprecated14.1.3 抑制编译器警告:@SuppressWarnings14.1.4 Java 7的"堆污染"警告与@SafeVarargs14.1.5 Java 8的函数式接口与@FunctionalInterface14.2 JDK的元Annotation14.2.1 使用@Retention14.2.2 使用@Target14.2.3 使用@Documented14.2.4 使用@Inherited14.3 自定义Annotation14.3.1 定义Annotation14.3.2 提取Annotation信息14.3.3 使用Annotation的示例14.3.4 Java 8新增的重复注解14.3.5 Java 8新增的Type Annotation14.4 编译时处理Annotation14.5 本章小结

第15 章 输入/输出15.1 File类15.1.1 访问文件和目录15.1.2 文件过滤器15.2 理解Java的IO流15.2.1 流的分类15.2.2 流的概念模型15.3 字节流和字符流15.3.1 InputStream和Reader15.3.2 OutputStream和Writer15.4 输入/输出流体系15.4.1 处理流的用法15.4.2 输入/输出流体系15.4.3 转换流怎么没有把字符流转换成字节流的转换流呢?15.4.4 推回输入流15.5 重定向标准输入/输出15.6 Java虚拟机读写其他进程的数据15.7 RandomAccessFile15.8 对象序列化15.8.1 序列化的含义和意义15.8.2 使用对象流实现序列化15.8.3 对象引用的序列化15.8.4 自定义序列化15.8.5 另一种自定义序列化机制15.8.6 版本15.9 NIO15.9.1 Java新IO概述15.9.2 使用Buffer15.9.3 使用Channel15.9.4 字符集和Charset二进制序列与字符之间如何对应呢?15.9.5 文件锁15.10 Java 7的NIO.215.10.1 Path、Paths和Files核心API15.10.2 使用FileVisitor遍历文件和目录15.10.3 使用WatchService监控文件变化15.10.4 访问文件属性15.11 本章小结本章练习

第16 章 多线程16.1 线程概述16.1.1 线程和进程16.1.2 多线程的优势16.2 线程的创建和启动16.2.1 继承Thread类创建线程类16.2.2 实现Runnable接口创建线程类16.2.3 使用Callable和Future创建线程16.2.4 创建线程的三种方式对比16.3 线程的生命周期16.3.1 新建和就绪状态16.3.2 运行和阻塞状态16.3.3 线程死亡16.4 控制线程16.4.1 join线程16.4.2 后台线程16.4.3 线程睡眠:sleep16.4.4 线程让步:yield16.4.5 改变线程优先级16.5 线程同步16.5.1 线程安全问题16.5.2 同步代码块16.5.3 同步方法16.5.4 释放同步监视器的锁定16.5.5 同步锁(Lock)16.5.6 死锁16.6 线程通信16.6.1 传统的线程通信16.6.2 使用Condition控制线程通信16.6.3 使用阻塞队列(BlockingQueue)控制线程通信16.7 线程组和未处理的异常16.8 线程池16.8.1 Java 8改进的线程池16.8.2 Java 8增强的ForkJoinPool16.9 线程相关类16.9.1 ThreadLocal类16.9.2 包装线程不安全的集合16.9.3 线程安全的集合类16.10 本章小结

第17 章 网络编程17.1 网络编程的基础知识17.1.1 网络基础知识17.1.2 IP地址和端口号17.2 Java的基本网络支持17.2.1 使用InetAddress17.2.2 使用URLDecoder和URLEncoder17.2.3 URL、URLConnection和URLPermission17.3 基于TCP协议的网络编程17.3.1 TCP协议基础17.3.2 使用ServerSocket创建TCP服务器端17.3.3 使用Socket进行通信17.3.4 加入多线程17.3.5 记录用户信息17.3.6 半关闭的Socket17.3.7 使用NIO实现非阻塞Socket通信17.3.8 使用Java 7的AIO实现非阻塞通信上面程序中好像没用到④⑤号代码的get()方法的返回值,这两个地方不调用get()方法行吗?17.4 基于UDP协议的网络编程17.4.1 UDP协议基础17.4.2 使用DatagramSocket发送、接收数据17.4.3 使用MulticastSocket实现多点广播17.5 使用代理服务器17.5.1 直接使用Proxy创建连接17.5.2 使用ProxySelector自动选择代理服务器17.6 本章小结本章练习

第18 章 类加载机制与反射18.1 类的加载、连接和初始化18.1.1 JVM和类18.1.2 类的加载18.1.3 类的连接18.1.4 类的初始化18.1.5 类初始化的时机18.2 类加载器18.2.1 类加载器简介18.2.2 类加载机制18.2.3 创建并使用自定义的类加载器18.2.4 URLClassLoader类18.3 通过反射查看类信息18.3.1 获得Class对象18.3.2 从Class中获取信息18.3.3 Java 8新增的方法参数反射18.4 使用反射生成并操作对象18.4.1 创建对象18.4.2 调用方法18.4.3 访问成员变量值18.4.4 操作数组18.5 使用反射生成JDK动态代理18.5.1 使用Proxy和InvocationHandler创建动态代理18.5.2 动态代理和AOP18.6 反射和泛型18.6.1 泛型和Class类18.6.2 使用反射来获取泛型信息18.7 本章小结本章练习



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3