数据类型
在 Apex 中,所有变量和表达式都有一个数据类型,例如 sObject、primitive 或 enum。
- 原始数据类型(primitive):Integer, Double, Long, Date, Datetime, String, ID, Boolean
- sObject数据类型:比如标准对象 Account, Contact等 或者自定义对象 MyCustomObject__c
- 集合(collection):Lists、Sets、Maps
- 类型化的值列表,也称为枚举(enum )
- 用户自定义的 Apex 类创建的对象
- 系统本身提供的 Apex 类创建的对象
- 空(null,可以分配给任何变量)
原始数据类型
所有 Apex 变量,无论是类成员变量还是方法变量,都被初始化为 null。请确保在使用变量之前将其初始化为适当的值。例如,将布尔变量初始化为 false。
原始数据类型包括以下12种:
-
Blob
Blob是作为对象存储的二进制数据的集合。当我们需要将blob转换为字符串时,可以使用toString和valueOf方法在需要时将其转换为字符串。当我们要将Salesforce中的附件存储到变量中时,也可以使用此选项。 -
Boolean
此变量只能赋值true,false或null。例如:
Boolean ilikeyou = true;
System.debug(LoggingLevel.INFO, '*** ilikeyou: ' + ilikeyou);
-
Date
指示特定日期的值。与日期时间值不同,日期值不包含有关时间的信息。
Date today = Date.today();
System.debug(LoggingLevel.INFO, '*** today: ' + today);
-
Datetime
指示特定日期和时间的值,例如时间戳。
Datetime now = Datetime.now();
System.debug(LoggingLevel.INFO, '*** now: ' + now);
-
Decimal
包含小数点的数字。货币字段自动分配为Decimal类型。
如果没有明确设置 Decimal 的小数位数,则创建 Decimal 的项将确定 Decimal 的小数位数
Decimal price = 899.99;
System.debug(LoggingLevel.INFO, '*** price: ' + price);
-
Double
包含小数点的 64-bit 数字。Double的最小值为 - 2 63,最大值为 2 63 -1。不支持科学记数法 (e)
Double d =3.14159;
System.debug(LoggingLevel.INFO, '*** d: ' + d);
-
ID
任何有效的 18 个字符的 Lightning 平台记录标识符。如果你设置 ID为 15 个字符的值,Apex 会自动将该值转换为其 18 个字符的表示形式。全部无效ID 值在运行时异常会报错。
ID a = '00300000003T2PGAA0';
System.debug(LoggingLevel.INFO, '*** a: ' + a);
-
Integer
不包含小数点的 32-bit 数字。Integer的最小值为-2,147,483,648,最大值为2,147,483,647。
Integer dogs = 5;
System.debug(LoggingLevel.INFO, '*** dogs: ' + dogs);
-
Long
不包含小数点的 64-bit 数字。Long的最小值为 -2 63,最大值为 2 63 -1。当您需要比 Integer 提供范围更宽的值时,请使用此数据类型。
Long l = 2147483648L;
System.debug(LoggingLevel.INFO, '*** l: ' + l);
-
Object
任何数据类型都是Object。所有 Apex 数据类型都继承自 Object,例如:原始数据类型(Integer)、用户定义的自定义类、sObject 通用类型或 sObject 特定类型(例如 Account)
你可以将一个对象强制转化为基础数据类型,例如:
Object obj = 666;
// Cast the object to an integer.
Integer i = (Integer)obj;
System.debug(LoggingLevel.INFO, '*** i: ' + i);
下一个示例显示如何将对象强制转换为用户定义的类型 — 名为 MyApexClass 的自定义 Apex 类,这是在您的组织中预定义的。
Object obj = new MyApexClass();
// Cast the object to the MyApexClass custom type.
MyApexClass mc = (MyApexClass)obj;
// Access a method on the user-defined class.
mc.someClassMethod();
-
String
由单引号括起来的任何字符集。
String str = 'I like dogs';
System.debug(LoggingLevel.INFO, '*** str: ' + str);
- 字符串大小:字符串对于字符数量没有限制。堆大小限制用于确保您的 Apex 程序不会变得太大。
- 空字符串和尾随空格:Apex 中的字符串可以是 null 或为空,可以包括前导和尾随空格。相反,sObject 字符串字段值遵循与 SOAP API 中相同的规则:它们永远不能为空(仅允许null),并且它们永远不能包含前导和尾随空格。
- 转义序列:Apex 中的所有字符串都使用与 SOQL 字符串相同的转义序列:\b (退格), \t (tab), \n (换行), \F (换页), \r (回车), \ " (双引号), \ ' (单引号),和 \ \ (反斜杠)。
- 比较运算符:支持使用比较运算符==, !=, <, <=, >和 >= 由于 Apex 使用 SOQL 比较语义,字符串的结果根据上下文用户的区域设置进行整理,并且不区分大小写。
-
Time
指示特定时间的值。
Time myTime = Time.newInstance(1, 2, 3, 0);
System.debug(LoggingLevel.INFO, '*** myTime: ' + myTime);
本篇参考:https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/langCon_apex_data_types.htm
本文欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接
网友评论