编程语言学习要素

  • 输入 + 程序 = 输出

  • 程序 = 数据结构 + 算法

  • 算法 = 语句 + 流程控制

  1. 输入:做一件事所需的资源

  2. 程序:做一件事的方法

  3. 输出:你得到的结果

  4. 数据结构:对资源的合理化运用,为算法服务

  5. 算法:真正做这件事的步骤与逻辑

  6. 语句:做这件事的最小的步骤单位,也是做这件事的最小的一个步骤

  7. 流程控制,是程序的基本逻辑结构,也是做事的基本方法

    1. 顺序:代码是一步一步按照顺序走的,第一个语句不执行,永远不会执行第二条语句,做事也要一步一步来执行

    2. 分支:根据资源、情况的不同,而做出不同的操作

    3. 循环:有些事情,重复去做,是得到预期结果的必要条件

  8. 输入与方法的不同,会得到不同的结果

备注:

  1. 再庞大的系统都是由简单的语句构成的,甚至都是由0和1构成的

  2. 算法的优劣,直接决定了返回的结果以及返回的时间

  3. 先确定预期的结果,也就是确定方法的功能,才可以写一个想要的方法;所以要先有目标,才能开始行动

编程语言基本介绍

  1. 官方网址、相关资料地址

  2. 语言的历史

  3. 应用场景与运行平台

  4. 搭建本地开发环境

  5. Hello World

注释

  1. 单行注释

  2. 多行注释

  3. 文档注释

变量和常量

  1. 变量

    1. 声明变量,并初始化值

    2. 声明变量,不初始化。是否提供默认值?不初始化是否可用?

    3. 批量声明多个变量:不初始化、部分初始化、全初始化

    4. 是否有只读变量?(只读变量只能赋值一次,值不可修改)

    5. 是否有匿名变量?

  2. 常量

    1. 声明常量,并初始化值

    2. 常量的类型是否有要求?是否需要编译期间就需要确定常量的值?

    3. 批量声明常量

    4. 是否提供常量生成器

  3. 变量与常量的命名规则

  4. 变量、常量的存储位置

  5. 是否有变量逃逸行为?变量逃逸具体分析

数据类型

是强类型还是弱类型

强类型语言要求变量在使用前必须先声明其类型,且类型必须严格匹配,否则编译或运行时将会出错。而弱类型语言则允许在使用变量时自动进行类型转换。

是动态类型还是静态类型?

动态类型语言将类型检查延迟到运行时进行,而静态类型语言则在编译时进行类型检查。

值类型与引用类型

哪儿些是值类型,哪儿些是引用类型。

字面量

字面量表示字面量会被推断的数据类型备注

10

int

10L

long

  1. 数字类型字面量

    1. 字面量会被自动推断的数据类型

    2. 不同进制表示

    3. 字面量易读写法,比如java中,按照 _分割,以方便展示大数字

    4. 科学计数法

    5. NaN字面量

    6. 无穷大、无穷小字面量

  2. 字符、字符串类型字面量

    1. 单行字符串

    2. 多行字符串

    3. 转义字符串

    4. 原始字符串

    5. 字符串模板

  3. 布尔类型字面量

  4. 空值字面量

  5. 其他字面量

    1. 日期

    2. 正则

    3. 数组

    4. 范围

基本数据类型

原始的、基本的数据类型,用于表示和操作最基本的数据

  1. 数字类型

    1. 分类、大小、最大值、最小值、无符号有符号

    2. 数字类型之间的转换(显式转换、隐式转换)

    3. 数字类型算数运算符

    4. 数字类型位运算符

    5. 数字类型比较运算符

  2. 字符、字符串类型

    1. 转义字符

    2. 转义、原始字符串

    3. 单行、多行字符串

    4. 字符和字符串之间的转换(字符串拆分为字符、字符组装成字符串)

    5. 字符串拼接

    6. 字符串模板

  3. 布尔类型

    1. 其他类型是否可转换为Boolean?

    2. 布尔的逻辑运算

复合数据类型

例如:

  1. 指针

