Java 学习笔记(导航目录)

Java学习计划

  • ☕️学习目标
  • ☕️学习目录
    • 第1部分 Java基础程序设计
      • 第1章 Java概述及开发环境搭建
      • 第2章 简单的Java程序
      • 第3章 Java基础程序设计
      • 第4章 数组与方法
    • 第2部分 Java面向对象程序设计
      • 第5章 面向对象(基础篇)
      • 第6章 面向对象(高级篇)
      • 第7章 异常的捕获及处理
      • 第8章 包及访问控制权限
    • 第3部分 Java应用程序设计
      • 第9章 多线程
      • 第10章 泛型
      • 第11章 Java常用类库
      • 第12章 Java IO
      • 第13章 Java类集
      • 第14章 枚举 559
      • 第15章 Java反射机制
      • 第16章 Annotation
      • 第17章 Java数据库编程
      • 第18章 图形界面
      • 第19章 Java网络编程
      • 第20章 Java新IO
      • 第21章 Eclipse开发工具
  • ☕️学习时间
  • ☕️学习产出
  • ☕️总结

  • 学习内容参考《Java开发实战经典》
  • 视频内容推荐优酷视频:Java开发实战经典
  • 刷题网站:牛客网

☕️学习目标

  • 掌握 Java 基础知识
  • 每日刷题

☕️学习目录

第1部分 Java基础程序设计

第1章 Java概述及开发环境搭建

1.1 认识Java 2
1.1.1 什么是Java 2
1.1.2 Java语言的特点 3
1.1.3 Java程序的运行机制和Java虚拟机 5
1.2 Java开发环境搭建 6
1.2.1 JDK的安装与配置 7
1.2.2 编写第1个Java程序 8
1.2.3 classpath属性的作用 9
1.3 本章要点 10
1.4 习题 10

第2章 简单的Java程序

2.1 一个简单的Java范例 11
2.2 Java程序的注释 13
2.3 Java中的标识符 13
2.4 Java中的关键字 14
2.5 变量和常量 14
2.6 本章要点 15
2.7 习题 15

第3章 Java基础程序设计

3.1 数据类型划分 16
3.2 基本数据类型 17
3.2.1 整数类型 17
3.2.2 数据的溢出 18
3.2.3 字符类型 19
3.2.4 浮点数类型与双精度浮点数类型 21
3.2.5 布尔类型 22
3.2.6 基本数据类型的默认值 22
3.3 数据类型的转换 23
3.3.1 数据类型的自动转换 23
3.3.2 数据类型的强制转换 25
3.4 运算符、表达式与语句 26
3.4.1 运算符 26
3.4.2 简洁表达式 41
3.5 选择与循环语句 43
3.5.1 程序的结构 43
3.5.2 选择结构 45
3.5.3 循环结构 51
3.5.4 循环的中断 56
3.6 本章要点 58
3.7 习题 59

第4章 数组与方法

4.1 数组的定义及使用 60
4.1.1 一维数组 60
4.1.2 数组中元素的表示方法 62
4.1.3 数组的静态初始化 65
4.1.4 数组应用范例 66
4.1.5 二维数组 68
4.1.6 多维数组 71
4.2 方法的声明及使用 72
4.2.1 方法的定义 72
4.2.2 方法的重载 74
4.2.3 使用return结束一个方法 76
4.2.4 方法的递归调用 76
4.3 数组的引用传递 77
4.3.1 传递及返回数组 77
4.3.2 范例–数组排序 79
4.3.3 范例–数组复制 81
4.4 Java新特性对数组的支持 82
4.4.1 Java新特性–可变参数 82
4.4.2 Java新特性–foreach输出 83
4.5 本章要点 84
4.6 习题 84

第2部分 Java面向对象程序设计

第5章 面向对象(基础篇)

