type
status
date
slug
summary
tags
category
icon
password
comment
😀
2024.09.13 JAVA梦开始的地方,之前天天立flag要学,到现在才学 2024.10.10 很好,一个月前立的flag现在才开始,真是被自己蠢笑了,忍不住对自己骂一句脏话 2024.12.24 很好很好,一个学期了也没学哈哈哈
 

Java基础复习笔记

第01章:Java语言概述

1. Java基础学习的章节划分

语言 = 语法 + 逻辑

2. 计算机的构成

  • 硬件:CPU、内存、硬盘、输入设备、输出设备、调制解调器
  • 软件

3. 软件

  • 软件:即一系列按照特定顺序组织的计算机数据指令的集合。
    • 系统软件应用软件之分。
      • 系统软件:windows、mac os、android、ios、linux
      • 应用软件:qq、微信、音乐播放器等

4. 人机交互方式

  • 图形化界面的方式
  • 命令行的方式交互
  • DOS命令(掌握)
    • cd cd.. cd/ md rd del exit cls等

5. 语言

  • 计算机语言的分代
    • 第1代:机器语言:0和1
    • 第2代:汇编语言:出现了助记符
    • 第3代:高级语言:
      • 面向过程阶段:C
      • 面向对象阶段:C++,Java,C#,Python,JS等
  • 没有“最好”的语言,只有在特定场景下相对来说,最适合的语言而已。

6. Java概述

  • Java简史
    • 1995诞生
    • 1996:jdk1.0版本
    • 2004:Java5.0(jdk1.5)--->里程碑式的版本;J2SE->JavaSE、J2EE->JavaEE、J2ME->JavaME
    • 2014:Java8.0--->里程碑式的版本;目前,市场占有率仍然很高。(lambda表达式、StreamAPI)
    • 后续:Java11、Java17都属于LTS(长期支持版本)
  • SUN、Oracle、Google等
  • Java之父:詹姆斯·高斯林
  • Java的应用场景:
    • JavaSE:开发桌面级应用 (不靠谱)
    • JavaEE:开发企业级后台应用
    • JavaME:开发小型设备的应用(不靠谱)
----> JavaEE、Android应用、大数据开发

7. JDK的下载、安装及环境变量的配置(重点)

  • jdk下载:官网下载
  • 安装:jdk8.0和jdk17.0 (傻瓜式安装)
  • path环境变量的配置(重点)

8. 第1个Java程序

新建java文件:PersonInfo.java
针对于第1个程序的小结及常见问题的分析

9. 注释

  • 掌握:单行注释、多行注释
    • 作用1:对程序中的代码进行解释说明
    • 作用2:有助于调试程序
  • 熟悉:文档注释 (可以被javadoc解析)

10. API文档

  • API:(Application Programming Interface,应用程序编程接口)是 Java 提供的基本编程接口。
    • 像String、System都属于API
  • API文档:用于解释说明API如何使用的一个文档。

第02章:变量与进制

1. 关键字(keyword)

  • 关键字:被Java语言赋予特殊含义的字符串。
  • 注意点:关键字都是小写的!
  • Java规范了50个关键字(包含了goto、const两个保留字)
    • 额外的三个字面量true、false、null虽然不是关键字,但是我们也把他们看做是关键字。

2. 标识符

  • 凡是可以自己命名的地方,都是标识符。
  • 标识符都有哪些位置?类名、变量名、包名、方法名、接口名、常量名等
  • 标识符的命名规则
(如果不遵守,编译不通过。要求大家遵守)
由26个英文字母大小写,0-9 ,_或 $ 组成
数字不可以开头。
不可以使用关键字和保留字,但能包含关键字和保留字。
Java中严格区分大小写,长度无限制。
标识符不能包含空格。
  • 标识符的命名规范
