《Java 7程序设计入门经典》PDF下载

  • 购买积分:25 如何计算积分?
  • 作  者:(美)HerbertSchildt,(美)DaleSkrien著
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2013
  • ISBN:9787111430698
  • 页数:962 页
图书介绍:本书由全球资深Java技术专家、畅销书作者倾力打造,权威性毋庸置疑,旨在对Java进行全面的介绍。本书基于最新的版本是Java 7(JDK 7),全面讲解Java语言、利用Swing工具箱进行GUI编程以及Java API库三方面的内容,包含大量代码示例,是系统学习Java编程的权威指南。本书共30章,分为三部分。第一部分描述定义Java语言的元素和编程的核心元素,首先对Java进行概览,然后介绍数据类型、运算符和控制语句的基本概念,再然后逐渐介绍该语言更复杂的特性,如类、方法、继承、接口、包、异常、多线程和泛型。第二部分介绍Swing,首先对用Swing进行GUI编程进行概览,包括了组件、事件、布局管理器的基本概念,后续章节依序对一些Swing组件、菜单、对话框、绘图等进行介绍。第三部分探究Java API库的部分内容,其中包括java.lang包和java.util包的大部分内容,以及集合框架,同时还介绍网络和并发API等。

第一部分 Java语言 2

第1章 Java编程基础 2

1.1计算基础 3

1.1.1计算机的硬件组成 3

1.1.2位、字节和二进制 4

1.1.3操作系统 5

1.2程序 5

1.3编程语言 6

1.4 Java语言 7

1.4.1 Java的起源 7

1.4.2 Java对互联网的贡献 9

1.4.3 Java applet 9

1.4.4安全性 9

1.4.5可移植性 9

1.4.6 Java的解决方案:字节码 10

1.4.7 Java的演进 10

1.5面向对象编程的关键特性 11

1.5.1封装 12

1.5.2多态 12

1.5.3继承 13

1.6 Java开发工具包 13

1.7第一个简单的程序 14

1.7.1输入程序 15

1.7.2编译程序 15

1.7.3运行程序 15

1.7.4逐行解析第一个简单的程序 16

1.8处理语法错误 18

1.9第二个简单的程序 18

1.10另一种数据类型 20

1.11两种控制语句 23

1.11.1 if语句 23

1.11.2 for循环 25

1.12创建代码块 26

1.13分号和语句的位置 27

1.14关于缩进 28

1.15 Java关键字 30

1.16 Java中的标识符 30

1.17 Java类库 31

1.18习题 32

第2章 数据类型和运算符 34

2.1为什么数据类型很重要 34

2.2 Java的基本数据类型 34

2.2.1整数 35

2.2.2浮点类型 36

2.2.3字符 37

2.2.4布尔类型 38

2.3字面量 40

2.3.1十六进制、八进制和二进制字面量 41

2.3.2转义字符序列 41

2.3.3字符串字面量 42

2.4深入解析变量 43

2.4.1初始化变量 43

2.4.2动态初始化 44

2.5变量的作用域和生命周期 44

2.6运算符 47

2.7算术运算符 47

2.8关系运算符和逻辑运算符 49

2.9具有“短路”功能的逻辑运算符 50

2.10赋值运算符 52

2.11速记赋值运算符 53

2.12赋值中的类型转换 53

2.13使用强制类型转换 55

2.14运算符的优先级 56

2.15 表达式 58

2.15.1表达式中的类型转换 58

2.15.2空白和圆括号 60

2.16习题 60

第3章 程序控制语句 63

3.1从键盘输入字符 63

3.2 if语句 65

3.3嵌套的if语句 66

3.4 if-else-if梯队 67

3.5 switch语句 68

3.6嵌套的switch语句 71

3.7 for循环 74

3.8 for循环中的一些特殊情况 76

3.8.1缺少部分 76

3.8.2无限循环 77

3.8.3没有循环体的循环 78

3.9在for语句内部声明循环控制变量 78

3.10增强的for循环 79

3.11 while循环 80

3.12 do-while循环 81

3.13使用break语句退出循环 86

3.14像使用goto语句一样使用break语句 88

3.15 使用continue语句 91

3.16嵌套的循环 96

3.17习题 97

第4章 类、对象和方法初探 100

4.1类的基础知识 100

4.1.1类的一般形式 101

