Java语言程序设计与数据结构(原书第11版) [Introduction to Java Programming and Data Structures Comprehensive Version,Eleventh Edition] pdf

Java语言程序设计与数据结构(原书第11版) [Introduction to Java Programming and Data Structures Comprehensive Version,Eleventh Edition]

内容简介

Java语言的经典教材,中文版分为基础篇和进阶篇,主要介绍程序设计基础、面向对象程序设计、GUI程序设计、数据结构和算法、高级Java程序设计等内容。

以示例讲解解决问题的技巧,提供大量的程序清单,每章配有大量复习题和编程练习题,帮助读者掌握编程技术,并应用所学技术解决实际应用开发中遇到的问题。

基础篇主要介绍基本程序设计、语法结构、面向对象程序设计、继承和多态、异常处理和文本I/0、抽象类和接口等内容。

进阶篇突出数据结构和算法,主要涵盖以下内容:泛型,规则集和映射,开发高效算法,实现线性表、栈、队列和优先队列,二叉搜索树,AVL树,散列,图及其应用,加权图及其应用,集合流的聚合操作等。

作者简介

梁勇(Y.Daniel Liang),阿姆斯特朗亚特兰大州立大学计算机科学系Yamacraw教授。之前曾是普度大学计算机科学系副教授,并曾两次获得普度大学杰出研究奖。他所编写的Java教程在美国大学Java课程中采用率高。

目录

出版者的话
中文版序
译者序
前言
第1章 计算机、程序和Java概述
1.1 引言
1.2 什么是计算机
1.2.1 中央处理器
1.2.2 比特和字节
1.2.3 内存
1.2.4 存储设备
1.2.5 输入和输出设备
1.2.6 通信设备
1.3 编程语言
1.3.1 机器语言
1.3.2 汇编语言
1.3.3 高级语言
1.4 操作系统
1.4.1 控制和监视系统活动
1.4.2 分配和调配系统资源
1.4.3 调度操作
1.5 Java、万维网以及其他
1.6 Java语言规范、API、JDK、JRE和IDE
1.7 一个简单的Java程序
1.8 创建、编译和执行Java程序
1.9 程序设计风格和文档
1.9.1 正确的注释和注释风格
1.9.2 正确的缩进和空白
1.9.3 块的风格
1.10 程序设计错误
1.10.1 语法错误
1.10.2 运行时错误
1.10.3 逻辑错误
1.10.4 常见错误
1.11 使用NetBeans开发Java程序
1.11.1 创建Java工程
1.11.2 创建Java类
1.11.3 编译和运行类
1.12 使用Eclipse开发Java程序
1.12.1 创建Java工程
1.12.2 创建Java类
1.12.3 编译和运行类
……
第2章 基本程序设计
第3章 选择
第4章 数学函数、字符和字符串
第5章 循环
第6章 方法
第7章 一维数组
第8章 多维数组
第9章 对象和类
第10章 面向对象思考
第11章 继承和多态
……
第19章 泛型
19.1 引言
19.2 动机和优点
19.3 定义泛型类和接口
19.4 泛型方法
19.5 示例学习:对一个对象数组进行排序
19.6 原生类型和向后兼容
19.7 通配泛型
19.8 泛型的擦除和限制
19.9 示例学习:泛型矩阵类
关键术语
本章小结
测试题
编程练习题
第20章 线性表、栈、队列和优先队列
20.1 引言
20.2 集合
20.3 迭代器
20.4 使用forEach方法
20.5 线性表
20.5.1 11st接口中的通用方法
20.5.2 数组线性表类ArrayList和链表类L1nkedLlst
20.6 Comparator接口
20.7 线性表和集合的静态方法
20.8 示例学习:弹球
20.9 向量类和栈类
20.10 队列和优先队列
20.10.1 Queue接口
20.10.2 双端队列Deque和链表LinkedList
20.11 示例学习:表达式求值
关键术语
本章小结
测试题
编程练刁题
第21章 规则集和映射
21.1 引言
21.2 规则集
21.2.1 HashSet
21.2.2 LinkedHashSet
21.2.3 TreeSet
21.3 比较规则集和线性表的性能
21.4 不例学习:关键字计数
21.5 映射
21.6 示例学习:单词的出现次数
21.7 单元素与不可变的
集合和映射
关键术语
本章小结
测试题
编程练习题
第22章 开发高效算法
22.1 引言
22.2 使用大D标记来衡量算法效率
22.3 示例:确定大D
22.4 分析算法的时间复杂度
22.4.1 分析二分查找算法
22.4.2 分析选择排序算法
22.4.3 分析汉诺塔问题
22.4.4 常用的递推关系
22.4.5 比较常用的增长函数
22.5 使用动态编程寻找斐波那契数
22.6 使用欧几里得算法求最大公约数
22.7 寻找素数的高效算法
22.8 使用分而治之法寻找最近点对
22.9 使用回溯法解决八皇后问题
22.10 计算几何:寻找凸包
22.10.1 卷包裹算法
22.10.2 格雷厄姆算法
关键术语
本章小结
测试题
编程练习题
……
第23章 排序
第24章 实现线性表、栈、队列和优先队列
第25章 二叉搜索树
第26章 AVL树
第27章 散列
第28章 图及其应用
第29章 加权图及其应用
第30章 集合流的聚合操作
附录

