slug
Vocabulary4apcsa
type
Post
status
Published
category
AP CSA
date
Mar 12, 2026
summary
tags
notes
password
icon
下面给出 AP Computer Science A 300 术语完整版本(英文 + 中文解释)。
按 12 个主题 × 每组 25 个 = 300 个 排列,适合直接做课堂词汇表或背诵材料。
1 Programming Fundamentals(编程基础)
- program — 程序:由计算机执行的一系列指令
- programming — 编程:设计并编写程序的过程
- compiler — 编译器:将源代码转换为可执行程序
- source code — 源代码:程序员编写的代码
- syntax — 语法:编程语言的书写规则
- semantics — 语义:程序语句的含义
- algorithm — 算法:解决问题的步骤集合
- pseudocode — 伪代码:接近自然语言的算法描述
- variable — 变量:存储数据的内存位置
- constant — 常量:值不会改变的数据
- literal — 字面量:直接写出的值
- identifier — 标识符:变量或方法的名称
- declaration — 声明:定义变量及其类型
- initialization — 初始化:变量第一次赋值
- assignment — 赋值:改变变量值的操作
- expression — 表达式:计算产生一个值
- operator — 运算符:执行计算的符号
- operand — 操作数:参与运算的数据
- statement — 语句:一条完整程序指令
- block — 代码块:由
{}包围的语句集合
- scope — 作用域:变量可访问的范围
- runtime — 运行时:程序执行阶段
- compile-time error — 编译错误
- runtime error — 运行错误
- logic error — 逻辑错误
2 Primitive Data Types(基本数据类型)
- primitive type — 基本数据类型
- int — 整数类型
- double — 双精度浮点数
- boolean — 布尔类型
- true — 布尔真值
- false — 布尔假值
- integer division — 整数除法
- floating-point — 浮点数
- casting — 类型转换
- type conversion — 数据类型转换
- truncation — 小数截断
- overflow — 溢出
- range — 数据范围
- precision — 精度
- arithmetic operator — 算术运算符
- modulus operator (%) — 取余运算符
- increment operator (++) — 自增运算符
- decrement operator (--) — 自减运算符
- compound assignment — 复合赋值
- operator precedence — 运算符优先级
- unary operator — 单目运算符
- binary operator — 双目运算符
- numeric expression — 数值表达式
- evaluation order — 计算顺序
- numeric literal — 数值字面量
3 Java Output and Input(输入输出)
- System.out.print — 输出但不换行
- System.out.println — 输出并换行
- output — 输出
- console — 控制台
- escape sequence — 转义字符
- string literal — 字符串字面量
- concatenation — 字符串连接
- formatting — 输出格式化
- input — 输入
- Scanner — Java 输入类
- nextInt() — 读取整数
- nextDouble() — 读取浮点数
- nextLine() — 读取整行
- user input — 用户输入
- prompt — 提示信息
- interactive program — 交互程序
- whitespace — 空白字符
- newline — 换行符
- text output — 文本输出
- input validation — 输入验证
- parsing — 数据解析
- read data — 读取数据
- standard input — 标准输入
- standard output — 标准输出
- console interaction — 控制台交互
4 Math 和 String 类
- Math class — Java 数学工具类
- Math.random() — 生成随机数
- Math.abs() — 绝对值
- Math.sqrt() — 平方根
- Math.pow() — 幂运算
- Math.max() — 最大值
- Math.min() — 最小值
- String class — 字符串类
- String object — 字符串对象
- length() — 字符串长度
- substring() — 子字符串
- indexOf() — 查找字符位置
- equals() — 比较字符串内容
- compareTo() — 字典序比较
- charAt() — 获取字符
- contains() — 是否包含
- toLowerCase() — 转小写
- toUpperCase() — 转大写
- trim() — 去除首尾空格
- String immutability — 字符串不可变性
- String manipulation — 字符串操作
- String traversal — 字符串遍历
- character — 字符
- lexicographic order — 字典序
- string comparison — 字符串比较
5 Control Structures(条件控制)
- control structure — 控制结构
- sequential execution — 顺序执行
- selection — 选择结构
- iteration — 循环结构
- if statement — if 语句
- if-else statement — if-else 语句
- else-if ladder — 多条件判断
- nested if — 嵌套 if
- conditional expression — 条件表达式
- boolean expression — 布尔表达式
- relational operator — 关系运算符
- logical operator — 逻辑运算符
- AND operator — 与运算符
- OR operator — 或运算符
- NOT operator — 非运算符
- short-circuit evaluation — 短路求值
- branching — 分支结构
- decision making — 决策结构
- condition — 条件
- predicate — 条件判断表达式
- truth table — 真值表
- boolean logic — 布尔逻辑
- comparison — 比较
- condition evaluation — 条件求值
- program flow — 程序流程
6 Loops(循环)
- loop — 循环
- while loop — while 循环
- for loop — for 循环
- loop control — 循环控制
- loop condition — 循环条件
- loop body — 循环体
- loop counter — 循环计数器
- iteration variable — 迭代变量
- infinite loop — 无限循环
- sentinel loop — 哨兵循环
- accumulator pattern — 累加模式
- counter pattern — 计数模式
- nested loop — 嵌套循环
- loop traversal — 循环遍历
- iteration process — 迭代过程
- loop invariant — 循环不变量
- update statement — 更新语句
- termination condition — 终止条件
- pre-test loop — 前测试循环
- iteration algorithm — 迭代算法
- loop efficiency — 循环效率
- loop trace — 循环跟踪
- loop debugging — 循环调试
- simulation — 程序模拟
- iteration step — 迭代步骤
7 Methods(方法)
- method — 方法
- method call — 方法调用
- parameter — 参数
- argument — 实际参数
- return type — 返回类型
- return statement — 返回语句
- void method — 无返回值方法
- accessor method — 访问器方法
- mutator method — 修改器方法
- helper method — 辅助方法
- static method — 静态方法
- instance method — 实例方法
- method signature — 方法签名
- method header — 方法头
- method body — 方法体
- parameter passing — 参数传递
- call stack — 调用栈
- method overloading — 方法重载
- reusable code — 可复用代码
- abstraction — 抽象
- procedural abstraction — 过程抽象
- decomposition — 分解问题
- API — 应用程序接口
- library — 程序库
- documentation — 文档
8 Classes and Objects(类与对象)
- class — 类
- object — 对象
- instance — 实例
- attribute — 属性
- field — 字段
- instance variable — 实例变量
- class variable — 类变量
- constructor — 构造方法
- default constructor — 默认构造方法
- object creation — 创建对象
- instantiation — 实例化
- new keyword — new 关键字
- this keyword — this 关键字
- encapsulation — 封装
- access modifier — 访问修饰符
- private — 私有访问
- public — 公共访问
- getter — 获取方法
- setter — 设置方法
- class design — 类设计
- object state — 对象状态
- object behavior — 对象行为
- UML diagram — UML 类图
- reference variable — 引用变量
- object reference — 对象引用
9 Arrays(数组)
- array — 数组
- array declaration — 数组声明
- array initialization — 数组初始化
- array length — 数组长度
- array index — 数组索引
- index bounds — 索引范围
- ArrayIndexOutOfBoundsException — 数组越界异常
- array traversal — 数组遍历
- sequential search — 顺序查找
- array algorithm — 数组算法
- array element — 数组元素
- array reference — 数组引用
- array processing — 数组处理
- array copying — 数组复制
- array update — 数组更新
- array accumulation — 数组累加
- array counting — 数组计数
- array minimum — 最小值查找
- array maximum — 最大值查找
- array average — 平均值计算
- array iteration — 数组迭代
- array mutation — 修改数组
- array parameter — 数组参数
- array return — 返回数组
- array algorithm design — 数组算法设计
10 ArrayList
- ArrayList — 动态数组
- dynamic array — 可动态扩展数组
- add() — 添加元素
- remove() — 删除元素
- get() — 获取元素
- set() — 修改元素
- size() — 获取列表大小
- ArrayList traversal — 列表遍历
- ArrayList algorithm — 列表算法
- generics — 泛型
- ArrayList — 整数列表
- ArrayList — 字符串列表
- dynamic resizing — 动态扩容
- element insertion — 元素插入
- element deletion — 元素删除
- list structure — 列表结构
- list indexing — 列表索引
- collection — 集合结构
- wrapper class — 包装类
- autoboxing — 自动装箱
- unboxing — 自动拆箱
- Integer class — 整数对象类
- Double class — 双精度对象类
- Boolean class — 布尔对象类
- object collection — 对象集合
11 2D Arrays(二维数组)
- 2D array — 二维数组
- matrix — 矩阵
- row — 行
- column — 列
- element position — 元素位置
- array[row][column] — 二维数组访问
- 2D traversal — 二维遍历
- nested loops — 嵌套循环
- row-major order — 行优先遍历
- column traversal — 列遍历
- grid structure — 网格结构
- table representation — 表格表示
- matrix algorithm — 矩阵算法
- 2D search — 二维查找
- 2D update — 二维更新
- board representation — 棋盘表示
- adjacency grid — 邻接网格
- coordinate system — 坐标系统
- matrix processing — 矩阵处理
- data table — 数据表
- rectangular array — 矩形数组
- irregular array — 不规则数组
- 2D iteration — 二维迭代
- 2D algorithm design — 二维算法设计
- multi-dimensional array — 多维数组
12 Algorithms & Recursion(算法与递归)
- algorithm analysis — 算法分析
- efficiency — 效率
- runtime — 运行时间
- time complexity — 时间复杂度
- linear search — 线性搜索
- binary search — 二分搜索
- selection sort — 选择排序
- insertion sort — 插入排序
- sorting algorithm — 排序算法
- searching algorithm — 搜索算法
- divide and conquer — 分治算法
- recursion — 递归
- recursive method — 递归方法
- base case — 基础情况
- recursive case — 递归情况
- stack frame — 栈帧
- recursive tracing — 递归追踪
- recursive search — 递归搜索
- recursive sort — 递归排序
- call stack — 调用栈
- algorithm design — 算法设计
- algorithm correctness — 算法正确性
- algorithm optimization — 算法优化
- debugging — 调试程序
- testing — 程序测试
call stack — 调用栈
call stack(调用栈) 是程序在运行时用来管理“方法调用顺序”的一种机制。
你可以把它理解成一摞盘子:
- 新调用一个方法,就把一个新盘子放到最上面
- 方法执行完,就把最上面的盘子拿走
- 所以它遵循 后进先出(LIFO, Last In First Out)
1. 为什么需要调用栈
当一个程序里有很多方法互相调用时,计算机必须记住:
- 现在正在执行哪个方法
- 这个方法是谁调用的
- 方法里的局部变量是什么
- 方法执行完以后要回到哪里继续执行
这些信息就会被放进 call stack 里。
2. 栈中的每一层叫什么
调用栈中的每一层通常叫:
- stack frame
- 中文常说:栈帧
每调用一次方法,就会创建一个新的栈帧。
一个栈帧里通常保存:
- 方法名
- 参数(parameters)
- 局部变量(local variables)
- 返回位置(return address)
- 有时还包括临时计算信息
3. 最基本的例子
看这个 Java 代码:
执行过程:
- 程序先进入
main
main()被放入调用栈
main()调用greet()
greet()再被压入调用栈顶部
greet()执行完,弹出栈
- 回到
main()继续执行
main()执行完,再弹出栈
4. 用“栈”图来表示
开始运行时:
当
main() 调用 greet() 时:greet() 执行结束后:最后
main() 结束,栈空了。5. 再看一个带参数和返回值的例子
执行时:
第一步:进入 main
调用栈:
第二步:main() 调用 square(4)
调用栈:
这里
square 的栈帧中会记录:- 参数
n = 4
第三步:square() 返回 16
square 弹出栈,返回到 main调用栈又变成:
这时
main 里的 result = 166. 多层方法调用
执行到
work() 时,调用栈是:执行顺序不是随便跳的,而是:
- 先进入
main
- 再进入
start
- 再进入
work
返回时正好反过来:
work先结束
- 回到
start
start结束
- 回到
main
7. 局部变量为什么不会互相干扰
看这个例子:
这里有两个
x:main()里的x = 10
test()里的x = 5
它们不会冲突,因为它们在 不同的栈帧 里。
执行
test() 时,调用栈像这样:所以
test() 里打印 5,回到 main() 后还是打印 10。8. call stack 和 recursion(递归)的关系特别重要
递归时,一个方法会不断调用自己。
每调用一次,都会创建一个新的栈帧。
看例子:
调用过程:
main() 调用 countdown(3)
countdown(3) 调用 countdown(2)
countdown(2) 调用 countdown(1)
countdown(1) 调用 countdown(0)
当到达
n == 0 时,不再继续调用,开始一层一层返回。这就是为什么递归本质上非常依赖调用栈。
9. Stack Overflow 是怎么来的
如果方法调用太深,调用栈会越来越大,最后可能装不下,就会报错:
- StackOverflowError
例如:
这里
forever() 一直调用自己,没有 base case(终止条件),所以栈会不断增长:最后就栈溢出了。
10. AP CSA 里你需要掌握到什么程度
在 AP CSA 中,关于 call stack,你不需要像大学 CS 那样掌握底层内存细节,但你应该会:
会 1:理解方法调用顺序
谁调用谁,谁先执行完,谁后返回。
会 2:理解局部变量属于各自的方法
不同方法中的同名局部变量互不影响。
会 3:理解递归为什么能工作
因为每次递归调用都有自己独立的栈帧和参数值。
会 4:能 trace 代码
尤其是这种题:
你需要知道每一次调用都会进栈,最后再一层层返回。
11. 手动 trace 一个递归题
求:
第一步
mystery(4)需要算:
栈:
第二步
mystery(3)需要算:
栈:
第三步
mystery(2)需要算:
栈:
第四步
mystery(1) 返回 1栈开始回退。
回退过程
mystery(2) = 2 + 1 = 3mystery(3) = 3 + 3 = 6mystery(4) = 4 + 6 = 10答案是:
这就是调用栈在背后做的事。
12. 一个很好记的总结
你可以直接背这句:
call stack 是程序运行时用来管理方法调用的一种后进先出结构;每调用一个方法,就压入一个新的栈帧,方法结束后再弹出。
13. 再给你一个最简考试表达
如果你做 AP CSA 简答或讲解题,可以这样说:
A call stack keeps track of active method calls. Each method call adds a new stack frame, and when a method finishes, its frame is removed.
中文:
调用栈用于记录当前正在执行的方法调用。每次调用方法都会加入一个新的栈帧,方法结束时该栈帧被移除。
14. 一个生活类比
想象你在处理一连串任务:
- main 说:“先去做 A”
- A 说:“先去做 B”
- B 做完了,回到 A
- A 做完了,回到 main
这就像把任务一层层压上去,再按相反顺序回来。
这就是 call stack。
如果你愿意,我下一条可以继续给你做:
“call stack、stack frame、recursion 三者的关系图解版”
我可以用 AP CSA 最适合学生理解的方式 画成纯文本图。
- 作者:现代数学启蒙
- 链接:https://www.math1234567.com/article/Vocabulary4apcsa
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章