(如果不遵守规范,不影响程序的编译和运行。建议大家遵守,否则容易被鄙视)
包名:多单词组成时所有字母都小写:xxxyyyzzz。
例如:java.lang、com.atguigu.bean
类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz
例如:HelloWorld,String,System等
变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz
例如:age,name,bookName,main,binarySearch,getName
常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ
例如:MAX_VALUE,PI,DEFAULT_CAPACITY
  • 标识符在声明时,要见名知意!

3. 变量的基本使用

  1. 内存中的一个存储区域,该区域的数据可以在同一类型范围内不断变化
  1. 变量的构成包含三个要素:数据类型 变量名 变量值
  1. Java中变量声明的格式:数据类型 变量名 = 变量值;
  1. Java是一门强类型的语言。即每一个变量都规定了具体的类型。
  1. 使用变量注意:
      • Java中每个变量必须先声明,后使用。
      • 使用变量名来访问这块区域的数据。
      • 变量的作用域:其定义所在的一对{ }内。
      • 变量只有在其作用域内才有效。出了作用域,变量不可以再被调用。
      • 同一个作用域内,不能定义重名的变量。

4. 基本数据类型的变量

变量按照数据类型来分:
  • 整型变量
  • 浮点类型
  • char类型(字符类型)
  • 布尔类型(boolean)

5. 基本数据类型变量间的运算规则

5.1 自动类型提升规则

说明:
① 容量小的变量和容量大的变量做运算时,运算的结果是容量大的变量的数据类型。
(此时的容量小、容量大指的是存储数据的范围的大小,并非占用内存空间的大小。比如:float的容量要大于long的容量)
② byte、short、char 三者之间的变量做运算,结果是int类型。
③ 不管是自动类型提升规则,还是强制类型转换规则都只针对于基本数据类型中的7种进行操作(除了boolean类型)

5.2 强制类型转换规则

说明:
①看做是自动类型提升规则的逆运算
② 如果需要将容量大类型的变量转换为容量小的类型的变量时,就需要使用强制类型转换
③ 强制类型转换需要使用一对()表示
④ 使用强转符转换时,可能造成精度的损失

6. String与8种基本数据类型变量间的运算

  1. String的理解
String,即为字符串类型。
声明String类型的变量,可以使用一对""表示。
一对""内可以声明0个、1个或多个字符
  1. String与基本数据类型变量间的运算
String类型是可以与8种基本数据类型的变量做运算的。
String只能与8种基本数据类型的变量做连接运算:+
连接运算的结果只能是String类型。

7. 进制(了解)

  • 计算机中存储和运算的所有数据都要转为二进制。包括数字、字符、图片、声音、视频等。

7.1 常见的几种进制

  • 熟悉:
    • 十进制(decimal)数字组成:0-9进位规则:满十进一二进制(binary)数字组成:0-1进位规则:满二进一,以0b或0B开头八进制(octal):很少使用数字组成:0-7进位规则:满八进一,以数字0开头表示十六进制数字组成:0-9,a-f进位规则:满十六进一,以0x或0X开头表示。此处的 a-f 不区分大小写

7.2 二进制与十进制间的转换

熟悉:二进制与十进制间的转换(见ppt)
  • 表示二进制整数时,最高位为符号位。0:正数;1:负数。
  • 二进制整数在存储时,涉及到原码、反码、补码。
    • 正数:三码合一。
    • 负数:负数的原码,除符号位外,各个位取反,得到负数的反码。
      • 负数的反码+1,得到负数的补码。
  • 计算机底层都是以二进制补码的形式存储数据的。

7.3 二进制与其它进制间的转换

  • 了解:二进制与八进制、十六进制间的转换

第03章:IDEA的安装与使用

1. 认识IDEA的地位、特点

  • Java开发中占比第1。
  • Eclipse?IDEA?① 符合人体工程学 ② 功能强大

2. IDEA的下载、安装、注册

3. IDEA的基本使用

  • 在IDEA中能创建一个工程:Project。
    • 在工程的src下写一个HelloWorld,并运行
  • 安装课件中的第5节中的设置,作必要的修改。

4. 熟悉工程、module中jdk和设置语言级别操作