4.1.2定义类 101

4.2如何创建对象 104

4.3变量引用和赋值语句 105

4.4方法 106

4.5从方法返回 108

4.6返回值 109

4.7使用形参 111

4.8构造函数 119

4.9含有形参的构造函数 120

4.10 new运算符再探 123

4.11垃圾回收和终结器 123

4.12使用this关键字 126

4.13习题 128

第5章 更多数据类型和运算符 131

5.1数组 131

5.2多维数组 136

5.2.1二维数组 136

5.2.2不规则数组 137

5.2.3三维或多维数组 139

5.2.4初始化多维数组 139

5.3其他声明数组的语法 140

5.4对数组的引用赋值 141

5.5使用成员length 142

5.6 for-each风格的for循环 149

5.6.1遍历多维数组 152

5.6.2应用增强for循环 153

5.7字符串 154

5.7.1构造字符串 154

5.7.2操作字符串 155

5.7.3字符串数组 156

5.7.4字符串是不可改变的 157

5.7.5使用字符串控制switch语句 158

5.8使用命令行参数 159

5.9按位运算 161

5.9.1按位与、按位或、按位异或、按位非运算符 161

5.9.2移位运算符 165

5.9.3位速记赋值运算符 167

5.10问号运算符 170

5.11习题 171

第6章 深入解析类和方法 174

6.1控制对类成员的访问 174

6.2向方法传递对象 180

6.3如何传递实参 181

6.4返回对象 183

6.5重载方法 185

6.6重载构造函数 189

6.7递归 195

6.8理解关键字static 199

6.8.1静态变量 199

6.8.2静态方法 201

6.8.3静态代码块 203

6.9嵌套类和内部类 207

6.10长度可变的实参vararg 210

6.10.1 vararg基础 210

6.10.2重载varargs方法 213

6.10.3 vararg和二义性 214

6.11习题 215

第7章 继承 220

7.1继承基础 220

7.2成员访问和继承 223

7.3构造函数和继承 226

7.4用super关键字调用超类的构造函数 227

7.5用super关键字访问超类成员 232

7.6创建多层层次结构 235

7.7执行构造函数的时机 238

7.8超类引用与子类对象 239

7.9方法重写 244

7.10用重写方法支持多态 246

7.11为什么要重写方法 248

7.12使用抽象类 252

7.13使用final关键字 256

7.13.1用final关键字防止方法重写 256

7.13.2用final关键字防止继承 257

7.13.3对数据成员使用final关键字 257

7.14 Object类 258

7.15习题 259

第8章 接口 261

8.1接口的基础知识 261

8.2创建接口 262

8.3实现接口 263

8.4使用接口引用 266

8.5实现多个接口 268

8.6接口中的常量 276

8.7可扩展的接口 277

8.8嵌套的接口 278

8.9关于接口的最后思考 279

8.10习题 279

第9章 包 281

9.1包的基础知识 281

9.1.1定义包 282

9.1.2寻找包与环境变量CLASSPATH 282

9.1.3一个短小的包例子 283

9.2包与成员访问 284

9.2.1一个包访问的例子 285

9.2.2受保护的成员 287

9.3导入包 289

9.4静态导入 293

9.5习题 295

第10章 异常处理 298

10.1异常层次结构 298

10.2异常处理基础 299

10.2.1使用关键字try和catch 299

10.2.2一个简单的异常处理例子 300

10.3未捕获异常的后果 302

10.4异常可以优雅地处理错误 303

10.5使用多个catch子句 305

10.6捕获子类异常 306

10.7嵌套的try块 307

10.8抛出异常 309

10.9进一步解读Throwable类 311

10.10使用finally块 312

10.11使用throws关键字 314

10.12 Java的内置异常 315

10.13 JDK 7中新添加的异常特性 317

10.14创建异常子类 319

10.15习题 325

第11章 使用输入/输出 329

11.1 Java的输入/输出是建立在流上的 330

11.2字节流和字符流 330

11.3字节流类 330

11.4字符流类 331

11.5预定义的流 331

11.6使用字节流 332

11.6.1读控制台输入 333

11.6.2写控制台输出 334

11.7使用字节流读写文件 335

11.7.1从文件中输入 335

11.7.2写文件 339

11.8自动关闭文件 340

11.9读写二进制数据 343

11.10随机访问文件 347

