AP CSA 03 - 变量

这里应该还是在考纲Unit 1的范围之内,今天讲一个编程中很常见的话题:变量和常量
变量 (Variables)
首先是变量,变量 (Variables) 你就想象成一个容器,可以用来存放任何东西,比如:数字、文本、符号、对象(这个后面会讲)
当你创建了这一个容器之后,Java 会根据数据类型的不同给这个容器在内存上分配一部分的空间
定义(创建)变量 (Declaring Variables)
那么变量究竟该如何被定义(创建)呢?我们在 Java 中是这样操作的:
1 | //<数据类型><空格><变量名>; |
好的那么我们总得个 a 里面放一个东西吧?这个放东西的操作叫做赋值 (assignment),赋值的操作是这样的:
1 | a = 10; |
这个就是赋值语句:assignment statement
运算
数字类型的变量可以进行运算:
1 | a = 10 + 1; |
当然,运算的式子里面也可以有变量:
1 | b = b - 1.5; |
每次写这种带自身的加减运算都好麻烦,都要写两遍这个变量的名字,能不能简化一点?还真可以:
1 | b -= 1.5; |
自增自减运算
那么这里就可以引入一种很新颖的运算符号,上一章提到过,叫做自增自减运算
1 | int i = 0; |
然后这个运算你也可以把符号放前面,单独一条没有任何区别,但是如果和别的东西组合在一起的话这两种写法是有很大的差别的:
1 | ++i; |
这么写也是合法的,但是接下来是个重点🌟🌟🌟,AP的课本里不讲,但是写FRQ里面千万不要写错了
自增自减符号在后面时,如果我们获取这整条式子的值像这样:
1 | //在这一行的时候 i 是 0 |
那么此时变量的 c 里面是先拿到了 i 自增之前的值,i 再进行自增运算
这一条式子过后,c 里面的值是 0,然后 i++,i 的值变成了 1
理所当然反过来,自增自减符号在前面时,就是先进行自增自减运算,再拿到 i 的值:
1 | //为了方便理解,我先把 i 改成 3 |
那么此时变量 i 先进行自减运算,这里 i 先变成了 3 - 1 = 2,然后 c 再拿到 i 的值,现在 c 里面是 2
取模 (mod) %
好的这种自增自减讲完了接下来是取模 (mod) %
取模运算就是取余数,比如:
1 | int d = 3 % 2; |
至于这个运算有啥用呢?主要有如下作用:
- 判断奇偶
拿任意数字 %2,然后看有没有余数,有余数就是奇数,没有就是偶数,比如上面的3 % 2我们得到余 1 所以 3 就是奇数 - 分解位数
拿任意数字 %10,那么我们就可以得到最后一位的数字,比如123 % 10我们可以得到最后一位 3,可以用前一章讲过的整数类型的特性来进行后续操作,没学会也不要紧
String 变量
String 变量的定义是这样的,文本的内容需要用双引号引起来
1 | String s = "Hello World"; |
准确说这个应该是 String 类型的对象,但是这里为了方便理解先统一叫做变量
拓展知识:变量类型自动推导
那么这里我们来补充一个AP用不到考试也不能用的知识点,听得懂就记着,听不懂就算了,跳过去就行
Java支持自动类型推导,也就是我们可以通过给初始值的方式让Java编译器自动识别这个变量应该是什么类型的,例子:
1 | var c = 5; |
警告
不要在FRQ(简答题)里面这么写,给我乖乖写清楚变量类型!题目就是考你对于类型的掌握,这里只是作知识补充
变量的命名 (Naming Variables)
好的接下来是个重点,变量名称不能是编译器预定关键字,这些东西编译器另有他用,不能用于取名
包括上一章里面的所有数据类型和boolean的true或false,全部的都列在本章节最后附录的表里面了,你要脑力充足可以去背,我建议是不用背,变量取名的时候稍微用稍微复杂一点的名字就好了:Java 保留关键字 (Java Reserved Keywords)
变量的命名应该遵循易读原则,需要描述清楚它的用途,且不应过长
吐槽时间:我不知道为啥教算法的都教学生创建变量是 abcd 的,完全没有规律可循,纯纯误人子弟,我前面举例子的变量都没啥意义,所以可以用 abcd 之类的,但是只要你的变量是要存有意义的数据,那么就要有良好的命名
在 Java 中,变量的命名通常采用 小驼峰(lower camel case) 命名方法,即除第一个单词外,每一个单词开头字母大写,例如:userName、helloWorld、myNameIsZero,现在对于一些专有名词的大小写意见不一,我习惯是大写,看你们,比如ID、SQL、UI一类的,但是总得来说一切遵循易读原则
举个例子:如果我要创建一个类型用于表示一个学生,那么他应该有如下的信息需要存:
- 姓名
- 年龄
- 性别
- 班级
- 学号
那么与之相对的,我取名就应该是这个样子:
nameagegenderclassstudentID
一些惯用的命名习惯
有些变量的命名已经形成了习惯,最好按照习惯来写,而不是采用自创的命名
比如,你需要用一个临时变量存一些内容,那么这个变量的名称按照习惯一般会被取名为 temp 或者 tmp 都是代表暂存的意思
又比如,你要存一个文档的文件大小,我们一般不会用全称 document,而是会用简称 doc,所以取名就是 docSize
还有一个最经典的例子,就是参数 argument,一般没人会写完全称,太长了,都是直接用 arg,复数用 args
总的来说就是有很多简写需要注意,不是说你写全称会错,而是你可能会看不懂别人写的简写
知识补充:常量 (Constants)
本来学编程这个玩意是绕不过去的,但是不知道为什么AP它不讲也不考,所以我在这就作为只是补充来讲了
什么是常量
常量也是也是一个容器,它用来存放代码运行中不会后续出现任何变化的量,比如软件名称、版本号之类的
常量的声明 (Declaring Constants)
常量的声明和变量类似,前面讲过变量的声明是这样的:
1 | //<数据类型><空格><变量名>; |
那么常量的声明就是这样的:
1 | //final<空格><数据类型><空格><变量名>; |
常量需要在声明的时候就赋好初始值,至于剩下的,就都一样了,但是区别就是常量里的值无法被修改
1 | a = 10; |
但是可以被访问:
1 | int b = a; |
就是这样
本章节到此结束
附录
Java 保留关键字 (Java Reserved Keywords)
1. 数据类型与值类型 (Data Types & Literals)
| 关键字 | 含义 |
|---|---|
| byte | 8 位整数类型 |
| short | 16 位整数类型 |
| int | 32 位整数类型 |
| long | 64 位整数类型 |
| float | 32 位浮点数类型 |
| double | 64 位浮点数类型 |
| char | 单个 Unicode 字符 |
| boolean | 布尔类型(true/false) |
| true | 布尔真值 |
| false | 布尔假值 |
| null | 空引用字面值 |
| void | 无返回值类型 |
2. 类与对象 (Classes, Objects & Interfaces)
| 关键字 | 含义 |
|---|---|
| class | 定义类 |
| interface | 定义接口 |
| enum | 定义枚举类型 |
| extends | 类继承或接口继承 |
| implements | 类实现接口 |
| this | 当前对象引用 |
| super | 父类对象引用 |
| new | 创建对象实例 |
| instanceof | 测试对象类型 |
| package | 声明包名 |
| import | 引入类或包 |
3. 访问控制与修饰符 (Access & Modifiers)
| 关键字 | 含义 |
|---|---|
| public | 公有访问修饰符 |
| protected | 受保护访问修饰符 |
| private | 私有访问修饰符 |
| static | 静态成员或方法 |
| final | 不可修改、最终定义 |
| abstract | 抽象类或方法 |
| synchronized | 同步控制(多线程) |
| volatile | 多线程可见性变量 |
| transient | 序列化时跳过的成员 |
| native | 使用本地(C/C++)方法 |
| strictfp | 限定浮点计算精度 |
4. 控制语句 (Control Flow)
| 关键字 | 含义 |
|---|---|
| if | 条件判断 |
| else | 条件分支 |
| switch | 多分支选择 |
| case | switch 分支 |
| default | 默认分支 |
| for | 循环 |
| while | 循环 |
| do | 循环(先执行后判断) |
| break | 跳出循环或 switch |
| continue | 跳过当前循环 |
| return | 返回结果 |
| yield | 从 switch 表达式返回值(Java 14+) |
5. 异常与错误处理 (Exception Handling)
| 关键字 | 含义 |
|---|---|
| try | 异常捕获块 |
| catch | 捕获异常 |
| finally | 无论异常与否都会执行 |
| throw | 抛出异常 |
| throws | 声明可能抛出的异常 |
| assert | 断言条件(调试用) |
6. 继承与多态 (Inheritance & Polymorphism)
| 关键字 | 含义 |
|---|---|
| super | 引用父类 |
| this | 引用当前对象 |
| instanceof | 判断类型关系 |
7. 模块系统 (Modules, since Java 9)
| 关键字 | 含义 |
|---|---|
| module | 定义模块 |
| requires | 声明模块依赖 |
| exports | 导出包 |
| opens | 允许反射访问包 |
| uses | 声明使用服务接口 |
| provides | 提供服务实现 |
| to | 限定导出目标模块 |
| with | 指定服务实现类 |
Java 当前共有 67 个保留关键字 + 3 个字面值 (true, false, null)。
- Title: AP CSA 03 - 变量
- Author: 零风PLFJY
- Created at : 2025-09-22 16:11:15
- Updated at : 2025-12-06 22:44:55
- Link: https://blog.plfjy.top/ap-csa/03-var/
- License: This work is licensed under CC BY-NC-SA 4.0.