notion image
关于工程:
notion image
关于Module:
notion image
添加SDK:
notion image

5. 熟悉Project-Module-Package-Class的关系

  • 上一级和下一级之间是一对多的关系。
  • 掌握:新建Project、新建Module、删除Module、导入老师的Module(难点)

6. 关于IDEA的其它操作

  • 模板的使用
  • 快捷键的使用
  • Debug程序
  • 插件的使用

第04章:运算符与流程控制

1. 运算符之1:算术运算符

  • % : 结果与被模数的符号相同。常用来判别是否能整除一个数。
  • (前)++ 与 (后)++ ;(前)-- 与 (后)--

2. 运算符之2:赋值运算符

  • = : 与 == 的区别。= 的右边是变量或常量。"连续赋值" (int i,j;i = j = 10;)
  • += -= *= /= %= :运算后,不会改变变量的类型。(int i = 1; i *= 0.1; )

3. 运算符之3:比较运算符

  • > < >= <= 只能适用于7种基本数据类型(不含boolean)
  • == != 适用于8种基本数据类型、引用数据类型。
  • 比较运算符的结果是boolean类型。

4. 运算符之4:逻辑运算符

  • 逻辑运算符操作的是boolean类型,结果也是boolean类型
  • & 与 && 的区别;| 与 || 的区别

5. 运算符之5:位运算符(非重点)

  • 位运算符操作的整数类型
  • << >> >>>的应用场景

6. 运算符之6:条件运算符

(条件表达式)? 表达式1 : 表达式2规则:
判断条件表达式是true还是false,如果是true,则执行表达式1;如果是false,则执行表达式2
如果将运算的结果赋给一个变量的话,要求:表达式1与表达式2的类型一致。(相同 或 满足自动类型提升的规则即可)
  1. 案例:获取两个数的较大值;获取三个数的最大值
  1. 与分支结构的if-else对比:
凡是可以使用条件运算符的地方,都可以改写为if-else。反之,不一定。
在既可以使用条件运算符,又可以使用if-else的场景下,推荐使用条件运算符。因为条件运算符效率稍高。

