今天我们来聊聊 Apex 里的“分配陈述”,也叫赋值语句。
简单说,分配陈述就是把一个值放进一个变量里。它的样子通常是一个变量名,后面跟一个等号,再跟上一个新值表达式,或者一个内联的 SOQL 查询结果。
比如,你可以这样写:
`Integer i = 5;`
这里把 5 赋给了整数变量 i。
或者你直接写一个查询:
`List
accounts = [SELECT Id, Name FROM Account];`
这条语句会把从数据库查到的账户列表,直接放进 accounts 这个变量里。
在等号的左边,我们称为 LValue,也就是左值。
左值可以是一个普通的变量,比如 i;
也可以是一个解引用的列表元素,比如 myList[0],代表列表里的第一个位置;
还可以是 sObject 上的字段引用,比如 acc.Name,意思是一个账户记录的名字字段。
这些都能出现在等号的左边,接受一个新值。
这里有个内存管理上很重要的点:Apex 里的列表赋值是“按引用”传递的。
如果我们写出 `List a = new List();` 然后又写 `List b = a;`
那这时候 b 和 a 实际上指向的是内存里的同一份列表数据。
如果你通过 b 往里面添加一个元素,你再去看 a,这个元素也会出现在 a 里面。
因为它们两个引用的是同一块内存。这一点在处理列表时要特别留意,防止意外修改了不该改的数据。
除了最基本的等号,Apex 还提供了很多方便的复合赋值运算符。
比如,`i += 3;` 就相当于 `i = i + 3;`
`i *= 2;` 相当于 `i = i * 2;`
还有 `/=、|=、&=`,以及自增 `++` 和自减 `--`。
就像你写 `i++;` 其实就是让 i 的值加 1。
整体来说,这一页就是让你理解赋值语句的各种形式,以及赋值时引用传递的特点。
掌握了这些,你就能在代码里灵活地给变量、列表元素或字段设值,一步一步写出完整的业务逻辑。