11.11使用Java字符流 350

11.11.1用控制台获得字符流输入 351

11.11.2使用字符流进行控制台输出 353

11.12使用字符流进行文件输入/输出 354

11.12.1使用FileWriter类 355

11.12.2使用FileReader类 356

11.12.3 File类 357

11.12.4获得文件属性 357

11.12.5获得目录列表 359

11.12.6使用FilenameFilter接口 360

11.12.7 listFiles()方法 361

11.12.8多种文件实用方法 361

11.13使用Java的类型包装器来转换数值字符串 363

11.14习题 371

第12章 多线程编程 375

12.1多线程基础 375

12.2 Thread类和Runnable接口 376

12.3创建线程 376

12.4创建多个线程 384

12.5判定线程终止的时间 386

12.6线程的优先级 389

12.7同步 390

12.8使用同步方法 390

12.9 synchronized语句 393

12.10使用方法notify()、wait()和notifyAll()进行线程通信 396

12.11线程挂起、恢复和终止 402

12.12习题 406

第13章 枚举、自动装箱和注解 410

13.1枚举 410

13.2 Java的枚举是类类型 413

13.3 values()方法和valueOf()方法 413

13.4构造函数、方法、实例变量和枚举 415

13.5从Enum类继承枚举 416

13.6自动装箱 423

13.6.1类型包装器和装箱 424

13.6.2自动装箱基础 425

13.6.3装箱与方法 426

13.6.4表达式中的自动装箱和自动拆箱 427

13.6.5警告 429

13.7注解(元数据) 430

13.7.1创建和使用注解 430

13.7.2内置注解 431

13.8习题 432

第14章 泛型 436

14.1泛型基础 436

14.1.1一个简单的泛型例子 437

14.1.2泛型只能用于对象 440

14.1.3基于不同类型实参的不同泛型类型 440

14.1.4有两个类型形参的泛型类 441

14.1.5泛型类的一般形式 442

14.2有界的类型 443

14.3使用有通配符的实参 446

14.4有界的通配符 449

14.5泛型方法 452

14.6泛型构造函数 454

14.7泛型的类层次结构 454

14.8泛型接口 458

14.9原始类型和遗留代码 464

14.10带有菱形运算符的类型推断 467

14.11清除 468

14.12二义性错误 469

14.13泛型的一些限制 470

14.13.1不能实例化类型形参 470

14.13.2对静态成员的限制 470

14.13.3泛型数组的限制 470

14.13.4泛型异常的限制 471

14.14习题 472

第15章 applet与剩余的Java关键字 475

15.1 applet基础 475

15.2 applet的完整骨架 478

15.3 applet的初始化和终止 479

15.4 applet架构的关键点 480

15.5请求重绘 480

15.6使用状态窗口 485

15.7向applet传递形参 486

15.8剩余的Java关键字 488

15.8.1修饰符volatile 488

15.8.2修饰符transient 488

15.8.3关键字instanceof 488

15.8.4关键字strictfp 489

15.8.5关键字assert 489

15.8.6原生方法 489

15.9习题 491

第16章 面向对象设计介绍 493

16.1优雅的软件及其重要性 493

16.2优雅的方法 496

16.2.1命名约定 497

16.2.2方法的内聚 497

16.2.3形式良好的对象 499

16.2.4内部文档 500

16.2.5外部文档 501

16.3优雅的类 503

16.3.1类的内聚和专家模式 503

16.3.2避免重复 505

16.3.3完整的接口 507

16.3.4设计时要考虑变化 507

16.3.5最少知识原则 510

16.4继承与委托的比较 511

16.4.1 UML类图 512

16.4.2从代码重用的角度看 513

16.4.3 is-a关系 514

16.4.4类似的行为 516

16.4.5多态 518

16.4.6继承的代价 519

16.5设计模式 521

16.5.1适配者模式 522

16.5.2观察者模式 525

16.6习题 529

第二部分 利用Swing工具箱进行GUI编程 534

第17章 Swing基础 534

17.1 Swing的起源和设计理念 534

17.2组件和容器 536

17.2.1组件 536

17.2.2容器 537

17.2.3顶级容器窗格 537

17.3布局管理器 538

17.4第一个简单的Swing程序 539

17.5事件处理 544

17.5.1事件 544

17.5.2事件源 544