用于自定义数据类型的数据类型:

  1. 结构体

  2. 类、抽象类

  3. 接口

  4. 枚举

数据容器:

  1. 数组(长度不可变)

    1. 数组是否可变

    2. 数组的创建与表示

    3. 数组的长度

    4. 数组下标访问、数组下标修改

    5. 数组的循环

  2. 可变列表,一般称作list、切片

  3. 映射,一般称作map

  4. 元组,一般称作tuple

部分编程语言的函数也是一种数据类型,可以将函数存储在变量中:

  1. 函数

    1. 函数作为类型的标识

    2. 函数的定义

      1. 函数的命名规则

      2. 函数的参数

        1. 有参函数定义

        2. 无参函数定义

        3. 参数默认值

        4. 可变参数函数

        5. 输出参数

        6. 参数传递规则(值类型、引用类型传递问题)

      3. 函数的返回值

        1. 无返回值函数

        2. 单返回值函数

        3. 多返回值函数

    3. 调用函数

    4. 嵌套函数/局部函数

    5. 匿名函数

  2. 闭包(Closure),是指在函数内部定义的函数,该内部函数可以访问外部函数的变量,并且可以在外部函数返回后仍然保持对这些变量的访问。

    1. 闭包的定义

    2. 闭包的调用

    3. 闭包在该语言中的实现原理

  3. lambda表达式

基本运算符

  1. 赋值运算符

  2. 算数运算符

    1. 加法运算符

    2. 减法运算符

    3. 乘法运算符

    4. 除法运算符

    5. 取余运算符

    6. 自增运算符

    7. 自减运算符

    8. 一元负号运算符

    9. 一元正好运算符

  3. 位运算符

    1. 按位与

    2. 按位或

    3. 按位非

    4. 按位抑或

    5. 左移运算符

    6. 右移运算符

    7. 无符号右移运算符

  4. 组合赋值运算符(比如 +=

  5. 比较运算符

    1. 等于、恒等

    2. 不等于、恒不等

    3. 大于,大于等于

    4. 小于,小于等于

  6. 逻辑运算符

    1. 与、短路与

    2. 或、短路或

    3. 异或(相同为true,不同为false)

  7. 三目运算符

  8. 空合运算符(是对三目的补充,用于判断目标是否为空值进行后续操作的)

  9. 区间运算符

    1. 闭区间

    2. 开区间、半开区间,比如左闭右开

    3. 单侧区间,比如0到正无穷

  10. 运算符的重载

流程控制

  1. 顺序结构,任何程序语句都是顺序结构

  2. 分支结构

    1. if 条件判断

    2. switch、when 选择判断

  3. 循环结构

    1. for循环及其扩展:foriforeachforin

    2. while循环及其扩展: whiledoWhile

  4. 流程控制语句

    1. 跳出循环,比如break语句

    2. 继续循环,比如continue语句

    3. 调到标签位置,比如goto语句,java的break lable语句

    4. 贯穿,比如 fallthrough,switch语句中默认不贯穿的语言,需要使用该关键字贯穿

包与模块

访问修饰符

面向对象

  1. 定义类

  2. 定义构造器

  3. 定义类属性

  4. 定义类方法

  5. 定义成员属性

  6. 定义成员方法

  7. 属性访问控制(getter、setter、下标访问、属性名访问等)

抽象类

类的封装

  1. 封装示例

  2. 成员访问限制

继承

  1. 继承的实现

  2. 防止继承策略

  3. 重写类属性、类方法

  4. 重写实例属性、实例方法

  5. 防止重写策略

  6. 是否支持多继承,多继承的实现

对象的创建过程

接口

  1. 定义接口

  2. 实现接口

多态

  1. 多态表示

错误与异常处理

泛型

  1. 函数、方法泛型

  2. 类、接口泛型

  3. 泛型的上限与下限

  4. 泛型的原理

集合

注解

标准库

时间日期处理

正则表达式处理

文件操作

函数式编程

网络编程

并发编程

命令行编程

内存管理

最后更新于