Additional Considerations for Data Types

DEX455 - 编写 Apex 代码:数据类型、集合、变量与运算符完全参考

📄 第 108 页 🎬 视频课程

课程章节介绍

同学们,咱们来聊聊Apex里面关于数据类型的一些重要注意事项。这些细节虽然基础,但写代码的时候一不小心就会踩坑,所以大家集中精神。 先看数字字面量。在你写一个普通的数字,比如5,Apex默认会把它当成Integer类型。如果你希望它是Long类型,就得在后面加一个大写的L,像5L这样。如果想要Double或者Decimal类型呢?那就在数字后面加上“.0”,比如5.0。这个规则很简单,但一定要记住,要不然类型不匹配的时候排查起来很麻烦。 接下来是溢出问题,这个比较隐蔽。在Apex里,如果你做算术运算,算出来的结果超过了这个类型能表示的最大值,它不会给你抛异常报错,而是会把值“回绕”。啥叫回绕呢?比如说Integer类型的最大值大约是21亿,你再加1,结果会突然变成负的21亿,从最小负值重新开始。这样你的数据就错得离谱了,但程序不吭声,调试起来很困难。所以,在做乘法或者一些可能产生大数字的运算时,要保证你用的数据类型足够容纳中间结果,该升级成Long或Decimal的时候一定要提前转换。 再看除法,这个坑也常见。当两个Integer或者Long相除,Apex执行的是整数除法,直接咔嚓掉小数部分。哪怕你把结果赋值给一个Double变量,分数也早就没了。举个例子:`Integer a=5, b=2; Double c = a/b;` 这时候c会是2.0,不是2.5。因为a/b先算出了整数2,然后才隐式转成2.0。想要保留小数,你得提前把其中一个操作数搞成Double或Decimal,比如写成5.0/2,或者强制转换一下,`(Double)a/b`。这点要格外留心。 最后是日期转换。Apex允许你直接把Date类型的值隐式或显式地转成Datetime类型,转换后时间部分会自动填零,也就是午夜0点。这很方便,但别误以为它会帮你带上某个时刻的时间,需要具体时间的话,还是得自己构造Datetime实例。 好了,这几条记住,写代码时多留个心眼,数值处理就能稳稳当当的。咱们继续。

关键词

Apex Salesforce Developer Guide