课程章节介绍
讲完前面那些比较核心的规则,现在我们把一些同样重要,但更像“细节功夫”的点,一块儿梳理清楚。
这就像盖房子,大梁和承重墙都好了,现在是检查门窗、线路的时候。我们来看看,分配陈述、注释、类型转换和数字的一些注意事项,。
---
### 一、分配陈述
这个其实最简单,你之前一直在用。所谓“分配陈述”,就是我们常说的,给变量赋值,。
在Apex里,用等号 `=` 来赋值。你把等号右边的计算结果,交给左边的变量保管。
```apex
String welcomeMessage; // 1. 先声明一个字符串变量
welcomeMessage = '你好,同学!'; // 2. 再把具体的文字“分配”给它
Integer studentCount = 0; // 更常见的写法是声明和赋值一步到位
studentCount = 100; // 程序运行中,又可以给它重新分配新的值
```
你只要记住,,等号左边必须是个“容器”(变量),等号右边的值和这个容器的类型要匹配,,就这么简单。
---
### 二、如何在Apex中编写注释
注释是写给你自己,或者未来接手的开发者看的。电脑会完全忽略它。好的注释能救命,坏的注释是噪音。我们来把这件事做对。
Apex有两种注释方式:
,1. 单行注释:用两个斜杠 `//`,
从 `//` 开始,一直到这行结束,都是注释。
```apex
Integer totalAmount = 0; // 初始化总金额为0,准备开始累加
// 下面的代码用于计算折扣,暂时因为业务调整而跳过
// calculateDiscount(totalAmount);
```
什么时候用? 解释你,为什么,这么写,而不是你写了什么。`totalAmount = 0` 本身就很清楚了,不需要画蛇添足写“把0赋值给总金额”。
,2. 多行注释:用 `/* ... */`,
把需要注释的一大段内容包在中间。
```apex
/*
* 这个方法是整个订单处理流程的核心,由“结账按钮”触发。
* 修改前请务必确认最新的业务规则文档(文档编号:DOC-2024-001)。
* 创建人:张老师
* 创建日期:2024年1月15日
*/
public void processOrder() {
// ... 一些重要的代码
}
```
这个非常适用于写在类、方法或复杂逻辑的开头,作为“小说明书”。
记住,注释的最高级形态是 ,“干净的代码本身就是注释”,。把变量名起得有意义(比如用 `customerEmail` 而不是 `ce`),把长逻辑拆成小方法,这些比添加一大堆解释性注释更有效。
---
### 三、数据类型之间转换的规则
数据需要在不同类型之间流动,就像水有时需要变成冰,有时需要变成蒸汽。但转换不是随心所欲的,有规矩。我们分两种:
,1. 隐式转换(自动转换),
这就像把一杯水倒进一个空桶里,Apex非常聪明,可以帮你自动完成。原则是:,从小范围、低精度的类型,向大范围、高精度的类型转,永远安全。,
比如:
- `Integer` 可以自动变成 `Long`, `Double`, `Decimal`。
- `ID` 可以自动变成 `String`。
```apex
Integer stuNum = 15;
Long longNum = stuNum; // 完美!整数自动变成长整数
String recordId = '001abc'; // 假设这是个ID
ID myId = recordId; // 报错!String不能自动变成ID,必须显式转换
```
,2. 显式转换(手动转换),
这就像把冰化成水需要加热,把水变成冰需要降温一样,你需要明确告诉Apex:“我知道可能有风险,但我确定要这么做。” 用,类型名括起来,的方式。
比如,反过来把大杯子里的水倒进小杯子,就有可能溢出。
```apex
Long bigNumber = 3000000000L;
// Integer normalNumber = bigNumber; // 报错!因为Long的范围大于Integer,可能溢出
// 你需要显式地告诉编译器:“我知道风险,给我转!”
Integer normalNumber = (Integer)bigNumber;
// 同样,String转ID也是一样
String recordId = '001R000000XXXXXX';
ID myId = (ID)recordId; // 你确定这个字符串格式正确,强制转换
```
最常用、最安全的显式转换,是在数字和字符串之间:
- `String.valueOf( myNumber )`:数字转字符串
- `Integer.valueOf( myString )`:字符串转整数。这个要小心,如果字符串里是“abc”,程序就会报错崩溃。所以通常会用try-catch包起来,或者先检查。
---
### 四、数字数据类型的其他注意事项
最后,说几个关于数字的小坑,提前知道能省下你很多调试时间。
,1. 精度与财务计算,
这一点我每次都会敲黑板强调:,涉及钱,永远用 `Decimal`。, `Double` 是给科学计算用的,它用二进制模拟小数,会有精度问题,就像 `1/3` 无法在十进制里精确表示一样。
```apex
Double badMoney = 0.1 + 0.2; // 结果可能是 0.30000000000000004
Decimal goodMoney = 0.1 + 0.2; // 结果精确地等于 0.3
```
,2. 字面量后缀,
当你直接写下一个数字时,Apex会猜它的类型。如果你想明确告诉它,就需要加后缀:
- `L` 或 `l`:表示 `Long`。比如 `long num = 3000000000L;`,不加L会被当成Integer并报错(超出范围)。
- `D` 或 `d`:表示 `Double`。比如 `double price = 19.99d;`
,3. 除零问题,
- `Integer` 除以零,会直接抛出“不能被零除”的异常,程序崩掉。
- `Double` 或 `Decimal` 除以零,则不会报错,而是得到一个特殊值——正无穷大、负无穷大或者 NaN(不是一个数字)。这会让你后续的计算变得一塌糊涂还很难查。所以,,做除法前,养成好习惯,总是先判断除数是不是0。,
好了,这几个支撑性的知识点我们也说完了。它们就像编程路上的安全护栏和指路牌,让我们的代码既健壮又清晰。下一次,我们就可以开始正式接触在Salesforce里最激动人心的部分,如何直接操作数据库了。我们先休息一下。
关键词
Apex
Salesforce
Developer Guide