感悟与笔记

异常处理

  • 不应该由方法来终止程序——应该由调用者决定是否可以终止一个程序
  • 方法应当如何通知他的调用者一个异常产生了呢? Java可以让方法抛出一个异常,该异常可以被调用者捕获和处理。
  • throw new ArithmetricException(“Divisor cannot be zero”); 加粗部分为 Detail message(描述异常的消息),无实际功能,因为此类异常在定义时便只有一个参数String。
  • 异常(Exception)
  • 调用方法的语句包含在一个try块和一个catch块中。try块中的代码包含了正常情况下执行的代码。异常被catch所捕获。catch中的代码被执行以处理异常。
  • 异常就是一个从异常类所创建的对象。异常的根类是java.lang.Throwable.所有的Java异常类都直接或者间接地继承自Throwable。可以通过继承Exception或者Exception的子类来创建自己的异常类
  • 分为免检异常和必检异常(也称可查异常),必检异常是说编译器会强制程序员检查并通过catch块处理他们,或者在方法头进行声明。
  • 捕获异常即try-catch语句
  • 声明异常puvlic void method2() throws Exception{ any code }其中的throws即用于声明异常,声明异常来表明方法可能会抛出的异常。如果方法可能会抛出多个异常,就可以在关键字throws后添加一个用逗号分隔的异常列表
    public void myMethod() throws Exception1,Exception2,Exception3,....,ExceptionN
  • 如果父类中的方法没有声明异常,那么在子类重写时就不能声明异常
  • 抛出异常throw new Exception()其中throw即用于抛出异常,抛出异常有两种表达形式:
IllegalArgumentException ex = 
  new IllegalArgumentException("Wrong Argument");
 throw ex;

throw new IllegalArgumentException("Wrong Argument");

  • JavaAPI中的每个异常类至少有两个构造方法: 一个无参构造方法和一个带有可以描述这个异常的String参数的构造方法
  • 捕获异常 利用调用栈 一直向上查,上层方法引用下层方法,如果最终异常类型没有被捕获,则程序终止。
  • 各种异常类可以从一个共同的父类中派生。如果一个catch块可以捕获一个父类的异常对象,它就能捕获那个父类的所有子类的异常对象。只是判断应先判断是否是子类专属的异常类型。
  • 从JDK7开始一个catch就可以捕获多种异常
catch (Exception1|Exception2|Exception3|...|Exceptionk ex){
     some code for handling these Exception
}
  • 1.try-catch:可以对异常进行处理,提高软件的健壮性 2.JVM:运行错误则直接崩溃
  • 异常处理器使用System.out.println(ex)打印一个有关异常的短消息ex.toString().
  • 如果try模块中发生异常,try模块剩余代码将不会被执行;如果catch模块中发生了异常,catch模块剩余代码将不会被执行,而是跳过catch模块去执行后面的部分。
  • finally语句 在任何情况下,finally块中的代码都会执行,不论try块中死否出现异常或者被捕获。即使在到达finally块之前有一个return语句,finally块还是会执行 使用finally块时可以略去catch块。
  • 在代码中,应该在什么时候使用try-catch语句呢? 当必须处理不可预料的错误状况时应该使用它。不要使用try-catch语句做简单的逻辑测试,不要用于处理简单可预料的情况。
  • 重新抛出异常如果异常处理器并不能处理一个异常,或者只是简单地希望它的调用者注意到该异常,Java允许该异常处理器重新抛出异常。 如下面的语句throw ex重新抛出异常给调用者,以便调用者的其他处理器获得处理异常ex的机会。
try{
 statements;
 }
 catch (TheException ex){
  perform operations before exists;
  throw ex;
 }
  • 链式异常:与另一个异常一起抛出一个异常,构成了链式异常。上面的代码块例子只是重新抛出了最初的异常。链式异常是将新异常(带有附加信息)和最初异常一起抛出。
  • 程序闪退,就是异常处理做的不好。

会员免费下载

链接:https://pan.baidu.com/s/1h-JPw7YTcNCVJQJHiojINg

提取码: ****** 查看

¥69/年 开通VIP会员

成为本站VIP会员即可无限下载。 请先点击百度网盘,看资源是否还在,不在请点击链接通知站长补资源。

资源标签点击标签可查看对应分类的资源

Java数据结构与算法

资源推荐

免费 图解数据结构:使用Java

C++ 程序设计语言:第4部分 标准库(原书第4版)

C++编程思想(两卷合订本)

CSS世界

JavaScript DOM编程艺术(第2版)

C++ Primer Plus(第6版) 中文版

Vue.js快速入门

Java编程思想(第4版) [thinking in java]

Copyright © 2021-2022 知识猫. All Rights Reserved.