17.5.3事件侦听器 545

17.5.4事件类和侦听器接口 545

17.5.5适配器类 546

17.6使用按钮 547

17.7 JTextField类介绍 554

17.8使用匿名内部类来处理事件 564

17.9习题 565

第18章 探索Swing控件 567

18.1JLabel类和Imagelcon类 567

18.2 Swing按钮 570

18.2.1处理动作事件 571

18.2.2处理项事件 571

18.2.3 JButton类 572

18.2.4 JToggleButton类 574

18.2.5复选框 576

18.2.6单选按钮 579

18.3 JTextField类 581

18.4 JScrollPane类 590

18.5JList类 597

18.6 JComboBox类 601

18.7树 603

18.8 JTable类 606

18.9模型简介 609

18.10习题 609

第19章 使用菜单 612

19.1菜单基础 612

19.2 JMenuBar类、JMenu类和JMenuItem类概览 613

19.2.1 JMenuBar类 613

19.2.2 JMenu类 614

19.2.3 JMenuItem类 615

19.3创建主菜单 616

19.4为菜单项添加助记键和快捷键 620

19.5为菜单项添加图像和工具提示 622

19.6使用JRadioButtonMenultem类和JCheckBoxMenuItem类 629

19.7习题 632

第20章 对话框 634

20.1 JOptionPane类 634

20.2 showMessageDialog()方法 636

20.3 showConfimDialog()方法 640

20.4 showInputDialog()方法 644

20.5 showOptionDialog()方法 648

20.6 JDialog类 652

20.7创建无模式的对话框 656

20.8用JFileChooser类选择文件 657

20.9习题 667

第21章 线程、applet和绘图 670

21.1 Swing中的多线程 670

21.2使用Timer类 676

21.3创建Swing的applet 681

21.4绘图 689

21.4.1绘图基础 689

21.4.2图形上下文 689

21.4.3计算可绘图区域 690

21.4.4请求绘图 691

21.4.5绘图的例子 691

21.5习题 695

第三部分 畅游Java API库 698

第22章 处理字符串 698

22.1字符串的基础知识 698

22.2字符串的构造函数 699

22.3三个与字符串有关的语言特性 701

22.3.1字符串字面量 701

22.3.2字符串拼接 702

22.3.3字符串与其他数据类型拼接 702

22.3.4重写toString()方法 703

22.4 length()方法 707

22.5获得字符串中的字符 708

22.5.1 charAt()方法 708

22.5.2 getChars()方法 708

22.5.3 toCharArray()方法 709

22.6字符串比较 710

22.6.1 equals()方法和equalslgnoreCase()方法 710

22.6.2 equals()方法与“=”运算符的比较 711

22.6.3 regionMatches()方法 712

22.6.4 startsWith()方法和endsWith()方法 712

22.6.5 compareTo()方法和compareToIgnoreCase()方法 713

22.7使用indexOf()方法和lastIndexOf()方法 715

22.8获得修改的字符串 716

22.8.1 substring()方法 716

22.8.2 replace()方法 718

22.8.3 trim()方法 719

22.9改变字符串中字符的大小写 720

22.10 StringBuffer类和StringBuilder类 722

22.11习题 723

第23章 探索java.lang包 725

23.1基本类型包装器 726

23.1.1 Number类 726

23.1.2 Double类和Float类 726

23.1.3 Byte类、Short类、Integer类和Long类 728

23.1.4 Character类 731

23.1.5 Boolean类 734

23.1.6自动装箱和类型包装器 734

23.2 Math类 735

23.3 Process类 738

23.4 ProcessBuilder类 738

23.5 Runtime类 740

23.6 System类 742

23.6.1使用currentTimeMillis()方法测量程序执行的时间 743

23.6.2使用arraycopy()方法 744

23.6.3获得属性值 744

23.6.4重定向标准输入流和标准输出流 745

23.7 Object类 746

23.8 Class类 747

23.9 Enum类 749

23.10与线程有关的类和Runnable接口 749

23.11其他类 749

23.12 java.lang包中的接口 750

23.12.1 Comparable接口 750

23.12.2 Appendable接口 752

23.12.3 Iterable接口 752

23.12.4 Readable接口 753

23.12.5 CharSequence接口 753

23.12.6 AutoCloseable接口 753

23.13习题 754

第24章 探索java.util包 756