7. 运算符的优先级

  • 我们在开发中,如果希望某个运算符优先运算的话,主动的添加一对()。
  • 常见的一些运算符优先级谁高谁低呢?基本上是如你所想
    • 大家在开放时,如果涉及到多个运算符做运算,建议可以分行写

    8. 流程控制语句概述

    9. 分支结构1:if-else

    • 格式
    • 说明

    10. 分支结构2:switch-case

    • 格式
    • 说明
    • if-else 与 switch-case的对比

    11. 循环结构1:for

    • 循环的概述
    • 格式
    • 说明

    12. 循环结构2:while

    • 格式
    • 执行过程
    • 说明

    13.循环结构3:do-while

    • 格式
    • 执行过程
    • 说明
    • 使用场景

    14. "无限"循环

    • 结构
    • 使用场景
    • 结束循环的方式
    • 注意:必须确保此循环可以结束。否则就是死循环!我们开发中要避免死循环

    15. 嵌套循环

    • 格式
    • 说明:上述的外层循环、内存循环可以是for、while、do-while
    • 技巧:
      • 外层循环执行m次,内层循环执行n次。意味着内层循环的循环体执行 m * n次
      • 外层控制行数,内层控制列数

    16. break、continue关键字的使用

    相同点:① 都可以使用在循环结构中 ② 其后不能编写执行语句
    不同点:① 结束循环结构;结束当次循环 ②使用范围:break:switch-case结构中使用

    17. Scanner的使用、随机数的获取

    • Scanner的使用
    • 如何获取随机数

    18. 阶段项目1:谷粒记账软件

    第05章:数组

    1. 数组的概述(理解)

    2. 一维数组的使用(重点)

    3. 二维数组的使用(熟悉)

    • 二维数组的理解
    • 基本内容
    • 数组元素的默认值

    4. 数组的常用算法(熟练)

    • 算法常用操作1
    • 算法常用操作2

    5. Arrays:数组的工具类(熟悉)

    6. 小结:数组中的常见异常

    第06章:面向对象-基础

    1. 理解:面向过程vs面向对象

    2. 面向对象的要素:类、对象

    • 区分类与对象
      • 类:抽象的、概念上的定义
      • 对象:具体的,实实在在存在的,由类派生出来的
    • 设计类,就是设计类的成员:属性、方法
    • 面向对象完成具体功能的操作的三步流程(非常重要)
      • 对象的内存解析
        • JVM内存分配:虚拟机栈、堆、方法区(目前用不到)、程序计数器(略)、本地方法栈(略)
          • 虚拟机栈:存放的是方法对应的栈帧,每个栈帧中存放方法中声明的局部变量。
          • 堆:new出来的"东西":数组实体、对象实体(含成员变量)
        • 创建类的1个对象、创建类的多个对象(内存解析图建议大家都自己画画)

      3. 类的成员之一:属性(重点)

      4. 类的成员之二:方法(重点)

      4.1 方法的使用

      4.2 return关键字

      5. 内存的分配使用

      5.1 方法调用的内存解析

      notion image

      5.2 目前为止,内存分析(重要)

      • 基本原则
      1、JVM中内存划分
      • 栈:以栈帧为基本单位(每个方法对应一个栈帧);栈帧里存放局部变量。
      • 堆:new 出来的"东西":数组实体(含数组元素)、对象实体(含成员变量)
      2、区分清成员变量(类内部、方法外声明的)、局部变量(方法的形参、方法内定义的变量、构造器内定义的变量、构造器的形参、代码块内部等)
      3、值传递机制:
      • 如果参数是基本数据类型,传递的是基本数据类型变量存储的数据值
      • 如果参数是引用数据类型,传递的是引用数据类型变量存储的地址值

      6. 再谈方法

      6.1 方法的重载(overload )

      后续会讲:方法的重写(overwrite / override)
      面试题:方法的重载与重写的区别?

      6.2 可变个数形参的方法

      6.3方法的参数传递机制(难点、重点)

      6.4 递归方法(熟悉)

      7. 对象数组(难点)

      notion image

      8. 关键字:package、import

      • package:包,指明了Java中的类、接口等结构所在的包。声明在文件的首行
      • import:导入。指明在当前类中使用的其它包中的结构。声明在package下,类的声明之前。

      9. 面向对象的特征一:封装性

      • 什么是封装性?
      • 如何体现封装性?
      • 为什么需要封装性?

      10. 类的成员之三:构造器

      11. 其它几个小知识

      11.1 类中实例变量的赋值位置及顺序

      11.2 JavaBean

      11.3 UML类图

      理解

      11.4 匿名对象

      第07章:面向对象-进阶

      1. 关键字:this

      • this可以调用属性、方法;构造器。
        • 记住:this必须使用的场景:属性与形参同名时;调用重载的构造器

      2. 面向对象特征二:继承性

      • 为什么需要继承性?
        • 继承的出现减少了代码冗余,提高了代码的复用性。
        • 继承的出现,更有利于功能的扩展。
        • 继承的出现让类与类之间产生了is-a的关系,为多态的使用提供了前提。
      • 什么是继承性?
        • class B extends A{}
          • 继承中的基本概念:
            A类:父类、SuperClass、超类、基类
            B类:子类、SubClass、派生类
      • 继承性的基本使用

      3. 方法的重写

      4. 关键字:super

      • super调用父类的属性、方法;构造器
        • 使用场景:子父类中出现同名属性;子类重写了父类的方法时。
          • super调用构造器,体现加载父类的结构。

      5. 子类对象实例化的全过程(了解)

      6. 面向对象特征三:多态性

      6.1 向上转型:多态

      • Java中的多态性体现为:子类对象的多态性(狭义上理解)。即父类的引用指向子类的对象。
      • 应用场景:当通过父类的引用调用方法时,实际执行的是子类重写父类的方法。
      • 好处:多态性常使用在方法的形参位置。多态的出现,极大的减少了方法的重载,同时有利于程序的扩展。
      • 举例:① equals(Object obj) ② Account - Customer : setAccount(Account acct) ③ 凡是代码中出现了抽象类、接口,都可以体现为多态性。
      • 共识:Java中的多态性(广义上理解):1、子类对象的多态性。 2、方法的重写。

      6.2 向下转型:多态的逆过程

      • Student s = (Student)new Person(); //编译通过,运行不通过。
      • 如何向下转型:使用强转符:()
      • 可能出现的问题:可能会出现ClassCastException异常
      • 如何解决?建议在强转前进行instanceof的判断。

      7. Object类的使用

      7.1 equals()方法

      7.2 toString()方法

      8. 项目二:拼电商客户管理系统

      • 项目中主要的类:
        • (重点)封装客户数据的类:Customer
        • (重点)管理多个客户对象的类:CustomerList
        • 与用户交互的管理界面操作的类:CustomerView
        • 封装Scanner的工具类:CMUtility

      第08章:面向对象-高级

      1. 关键字:static

      2. 单例模式

      3. main()的理解(了解)

      4. 类的内部成员之四:代码块

      4.1 代码块的基本使用

      4.2 属性赋值位置、过程

      5. 关键字:final

      6. 关键字:abstract

      7. 与类并列的结构:接口(interface)

      8. 类的内部成员之五:内部类

      9. 枚举类

      10. 注解

      11. 包装类

      12.IDEA的使用

      • IDEA常用的快捷键
      • IDEA的debug功能

      第09章:异常处理

      1. 异常的概述、理解

      2. 常见的异常(重点)

      3. 异常的处理(重点)

      3.1 try-catch-finally

      • try-catch的使用
      • finally的使用

      3.2 throws

      • 如何选择两种处理方式?

      4. 手动抛出异常的对象(熟悉)

      5. 如何自定义异常类(熟悉)

      五个关键字:
      try-catch-finally
      throws
      throw

      第10章:多线程

      1. 相关概念

      • 掌握:程序、进程、线程
      • 熟悉:线程的调度机制:分时调度、抢占式调度
      • 了解:单核CPU、多核CPU
      • 了解:并行与并发

      2. 创建多线程的两种经典方式(重点)

      3. 线程的常用方法、生命周期

      • 生命周期
        • jdk5.0之前:
        • notion image
        • jdk5.0
          • notion image

      4. 线程的安全问题与同步机制(重点)

      5. 同步机制的相关问题

      5.1 解决懒汉式的线程安全问题(重点)

      5.2 死锁问题

      5.3 JDK5.0新增解决安全问题的方式:Lock

      6. 线程的通信

      7. JDK5.0新增两种创建多线程的方式

      • 使用Callable接口
      • 使用线程池

      第11章:常用类与基础API

      1、String

      • String的声明:final 、实现Comparable接口等
      • String内部的属性:final char[] value (jdk8中);final byte[] value(jdk9中)
      • String的声明方式1:使用字面量的方式。需要使用字符串常量池。
      • String的不可变性
      • String的声明方式2:new
      • String的特殊运算: +
        • 常量 + 常量;变量+ 常量 ; 变量+变量;concat();intern()
      • String的构造器、常用方法

      2、与String相关的类:StringBuffer、StringBuilder

      • String、StringBuffer、StringBuilder三个的异同。
      • StringBuffer、StringBuilder的常用方法:增、删、改、查、插、长度、反转
      • 三者添加数据方面的执行效率:StringBuilder > StringBuffer > String

      3、比较器

      开发中只要涉及到对象比较大小,都跟比较器打交道。

      3.1 自然排序:Comparable

      3.2 定制排序:Comparator

      4、日期时间相关的API

      4.1 jdk8之前相关API

      • System的currentTimeMillis()
      • java.util.Date 和 java.sql.Date
        • getTime() \ toString()
      • SimpleDateFormat:用来格式化、解析日期
        • 格式化:String format(Date date)
        • 解析:Date parse(String str)
      • Calendar:日历类,抽象类
        • 实例化:getInstance()
        • 方法:get(int field) 、set(int field,...)、add(...),Date getTime() 、 setTime(Date date)

      4.2 jdk8新增的API

      • LocalDate、LocalTime、LocalDateTime --> 类似于Calendar
      • Instant : 瞬时 ---> 类似于Date
      • DateTimeFormatter :类似于SimpleDateFormat。针对LocalDate、LocalTime、LocalDateTime的格式化或解析操作

      5、其他api的使用

      第12章:集合框架

      1、集合与数组的对比

      • 数组的特点、弊端
      • 集合框架结构

      2、Collection中的常用方法

      3、迭代器Iterator

      4、Collection的子接口1:List接口

      5、Collection的子接口2:Set接口

      • Set的实现类的特点
      • Set中的常用方法
      • Set的实现类:HashSet
      • Set的实现类:TreeSet

      6、Map接口的使用

      • Map的实现类的对比
      • HashMap的存储数据的特点
      • Map中的常用方法
      • Map的实现类:TreeMap
      • Map的实现类:Hashtable与Properties

      7、操作集合的工具类:Collections

      第13章:jdk5.0新特性:泛型

      1、在集合中使用泛型前后的对比

      2、在其它结构中使用泛型

      • 比较器:Comparable
      • 比较器:Comparator

      3、如何自定义泛型类、泛型接口、泛型方法

      4、泛型在继承上的体现

      5、通配符、有条件限制的通配符的使用

      第14章:数据结构与集合源码

      1、数据结构

      • 数据结构的研究对象
      • 常见的数据存储结构

      2、集合源码

      • List的实现
      • HashMap的底层实现

      第15章:File类与IO流

      1. File类的使用

      2. IO流的概述

      • 流的分类
        • 流的流向:输入流、输出流
        • 操作的数据单位:字节流、字符流
        • 角色的不同:节点流、处理流
      • 4个抽象基类
      notion image
      • 整个流这一章涉及到的具体的流的使用,操作的步骤都是标准规范的。
        • 步骤1:创建File的对象
        • 步骤2:创建流的对象,构造器中需要传入File的对象
        • 步骤3:读取、写出操作的细节
        • 步骤4:关闭资源

      3. 文件流的使用

      • FileInputStream与FileOutputStream、FileReader与FileWriter
      • 注意点1:
      • 注意点2:

      4. 处理流之一:缓冲流

      • BufferedInputStream与BufferedOutputStream、BufferedReader与BufferedWriter
      • 作用:加快文件的读写效率。
      • 原理:内部提供了缓冲区(数组实现的),减少和磁盘交互的次数。
      • 4个缓冲流 使用的方法 处理非文本文件的字节流: BufferedInputStream read(byte[] buffer) BufferedOutputStream write(byte[] buffer,0,len) \ flush() 处理文本文件的字符流: BuffferedReader read(char[] buffer)\readLine() BufferedWriter write(char[] buffer,0,len) \ flush() 3. 实现的步骤 第1步:创建File的对象、流的对象(包括文件流、缓冲流) 第2步:使用缓冲流实现 读取数据 或 写出数据的过程(重点) 读取:int read(char[] cbuf/byte[] buffer) : 每次将数据读入到cbuf/buffer数组中,并返回读入到数组中的字符的个数 写出:void write(String str)/write(char[] cbuf):将str或cbuf写出到文件中 void write(byte[] buffer) 将byte[]写出到文件中 第3步:关闭资源

      5. 处理流之二:转换流

      • InputStreamReader和OutputStreamWriter
      • 基本使用
      notion image
      • 1. 复习 字符编码:字符、字符串 ----> 字节、字节数组。对应着编码集 字符解码:字节、字节数组 ---> 字符、字符串。对应着解码集 2. 如果希望程序在读取文本文件时,不出现乱码,需要注意什么? 使用的解码集必须与当初保存文本文件使用的编码集一致。

      6. 处理流之三:对象流

      • 了解:数据流:DataInputStream 、DataOutputStream
        • 读写8种基本数据类型的变量、String、字节数组
      • 掌握:ObjectInputStream、ObjectOutputStream
        • 读写8种基本数据类型的变量、对象(readObject();writeObject(Object obj))
      • 掌握:对象的序列化机制
        • 对象序列化机制允许把内存中的Java对象转换成平台无关的二进制流,从而允许把这种二进制流持久地保存在磁盘上,或通过网络将这种二进制流传输到另一个网络节点。//当其它程序获取了这种二进制流,就可以恢复成原来的Java对象。
        • 序列化过程:将内存中的Java对象转换为二进制流,保存在文件中或通过网络传输出去。 使用ObjectOutputStream 反序列化过程:将文件中或者通过网络接收到的二进制流转换为内存中的Java对象 使用ObjectInputStream
      • 熟悉:自定义类要想实现序列化机制,需要满足:

        7. 其它流的使用

        • 标准的输入、输出流
        • 打印流
        • 使用第三方框架
          • apache-common包

        第16章:网络编程

        1. 网络编程概述

        2. 要素1:InetAddress类的使用

        3. 要素2:端口号

        4. 要素3:网络通信协议

        5. TCP网络编程、UDP网络编程

        • TCP、UDP的对比
        notion image
        • 熟悉:TCP的三次握手、四次挥手。
        • 例题
          • 例题1:客户端发送内容给服务端,服务端将内容打印到控制台上。
          • 例题2:客户端发送文件给服务端,服务端将文件保存在本地。
          • 例题3:从客户端发送文件给服务端,服务端保存到本地。并返回“发送成功”给客户端。并关闭相应的连接。

        6. URL网络编程

        第17章:反射机制

        1. Class 的使用

        • 掌握:Class的理解
        • 掌握:获取Class的实例(前三种)
        • 熟悉:Class可以指向哪些具体的结构?
          • 类、接口、注解、枚举、基本数据类型、数组、void等

        2. 类的加载与类的加载器

        • 类的加载过程:
        notion image
        • 了解:类的加载器

        3. 反射的应用1:创建运行时类的对象(掌握)

        • jdk8及之前:Class的newInstance()
        • jdk8之后:调用指定的构造器,设置构造器的访问权限,创建对象

        4. 反射的应用2:获取运行时类的完整结构

        • 了解:获取所有的属性、所有的方法、所有的构造器、声明的注解等。
        • 熟悉:获取运行时类的父类、实现的接口们、所在的包、带泛型的父类、父类的泛型等

        5. 反射的应用3:调用指定的属性、方法、构造器

        6. 反射的应用4:注解的使用(了解)

        略。为了后期学习框架做准备

        7. 体会反射的动态性

        见课后练习题。

        第18章:JDK8-17新特性

        1. 新特性概述

        2. JDK8:lambda表达式、方法引用等

        重点!

        3. JDK8:Stream API的使用

        重点!

        4. 其它新特性

        • 熟悉:Optional的使用
        • try-catch、switch表达式、var、instanceof模式匹配、密封类等。
        浅谈软件设计模式C++基础
        Loading...
        目录
        0%
        Samuel Hu
        Samuel Hu
        沪上985软工在读 喜欢写代码 爱折腾的混子
        小红书
        统计
        文章数:
        20
        访问量:
        访客数:
        公告

        🎉 博客升级公告 🎉

        全新升级,更好体验!
        网站经过两位🤡的破坏之前下架一段时间,给大家带来不便深表抱歉
        经过一段时间的精心修缮,我的博客终于以全新面貌与大家见面啦!

        🛠 主要更新

        🔍 智能搜索
        💬 评论功能
        🛡 安全升级
        📂 内容整理
        💬 在线客服
        感谢大家一直以来的支持!期待与您继续分享优质内容~
        🚀 新旅程,新开始! 🚀
        目录
        0%