| 学习指南 EN
College Board · cb-cs-a · AP Computer Science A · Primitive Types / 基本数据类型 · 阅读约 15 分钟 · 更新于 2026-05-07

基本数据类型 (Primitive Types) — AP Computer Science A CS A 学习指南

适合谁:AP Computer Science A 参加 AP Computer Science A 的考生。

覆盖内容:int、double、boolean三种基本类型,类型转换与运算符优先级、整数除法与取余、数学与赋值运算符、复合赋值运算符全部考点

前置知识:基础 Java 或任何其他过程式语言编程。

关于练习题:下文「练习题」一节的所有题目均为我们按 AP Computer Science A 风格编写的原创题目 (original problems),仅用于教学。它们不是 College Board 真题的复制,措辞、数值或语境可能不同。请把它们当作练手用;评分细则请对照 College Board 官方 mark scheme。


1. 什么是基本数据类型?

基本数据类型 (Primitive Types) 是Java语言内置的底层数据类型,不属于对象范畴,直接存储在栈内存中,读写速度远高于引用类型。Java总共有8种基本数据类型,但AP CS A考纲仅要求掌握3种:整型(int)、双精度浮点型(double)、布尔型(boolean),本单元考点占考试总分的5%-7%,是后续所有模块的基础。

2. int, double, boolean 类型

三种核心基本类型的定义、用法与考点如下:

  1. 整型 (int):32位有符号整数,取值范围为(即-2147483648到2147483647),仅能存储不带小数的整数,常用于计数、编号等场景。
  2. 双精度浮点型 (double):64位浮点数,可存储带小数的数值,精度约为15-17位有效数字,常用于身高、成绩、科学计算等需要小数的场景。
  3. 布尔型 (boolean):仅包含truefalse两个取值,专门存储逻辑判断结果,常用于条件判断、循环控制等场景。

范例代码

int studentNum = 128; // 存储学生人数
double avgScore = 87.5; // 存储班级平均分
boolean isFull = studentNum >= 130; // 存储班级是否满员的判断结果

考点提示:Java中boolean类型不能和任何数值类型互转,int a = true这类写法会直接编译错误,是选择题高频陷阱。

3. 类型转换与运算符优先级 (Type casting and operator precedence)

类型转换

类型转换分为隐式自动转换和显式强制转换两种:

  • 自动转换:小范围类型转大范围类型时自动完成,无精度损失,执行顺序为int → double,例如double num = 10会自动将int类型的10转为10.0。
  • 强制转换:大范围类型转小范围类型时需要手动添加(目标类型)标识,可能丢失精度,例如int num = (int)3.99会截断小数部分,结果为3而非四舍五入的4。

运算符优先级

AP CS A常考的运算符优先级从高到低排列如下: 括号() > 一元运算符(+、-、!) > 乘除模* / % > 加减+ - > 比较运算符< > <= >= == != > 逻辑与&& > 逻辑或|| > 赋值运算符= += -=等 考点提示:如果记不清优先级,直接加括号即可,考官不会因为多余括号扣分,反而能避免运算逻辑错误。

4. 整数除法与取余 (Integer division and remainders)

整数除法

当两个int类型数值做除法运算时,结果仍为int类型,会直接截断小数部分(向0取整),例如7 / 2 = 3-7 / 2 = -3,而非四舍五入的结果。如果需要得到小数结果,需要将其中一个操作数转为double,例如7.0 / 2 = 3.5

取余运算符%

取余运算返回除法的余数,余数符号和被除数一致,例如7 % 2 = 1-7 % 2 = -110 % 3 = 1。取余运算的高频应用场景包括:判断奇偶(num % 2 == 0为偶数)、取数字的指定位数(num % 10取个位)、循环计数边界判断等,是FRQ题的高频考点。

5. 数学与赋值运算符 (Mathematical and assignment operators)

数学运算符

常用数学运算符包括+(加)、-(减)、*(乘)、/(除)、%(取余),运算规则注意:只要有一个操作数是double类型,运算结果就是double类型,例如5 + 2.0 = 7.0

赋值运算符=