5.1 面向对象的基本概念 88
5.2 类与对象 90
5.2.1 类与对象的关系 90
5.2.2 类的定义 91
5.2.3 对象的创建及使用 92
5.2.4 创建多个对象 94
5.3 封装性 98
5.4 构造方法 102
5.5 匿名对象 106
5.6 实例讲解–类设计分析 107
5.7 String 111
5.7.1 实例化String对象 111
5.7.2 String的内容比较 112
5.7.3 String两种实例化方式的区别 114
5.7.4 字符串的内容不可改变 116
5.7.5 String类中常用方法 117
5.8 引用传递及基本应用 123
5.8.1 引用传递 123
5.8.2 接收本类的引用 126
5.8.3 范例–一对一关系 127
5.8.4 范例–进一步深入一对一关系 129
5.9 this关键字 131
5.9.1 使用this调用本类中的属性 131
5.9.2 使用this调用构造方法 134
5.9.3 this表示当前对象 136
5.10 static关键字 140
5.10.1 使用static声明属性 140
5.10.2 使用static声明方法 143
5.10.3 static的相关应用 145
5.10.4 理解main方法 146
5.11 代码块 148
5.11.1 普通代码块 148
5.11.2 构造块 148
5.11.3 静态代码块 149
5.12 构造方法私有化 151
5.12.1 问题的引出 151
5.12.2 问题的解决 152
5.12.3 程序的意义 153
5.13 对象数组 154
5.14 内部类 156
5.14.1 内部类的基本定义 156
5.14.2 使用static定义内部类 157
5.14.3 在外部访问内部类 158
5.14.4 在方法中定义内部类 159
5.15 实例讲解 160
5.15.1 系统登录 160
5.15.2 单向链表实现(1) 163
5.15.3 单向链表实现(2) 165
5.16 本章要点 168
5.17 习题1 168
5.17 习题2

第6章 面向对象(高级篇)

6.1 继承的基本概念 170
6.2 继承的进一步研究 176
6.2.1 子类对象的实例化过程 176
6.2.2 方法的覆写 178
6.2.3 super关键字的作用 182
6.3 范例–继承的应用 183
6.4 final关键字 186
6.5 抽象类的基本概念 187
6.6 接口的基本概念 192
6.7 对象的多态性 197
6.8 instanceof关键字 202
6.9 抽象类与接口的应用 204
6.9.1 为抽象类与接口实例化 204
6.9.2 抽象类的实际应用–模板设计 206
6.9.3 7接口的实际应用–制定标准 208
6.9.4 设计模式–工厂设计 209
6.9.5 设计模式–代理设计 213
6.9.6 设计模式–适配器设计 214
6.9.7 内部类的扩展 216
6.9.8 抽象类与接口之间的关系 217
6.10 实例分析:宠物商店 218
6.11 Object类 224
6.11.1 基本作用 224
6.11.2 主要方法 224
6.11.3 接收任意引用类型的对象 227
6.12 包装类 228
6.12.1 包装类介绍 228
6.12.2 装箱与拆箱 229
6.12.3 包装类应用 230
6.13 匿名内部类 231
6.14 本章要点 233
6.15 习题 234

第7章 异常的捕获及处理

7.1 异常的基本概念 235
7.1.1 为什么需要异常处理 235
7.1.2 在程序中使用异常处理 236
7.1.3 异常类的继承结构 241
7.1.4 Java的异常处理机制 242
7.2 throws与throw关键字 245
7.2.1 throws关键字 245
7.2.2 throw关键字 246
7.2.3 范例–throw与throws的应用 247
7.3 Exception类与RuntimeException类 248
7.4 自定义异常类 249
7.5 断言 250
7.6 本章要点 251
7.7 习题 251

第8章 包及访问控制权限

8.1 包的概念及使用 252
8.1.1 包的基本概念 252
8.1.2 import语句 254
8.1.3 系统常见包 257
8.1.4 Java新特性–静态导入 258
8.2 jar命令的使用 259
8.3 访问控制权限 261
8.4 Java命名规范 263
8.5 本章要点 263
8.6 习题 263

第3部分 Java应用程序设计

第9章 多线程

精简内容(多线程)
多线程要点
多线程习题

