OOP Courses(Java)

  1. This is an OOP course notes which I am learning in the IMIS.
    1. Java技术学习体系结构+Java程序设计思维导图
    2. 《Java程序设计基础》(陈国军)目录解读

This is an OOP course notes which I am learning in the IMIS.

Java技术学习体系结构+Java程序设计思维导图

《Java程序设计基础》(陈国军)目录解读

  1. 程序设计基础(2学时)

    1. 计算机系统包含硬件系统软件系统

    2. 中央处理器(CPU):由控制器运算器组成,是计算机硬件系统的核心。

      1. 控制器按照程序规定的流程依次执行指令,最终完成程序所要实现的任务。
      2. 运算器控制器的控制下,进行算术和逻辑运算,运算器中有算术逻辑运算单元(ALU)及存放运算数据和运算结果的寄存器。
    3. 存储器:由内存外存(辅存)组成,其中要功能是存放程序和数据。内存分为随机存取存储器(RAM)和只读存储器(ROM)。

      1. RAM用于存放正在运行的程序和数据,一旦关闭计算机RAM中的信息就会丢失。
      2. ROM中 的信息一般只能读出而不能写入,断电后ROM中的信息保持不变。
      3. 内存由许多存储单元构成,所有的存储单元都按顺序编号,称为内存地址,内存中所有存储单元的总和称为内存的存储容量。
      4. 外存按存储介质分为磁存储器(硬盘)、光存储(CD、DVD)和闪存(固态硬盘SSD、U盘)。
    4. 输入/输出设备

      1. 注:通常把控制器、运算器、内存称为计算机的主机,把输入设备、输出设备和外存称为计算机的外围设备。
    5. 计算机软件分为系统软件和应用软件。

    6. 无论什么类型的信息在计算机内部都采用二进制形式来表示。

      1. 进制:二进制、八进制、十六进制
      2. 机器码:原码、反码、补码、移码
        1. 原码就是未经更改的码,使用最高位表示符号位,正数为0,负数为1,剩下的数表示该数的绝对值。
        2. 正数的反码是其本身;负数的反码是在其原码的基础上, 符号位不变,其余各个位取反.
        3. 正数的补码就是其本身;负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)
          1. 补码显示范围大:
            1. -2^{n-1}~+2^{n-1}-1
            2. -128~+127
          2. 原码和反码:-127~+127
        4. 移码:将补码符号位取反即可
      3. 定点表示、浮点表示
        1. 定点运算:移位运算、加减运算、乘除运算
        2. 浮点运算:加减运算、乘除运算
        3. 给定寄存器的位长,可以计算出最大最小值。
      4. 信息存储单位
        1. Byte bit KB
      5. 非数字信息的表示
        1. 字符集 ASCII GB2312 Unicode编码
        2. 内机码
    7. 程序设计语言发展历程

      1. 计算机程序
      2. 程序设计语言
      3. 程序设计
      4. 机器语言和汇编语言一般被称为低级语言。
      5. 世界上第一个高级程序设计语言是FORTRAN语言,常用的高级语言有C、C++、Java、C#、Python等。
    8. 面向对象程序设计

      1. 抽象:过程抽象、数据抽象
      2. 面向对象的思想:封装、类、对象
      3. 面向对象的三大特点:封装、继承、多态
      4. 多态:
        1. 方法覆盖(重写):所需params变量相同,但是多次调用
        2. 方法重载:所需params变量不同,按照不同变量调用不同方法
  2. Java语言概述(1学时)

    1. 吧啦吧啦
  3. Java语言开发环境(1学时)

    1. 吧啦吧啦
  4. Java语言基础(2学时)

    1. Java入门

Java入门

02. 数据类型
03. 关键字与标识符
04. 常量
05. 变量
06. 数据类型的转换规则
    01. 自动类型转换
        01. 转换前后的数据类型兼容
        02. 转换后的表示范围大
        03. 短-->长的优先关系:byte short char int long float double
    02. 强制类型转换
        01. 长变短,不安全 ``int s1=50l;``
        02. 格式:(目标数据类型)变量名
07. 从键盘输入数据
    01. buffer缓冲
    02. javac
    03. java
    04. 批处理(挺有意思的)
08. 运算符与表达式
09. 如何正确使用帮助文档(以scanner为例)
    01. 路径举例:jdk-14.0.2_doc-all/docs/api/java.base/java/util/Scanner.html