赋值运算符的功能是将右侧表达式的结果赋值给左侧的变量,左侧必须是可修改的变量,3 = a这类写法会编译错误。考点提示:不要混淆赋值运算符=和相等比较运算符==if (score = 100)这类写法会编译报错,因为赋值表达式返回的是int类型的100,而非if要求的boolean类型。

6. 复合赋值运算符 (Compound assignment)

复合赋值运算符将运算和赋值操作合并,常用的包括+=-=*=/=%=,例如a += 5等价于a = a + 5a %= 3等价于a = a % 3。 复合赋值的特殊规则是会自动完成强制类型转换,例如以下代码是合法的:

int a = 5;
a += 2.5; // 等价于 a = (int)(a + 2.5),结果为7

而如果直接写a = a + 2.5会编译错误,因为右侧运算结果为double,不能直接赋值给int类型变量,这是高频考点。

7. 常见陷阱 (Common Pitfalls)

  1. 错误做法:两个int相除想要小数结果时,写double res = 7 / 2得到3.0而非3.5。原因:先执行整数除法得到3,再转为double,小数部分已经丢失。正确做法:将任意一个操作数转为double,例如double res = 7.0 / 2
  2. 错误做法:强制转换double到int时以为会四舍五入,认为(int)3.99的结果是4。原因:混淆了强制转换和Math.round()的功能。正确做法:需要四舍五入时使用(int)Math.round(3.99),结果为4。
  3. 错误做法:boolean和数值类型互转,例如写int flag = trueif (1)判断为真。原因:受C/C++语言习惯影响,Java中boolean和数值类型完全不兼容。正确做法:boolean仅能赋值为true/false,if条件必须是boolean表达式。
  4. 错误做法:忽略int溢出问题,int a = 2147483647; a += 1得到-2147483648。原因:不知道int的取值范围,溢出后会从最小值开始回绕。正确做法:数值可能超出int范围时使用double或long类型。

8. 练习题 (AP CS A 风格)

第1题

题干:以下Java代码的输出结果是什么?

int a = 10;
double b = 3.0;
int c = 7;
boolean res = (a / c + b) > 4.5;
System.out.println(res);

解答:首先计算a/c,两个int做除法得到1;然后1 + b得到double类型的4.0;比较4.0 > 4.5结果为false,所以输出false

第2题

题干:变量x是int类型,值为1234,以下哪个表达式可以得到x的十位数字(即3)? A. x % 10 B. x / 10 % 10 C. x % 100 / 10 D. B和C都对 解答:A选项得到个位4,错误;B选项1234/10=123123%10=3,正确;C选项1234%100=3434/10=3,正确;所以答案为D。

第3题

题干:以下代码执行后变量y的值是多少?

int y = 8;
y += 2.5;
y *= 2;
y %= 5;

解答:第一步y += 2.5等价于y = (int)(8+2.5) = 10;第二步y *= 2得到20;第三步y %= 5得到0,所以最终y的值为0。

9. 速查表 (Quick Reference Cheatsheet)

分类 核心规则
基本类型 int:32位整数,截断除法;double:64位浮点数;boolean:仅true/false,不可转数值
类型转换 小转大自动完成,大转小需强制,截断小数不四舍五入
运算符优先级 括号 > 一元 > 乘除模 > 加减 > 比较 > && >
取余% 余数符号和被除数一致,可用于判奇偶、取指定位数
复合赋值 自动强制类型转换,不会报类型不兼容错误

10. 接下来怎么学

本单元是AP CS A的基础模块,后续的控制流语句、数组、字符串、类与对象等所有模块都依赖基本数据类型的知识,尤其是整数除法、类型转换、取余运算的考点,会贯穿整个考试的选择题和FRQ题,比如FRQ中字符串处理、数组遍历的边界计算,经常会用到%和整数除法的相关规则。

如果你在练习本模块考点时遇到任何问题,或者需要更多针对性的练习题,可以随时到小欧主页提问,我们会为你提供一对一的辅导讲解。

← 返回章节主页

某道题卡住了?
拍照或粘贴题目 — 小欧(我们的 AI 学习助手)会一步步讲解并配示意图。
免费试用小欧 →