9.1 进程与线程 266
9.2 Java中线程的实现 267
9.2.1 继承Thread类 267
9.2.2 实现Runnable接口 271
9.2.3 Thread类和Runnable接口 273
9.3 线程的状态 276
9.4 线程操作的相关方法 277
9.4.1 取得和设置线程名称 277
9.4.2 判断线程是否启动 280
9.4.3 线程的强制运行 281
9.4.4 线程的休眠 282
9.4.5 中断线程 282
9.4.6 后台线程 283
9.4.7 线程的优先级 284
9.4.8 线程的礼让 286
9.5 线程操作范例 287
9.5.1 实现一–继承Thread类 287
9.5.2 实现二–实现Runnable接口 288
9.6 同步与死锁 289
9.6.1 问题的引出 289
9.6.2 使用同步解决问题 291
9.6.3 死锁 293
9.7 线程操作案例–生产者及消费者 296
9.7.1 程序的基本实现 296
9.7.2 问题解决1–加入同步 299
9.7.3 Object类对线程的支持–等待与唤醒 301
9.7.4 问题解决2–加入等待与唤醒 302
9.8 线程的生命周期 303
9.9 本章要点 305
9.10 习题 306

第10章 泛型

10.1 为什么要使用泛型 307
10.2 泛型应用 310
10.2.1 泛型的基本应用 310
10.2.2 使用泛型修改代码 313
10.2.3 泛型应用中的构造方法 314
10.2.4 指定多个泛型类型 315
10.3 泛型的安全警告 316
10.4 通配符 318
10.4.1 匹配任意类型的通配符 318
10.4.2 受限泛型 320
10.5 泛型与子类继承的限制 323
10.6 泛型接口 324
10.6.1 定义泛型接口 324
10.6.2 泛型接口的两种实现方式 325
10.7 泛型方法 326
10.7.1 定义泛型方法 327
10.7.2 通过泛型方法返回泛型类实例 327
10.7.3 使用泛型统一传入的参数类型 328
10.8 泛型数组 329
10.9 泛型的嵌套设置 330
10.10 范例–泛型应用 331
10.11 本章要点 335
10.12 习题 335

第11章 Java常用类库

11.1 StringBuffer类 336
11.1.1 认识StringBuffer类 336
11.1.2 StringBuffer类的应用 341
11.2 Runtime类 342
11.2.1 认识Runtime类 342
11.2.2 得到JVM的内存空间信息 343
11.2.3 Runtime类与Process类 344
11.3 国际化程序 345
11.3.1 国际化程序的实现思路 345
11.3.2 Locale类 346
11.3.3 ResourceBundle类 347
11.3.4 Java国际化程序实现 348
11.3.5 处理动态文本 349
11.3.6 使用类代替资源文件 352
11.4 System类 353
11.4.1 认识System类 353
11.4.2 垃圾对象的回收 356
11.4.3 对象的生命周期 358
11.5 日期操作类 358
11.5.1 Date类 358
11.5.2 Calendar类 359
11.5.3 DateFormat类 360
11.5.4 SimpleDateFormat类 362
11.5.5 实例操作–取得完整日期 364
11.6 Math类 367
11.7 Random类 368
11.8 NumberFormat类 369
11.8.1 NumberFormat类的基本使用 369
11.8.2 DecimalFormat类 370
11.9 BigInteger类 371
11.10 BigDecimal类 373
11.11 对象克隆技术 374
11.12 Arrays类 375
11.13 Comparable接口 377
11.13.1 比较器的基本应用 377
11.13.2 分析比较器的排序原理 379
11.14 另一种比较器Comparator 381
11.15 观察者设计模式 384
11.15.1 什么叫观察者 384
11.15.2 观察者模式实现 384
11.16 正则表达式 386
11.16.1 认识正则表达式 386
11.16.2 Pattern类和Matcher类 387
11.16.3 String类对正则表达式的支持 390
11.17 定时调度 392
11.17.1 Timer类 392
11.17.2 TimerTask类 393
11.17.3 范例–定时操作 394
11.18 本章要点 395
11.19 习题 395

第12章 Java IO

IO流(上)
IO流(下)