10. 运算符和表达式
    01. 算术运算:
        01. 取正、取负
        02. 取模运算符%
        03. 自增自减的优先级最高
        04. 两个整数相“/”,结果为整数。对于两个整数之间的除法和取模运算,则式子(a/b)*b+(a%b)==a是恒成立的。
        05. 对取模运算符“%”来说,其操作数可以为浮点数。即a % b与a-((int)(a/b)*b)的语义相同,这表示a % b的结果是除完后剩下的浮点数部分。如37.2%10=7.2。(默认双精度)
    02. 关系运算:
        01. 用于比较两个值之间的大小,结果为true或false;
        02. **不能在浮点数之间作“==”的比较**,因为浮点数在表达上有难以避免的微小误差,精确的相等比较无法达到,所以这类比较没有意义。
    03. 逻辑运算
        01. 逻辑与、逻辑或、逻辑非、异或、简洁与、简洁或
            01. (简洁与的先算左边,左边错就直接出false)
        02. 逻辑运算和关系运算的关系非常紧密,**关系运算的结果为布尔型**,逻辑运算的**操作数**与**运算结果**都是**布尔型**。
        03. 简洁运算(&&、||)与非简洁运算(&、|)
           的区别在于:非简洁运算在必须计算完左右两个表达式之后,才取结果值;而简洁运算可能只计算左边的表达式而不计算右边的表达式,即对于&&,只要左边表达式为false,就不计算右边表达式,则整个表达式为false;对于||,只要左边表达式为true,就不计算右边表达式,则整个表达式为true。

    04. 位运算和赋值运算
        01. 位运算(了解)
        02. 赋值运算
            01. 自动类型转换(转换为较大的)
            02. 右结合性
    05. 条件运算与字符串运算
    06. 表达式及运算符的优先级、结合性
  1. 流程控制(2学时)

    1. 语句和循环语句
    2. 分支结构(选择结构)
      1. if多重条件选择结构(if-else嵌套)
      2. switch多路选择
    3. 循环结构
      1. while
      2. do-while
      3. for(forEach)
      4. 多重循环
    4. 跳转语句
      1. break
      2. continue
      3. return
  2. 数组与字符串(2学时)

    1. 数组的基本概念
      1. 相同数据类型的元素按一定顺序排列的集合。Java中,数组元素可以为简单数据类型,也可以为对象
      2. 堆内存和栈内存
        1. 栈内存:定义的基本类型的变量和对象的引用变量,超出作用域将自动释放。
        2. 堆内存:存放由new运算符创建的对象和数组。由Java虚拟机的自动垃圾回收器来管理。
      3. 主要特点:
        1. 数组是相同数据类型的元素的集合;
        2. 数组中的各元素是有先后顺序的,它们在内存中按照这个先后顺序连续存放在一起;
        3. 数组元素用整个数组的名字和它自己在数组中的顺序位置来表示。
    2. 一维数组
      1. 声明数组—创建空间—创建数组元素并赋值
      2. ```数据类型[ ] 数组名= new 数据类型[个数];
        03. *约瑟夫环*
    03. foreach语句foreach的语句:不用下标就可遍历整个数组。foreach语句需提供元素类型、循环变量的名字(用于存储连续的元素)和用于从中检索元素的数组。
         ```java
         int[] arr={1,2,3,4,5};
         for (int i : arr)
         System.out.println(i);
         ```

    04. 多维数组(java是行主序)
        01. 二维数组(Java中无真正的多维数组,只是数组的数组)
           ```数据类型[ ] [ ] 数组名= new 数据类型 [行数][列数];
    02. 二维数组的元素个数:二维数组的**行数**
        01. 计算某数组的行数:```数组名.length

            02. 计算某数组中某行元素的个数:```数组名[下标].length```

        03. *杨辉三角形*
        04. 三维数组
    05. 字符串

07. 类与对象(2学时)

    01. 类与对象
    02. 方法重载
    03. 包package
    04. 类及其成员的访问权限
    05. final、this
        01. 基本数据类型,也称原始数据类型:byte,short,char,int,long,float,double,boolean 他们之间的比较,应用双等号(==),比较的是他们的值。**基本数据类型使用 `==`
           比较值是否相同**。

        02. 复合数据类型(类):当他们用`==`进行比较的时候,比较的是**他们在内存中的存放地址**,所以,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false。
        3.
       equals方法重写的提示:JAVA当中所有的类都是继承于Object这个基类的,在Object中的基类中定义了一个equals的方法,这个方法的初始行为是比较对象的内存地址,但在一些类库当中这个方法被覆盖掉了,如String,Integer,Date在这些类当中equals有其自身的实现,而不再是比较类在堆内存中的存放地址了。

        04. Object的equals---判断**同一性**(用于判断两个变量是否是对同一个对象的引用,即堆中的内容是否相同,返回值为布尔类型)
        05. String的equals---判断**相等**,也就是变量是否相同(比较不同对象内容是否相同)
    06. 对象初始化和回收
    07. 应用举例(作业)
08. Java语言类的特性(4学时)
09. 继承、抽象类、接口和枚举(6学时)
    01. 不支持多重继承
    02. 三个问题:继承的属性怎么使用、重写的方法怎么使用、子类新添的属性和方法怎么使用
    03. 类的继承
    04. 抽象类
    05. 接口
    06. 枚举
    07. Java语言中的常用包
10. 异常处理(2学时)
11. 输入输出处理(4学时)
12. 多线程(4学时)
13. 泛型与容器类(3学时)
14. 注解、反射、内部类、匿名内部类与Lambda表达式(3学时)
15. 图形界面设计(4学时)
16. 事件处理(4学时)
17. 绘图与动画程序设计(2学时)
18. JDBC数据库访问

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达,可以邮件至 963614756@qq.com。