24.1 Locale类 757

24.2使用日期和时间 760

24.2.1 Date类 760

24.2.2 Calendar类和GregorianCalendar类 761

24.3用Formatter类格式化输出 766

24.3.1 Formatter类的构造函数 766

24.3.2格式化基础 768

24.3.3格式化字符串和字符 769

24.3.4格式化数字 769

24.3.5格式化日期和时间 770

24.3.6说明符和说明符% 772

24.3.7指定最小的域宽度 772

24.3.8指定精度 773

24.3.9使用格式标志 774

24.3.10大写字母选项 776

24.3.11使用实参索引 777

24.3.12为不同的地区设置格式化 778

24.3.13关闭Formatter对象 778

24.4格式化和printf()方法 781

24.5 Scanner类 783

24.5.1 Scanner类的构造函数 783

24.5.2 Scanner类的基础知识 783

24.5.3 Scanner类的例子 785

24.5.4 Scanner类的其他特性 789

24.6 Random类 790

24.7使用Observable类和Observer接口 792

24.8 Timer类和TimerTask类 795

24.9其他混杂的应用类和接口 797

24.10习题 798

第25章 使用集合框架中的数据结构 800

25.1数据结构概览 800

25.1.1栈和队列 801

25.1.2链表 801

25.1.3树 802

25.1.4散列表 803

25.1.5选择数据结构 803

25.2集合概览 804

25.3集合接口 805

25.3.1 Collection接口 806

25.3.2 List接口 807

25.3.3 Set接口 808

25.3.4 SortedSet接口 809

25.3.5 NavigableSet接口 809

25.3.6 Queue接口 810

25.3.7 Deque接口 811

25.4集合类 813

25.4.1 ArrayList类 814

25.4.2 LinkedList类 817

25.4.3 HashSet类 820

25.4.4 TreeSet类 822

25.4.5 LinkedHashSet类 824

25.4.6 ArrayDeque类 825

25.4.7 PriorityQueue类 827

25.5通过迭代器访问集合 828

25.5.1使用迭代器 829

25.5.2用for-each风格的循环代替迭代器 831

25.6使用映射 832

25.6.1映射接口 832

25.6.2映射类 835

25.7比较器 840

25.8集合算法 842

25.9 Arrays类 845

25.10遗留类和遗留接口 846

25.10.1 Enumeration接口 846

25.10.2 Vector类 846

25.10.3 Stack类 846

25.10.4 Dictionary类 846

25.10.5 Hashtable类 846

25.10.6 Properties类 847

25.11习题 847

第26章 使用java.net包进行网络编程 849

26.1网络基础 849

26.2网络类和网络接口 850

26.3 InetAddress类 851

26.4 Socket类 853

26.5 URL类 856

26.6 URLConnection类 858

26.7 HttpURLConnection类 862

26.8数据报 865

26.8.1 DatagramSocket类 865

26.8.2 DatagramPacket类 865

26.8.3数据报的例子 866

26.9习题 869

第27章 并发实用工具 870

27.1并发API包 871

27.1.1 java.util.concurrent包 871

27.1.2 java.util.concurrent.atomic包 872

27.1.3 java.util.concurrent.locks包 872

27.2使用同步对象 872

27.2.1 Semaphore类 872

27.2.2 CountDownLatch类 876

27.2.3 CyclicBarrier类 878

27.2.4 Exchanger类 881

27.2.5 Phaser类 883

27.3使用执行器 890

27.4使用Callable接口和Future接口 892

27.5 TimeUnit枚举 895

27.6并发集合 896

27.7锁 897

27.8原子操作 900

27.9通过Fork/Join框架并行编程 900

27.10主要的Fork/Join类 901

27.10.1 ForkJoinTask﹤V﹥类 901

27.10.2 RecursiveAction类 902

27.10.3 RecursiveTask﹤V﹥类 902

27.10.4 ForkJoinPool类 903

27.11分治策略 904

27.11.1第一个简单的Fork/Join示例 904

27.11.2理解并行度的影响 906

27.11.3使用RecursiveTask﹤V﹥类的一个例子 910

27.11.4异步执行任务 912

27.12并发实用工具与Java的传统方法的比较 912

27.13习题 913

附录A 使用Java文档注释 915

附录B 正则表达式介绍 921

附录C 部分习题的参考答案 928