12.1 操作文件的类–File 397
12.1.1 File类的基本介绍 397
12.1.2 使用File类操作文件 398
12.1.3 范例–列出指定目录的全部内容 404
12.2 RandomAccessFile类 405
12.2.1 使用RandomAccessFile类写入数据 406
12.2.2 使用RandomAccessFile类读取数据 407
12.3 字节流与字符流基本操作 408
12.3.1 字节流 409
12.3.2 字符流 417
12.3.3 字节流与字符流的区别 422
12.3.4 范例–文件复制 425
12.4 转换流–OutputStreamWriter类与InputStreamReader类 427
12.5 内存操作流 429
12.6 管道流 431
12.7 打印流 433
12.7.1 打印流的基本操作 433
12.7.2 使用打印流进行格式化 434
12.8 System类对IO的支持 435
12.8.1 System.out 436
12.8.2 System.err 437
12.8.3 System.in 438
12.8.4 输入/输出重定向 440
12.9 BufferedReader类 443
12.9.1 键盘输入数据的标准格式 444
12.9.2 相关操作实例 445
12.10 Scanner类 452
12.10.1 Scanner类简介 452
12.10.2 使用Scanner类输入数据 453
12.11 数据操作流 456
12.11.1 DataOutputStream类 457
12.11.2 DataInputStream类 458
12.12 合并流 460
12.13 压缩流 461
12.13.1 ZIP压缩输入/输出流简介 461
12.13.2 ZipOutputStream类 462
12.13.3 ZipFile类 466
12.13.4 ZipInputStream类 468
12.14 回退流 470
12.15 字符编码 472
12.15.1 Java常见编码简介 472
12.15.2 得到本机的编码显示 473
12.15.3 乱码产生 473
12.16 对象序列化 474
12.16.1 基本概念与Serializable接口 474
12.16.2 对象输出流ObjectOutputStream 475
12.16.3 对象输入流ObjectInputStream 477
12.16.4 Externalizable接口 478
12.16.5 transient关键字 480
12.16.6 序列化一组对象 482
12.17 实例操作–单人信息管理程序 483
12.18 本章要点 487
12.19 习题 488

第13章 Java类集

类集(上)
类集(下)
类集要点
类集习题

13.1 认识类集 491
13.1.1 基本概念 491
13.1.2 类集框架主要接口 492
13.2 Collection接口 493
13.2.1 Collection接口的定义 493
13.2.2 Collection子接口的定义 494
13.3 List接口 494
13.3.1 List接口的定义 494
13.3.2 List接口的常用子类 495
13.4 Set接口 504
13.4.1 Set接口的定义 504
13.4.2 Set接口的常用子类 505
13.5 SortedSet接口 512
13.6 集合的输出 513
13.6.1 迭代输出:Iterator 513
13.6.2 双向迭代输出:ListIterator 516
13.6.3 Java新支持:foreach 519
13.6.4 废弃的接口:Enumeration 520
13.7 Map接口 521
13.7.1 Map接口简介 521
13.7.2 Map.Entry接口简介 522
13.7.3 Map接口的常用子类 522
13.7.4 Map接口的使用注意事项 529
13.7.5 key可以重复的Map集合:IdentityHashMap 535
13.8 SortedMap接口 537
13.9 集合工具类:Collections 539
13.9.1 Collections简介 539
13.9.2 Collections操作实例 540
13.10 其他集合类 545
13.10.1 Stack类 545
13.10.2 属性类:Properties 546
13.11 范例 551
13.11.1 范例–一对多关系 551
13.11.2 范例–多对多关系 553
13.12 本章要点 557
13.13 习题 558

第14章 枚举 559

14.1 枚举类型简介 559
14.2 使用简单程序完成枚举的功能 559
14.3 定义一个枚举类型 561
14.4 Enum 563
14.4.1 取得枚举的信息 564
14.4.2 为每一个枚举对象属性赋值 565
14.4.3 使用比较器 567
14.5 类集对枚举的支持–EnumMap、EnumSet 568
14.5.1 EnumMap 568
14.5.2 EnumSet 569
14.6 让枚举类实现一个接口 573
14.7 在枚举类中定义抽象方法 574
14.8 本章要点 575
14.9 习题 576

第15章 Java反射机制

15.1 认识Class类 577
15.2 Class类的使用 580
15.2.1 通过无参构造实例化对象 580
15.2.2 调用有参构造实例化对象 582
15.3 反射的应用–取得类的结构 585
15.3.1 取得所实现的全部接口 586
15.3.2 取得父类 587
15.3.3 取得全部构造方法 587
15.3.4 取得全部方法 590
15.3.5 取得全部属性 592
15.4 Java反射机制的深入应用 594
15.4.1 通过反射调用类中的方法 594
15.4.2 调用setter及getter方法 596
15.4.3 通过反射操作属性 598
15.4.4 通过反射操作数组 599
15.5 动态代理 602
15.6 类的生命周期 604
15.7 工厂设计模式 605
15.7.1 将反射应用在工厂模式上 605
15.7.2 结合属性文件的工厂模式 606
15.8 本章要点 608
15.9 习题 608

第16章 Annotation

16.1 Annotation简介 609
16.2 系统内建的Annotation 609
16.2.1 @Override 610
16.2.2 @Deprecated 612
16.2.3 @SuppressWarnings 613
16.3 自定义Annotation 615
16.3.1 Annotation的定义格式 615
16.3.2 Retention和RetentionPolicy 619
16.4 通过反射取得Annotation 620
16.4.1 范例–取得全部的Annotation 620
16.4.2 范例–取得指定的Annotation中的内容 621
16.5 @Target注释 623
16.6 @Documented注释 625
16.7 @Inherited注释 627
16.8 本章要点 628
16.9 习题 629

第17章 Java数据库编程

17.1 JDBC概述 630
17.1.1 JDBC简介 630
17.1.2 JDBC驱动分类 630
17.1.3 JDBC的主要操作类及接口 631
17.2 MySQL数据库 632
17.2.1 MySQL简介 632
17.2.2 MySQL安装及配置 633
17.2.3 MySQL常用命令 634
17.3 SQL语法基础 636
17.3.1 MySQL中的数据类型 638
17.3.2 增加数据 639
17.3.3 删除数据 639
17.3.4 更新数据 640
17.3.5 查询数据 640
17.4 JDBC操作步骤 642
17.5 连接数据库 642
17.5.1 配置MySQL数据库的驱动程序 642
17.5.2 加载驱动程序 643
17.5.3 连接及关闭数据库 644
17.6 执行数据库的更新操作 646
17.6.1 实例操作一–执行数据库插入操作 647
17.6.2 实例操作二–执行数据库修改 649
17.6.3 实例操作三–执行数据库删除操作 650
17.7 ResultSet接口 651
17.8 PreparedStatement接口 654
17.8.1 PreparedStatement简介 654
17.8.2 使用PreparedStatement执行数据库操作 655
17.9 处理大数据对象 659
17.9.1 处理CLOB数据 660
17.9.2 处理BLOB数据 665
17.10 CallableStatement接口 669
17.11 JDBC 2.0操作 671
17.11.1 可滚动的结果集 672
17.11.2 使用结果集插入数据 675
17.11.3 使用结果集更新数据 676
17.11.4 使用结果集删除数据 678
17.11.5 批处理 679
17.12 事务处理 680
17.12.1 MySQL对事务的支持 681
17.12.2 执行JDBC的事务处理 682
17.13 使用元数据分析数据库 686
17.13.1 DatabaseMetaData 686
17.13.2 ResultSetMetaData 688
17.14 使用JDBC连接Oracle数据库 689
17.15 本章要点 691
17.16 习题 692

第18章 图形界面

18.1 AWT简介 693
18.1.1 组件 694
18.1.2 容器 695
18.1.3 布局管理器 695
18.2 Swing简介 695
18.3 基本容器:JFrame 696
18.4 标签组件:JLabel 699
18.4.1 认识JLabel 699
18.4.2 更改JLabel的文字样式 700
18.4.3 在JLabel中设置图片 702
18.5 按钮组件:JButton 704
18.6 布局管理器 706
18.6.1 FlowLayout 706
18.6.2 BorderLayout 707
18.6.3 GridLayout 708
18.6.4 CardLayout 710
18.6.5 绝对定位 711
18.7 其他容器 712
18.7.1 JPanel 712
18.7.2 JSplitPane 713
18.7.3 JTabbedPane 715
18.7.4 JScrollPane 717
18.7.5 JDesktopPane与JInternalFrame 718
18.8 不弹起的按钮组件:JToggleButton 720
18.9 文本组件:JTextComponent 721
18.9.1 单行文本输入组件:JTextField 722
18.9.2 密文输入组件:JPasswordField 724
18.9.3 多行文本输入组件:JTextArea 725
18.10 事件处理 727
18.10.1 事件和监听器 727
18.10.2 窗体事件 728
18.10.3 监听适配器 730
18.10.4 动作事件及监听处理 731
18.10.5 键盘事件及监听处理 737
18.10.6 鼠标事件及监听处理 740
18.10.7 鼠标拖拽事件及监听处理 743
18.11 单选按钮:JRadioButton 745
18.11.1 认识JRadioButton 745
18.11.2 JRadioButton事件处理 747
18.12 复选框:JCheckBox 749
18.12.1 认识JCheckBox 749
18.12.2 JCheckBox事件处理 751
18.13 列表框:JList 753
18.13.1 认识JList 753
18.13.2 使用ListModel构造JList 755
18.13.3 JList事件处理 757
18.14 下拉列表框:JComboBox 759
18.14.1 认识JComboBox 759
18.14.2 使用ComboBoxModel构造JComboBox 761
18.14.3 JComboBox事件处理 763
18.15 菜单组件 765
18.15.1 JMenu与JMenuBar 765
18.15.2 JMenuItem 767
18.15.3 事件处理 769
18.16 文件选择框:JFileChooser 772
18.17 表格 776
18.17.1 JTable 776
18.17.2 使用TableModel构建表格 777
18.18 本章要点 783
18.19 习题 784

第19章 Java网络编程

19.1 IP(Internet Protocol)与InetAddress 785
19.1.1 IP地址(Internet Protocol)简介 785
19.1.2 InetAddress 786
19.2 URL与URLConnection 787
19.2.1 URL 787
19.2.2 URLConnection 788
19.3 URLEncoder与URLDecoder 789
19.4 TCP程序设计 790
19.4.1 ServerSocket类与Socket类 790
19.4.2 第一个TCP程序 791
19.4.3 案例:Echo程序 793
19.4.4 在服务器上应用多线程 796
19.5 UDP程序设计 797
19.5.1 UDP简介 797
19.5.2 UDP程序实现 798
19.6 本章要点 800
19.7 习题 800

第20章 Java新IO

20.1 Java新IO简介 801
20.2 缓冲区与Buffer 802
20.2.1 Buffer的基本操作 802
20.2.2 深入缓冲区操作 804
20.2.3 创建子缓冲区 805
20.2.4 创建只读缓冲区 806
20.2.5 创建直接缓冲区 807
20.3 通道 808
20.3.1 FileChannel 808
20.3.2 内存映射 810
20.4 文件锁:FileLock 812
20.5 字符集:Charset 813
20.6 Selector 816
20.7 本章要点 819

第21章 Eclipse开发工具

21.1 Eclipse简介 821
21.2 使用Eclipse 822
21.3 开发Java程序 823
21.4 JUnit测试工具 825
21.5 CVS客户端的配置 828
21.5.1 CVS服务器端配置 828
21.5.2 在Eclipse中连接CVS 830
21.6 本章要点 831
参考文献 832


☕️学习时间

  • 周一至周五下午3点-晚上9点
  • 周六上午 8 点-上午 11 点
  • 周日晚上 7 点-晚上 10 点

☕️学习产出

  • 技术笔记 2 遍
  • CSDN 技术博客 3 篇
  • 资料中代码手动 1 遍

☕️总结

    在这个被疫情封锁的假期,我们无处狂奔,何不立于八仙桌之上,尽情畅游01的世界,感受数字的美丽,让键盘展示它应有的灵动,荧幕浮现生动的代码,制定计划,改变自己。
    随着学习的深入,会发现学Java并不像想象中那么枯燥和困难,甚至会发现还有一些美妙之感。实践是检验理论的唯一标准,只有写代码才能让你真正认识到问题的深刻度,不断发现编程语言的局限性和解决问题的方案。
    欢迎大家来一起学习进步!

你可能感兴趣的:(java,开发语言,servlet)