Salesforce基础 - Apex数据类型

数据类型

在 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种:
1. Blob
Blob是作为对象存储的二进制数据的集合。当我们需要将blob转换为字符串时,可以使用toString和valueOf方法在需要时将其转换为字符串。当我们要将Salesforce中的附件存储到变量中时,也可以使用此选项。

2. Boolean
此变量只能赋值true,false或null。例如:

Boolean ilikeyou = true;
System.debug(LoggingLevel.INFO, '*** ilikeyou: ' + ilikeyou);

3. Date
指示特定日期的值。与日期时间值不同,日期值不包含有关时间的信息。

Date today = Date.today();
System.debug(LoggingLevel.INFO, '*** today: ' + today);

4. Datetime
指示特定日期和时间的值,例如时间戳。

Datetime now = Datetime.now();
System.debug(LoggingLevel.INFO, '*** now: ' + now);

5. Decimal
包含小数点的数字。货币字段自动分配为Decimal类型。
如果没有明确设置 Decimal 的小数位数,则创建 Decimal 的项将确定 Decimal 的小数位数。

Decimal price = 899.99;
System.debug(LoggingLevel.INFO, '*** price: ' + price);

6. Double
包含小数点的 64-bit 数字。Double的最小值为 -2^{63},最大值为 2^{63}-1。不支持科学记数法 (e)

Double d =3.14159;
System.debug(LoggingLevel.INFO, '*** d: ' + d);

7. ID
任何有效的 18 个字符的 Lightning 平台记录标识符。如果你设置 ID为 15 个字符的值,Apex 会自动将该值转换为其 18 个字符的表示形式。全部无效ID 值在运行时异常会报错。

ID a = '00300000003T2PGAA0';
System.debug(LoggingLevel.INFO, '*** a: ' + a);

8. Integer
不包含小数点的 32-bit 数字。Integer的最小值为-2,147,483,648,最大值为2,147,483,647。

Integer dogs = 5;
System.debug(LoggingLevel.INFO, '*** dogs: ' + dogs);

9. Long
不包含小数点的 64-bit 数字。Long的最小值为 -2^{63},最大值为 2^{63} -1。当您需要比 Integer 提供范围更宽的值时,请使用此数据类型。

Long l = 2147483648L;
System.debug(LoggingLevel.INFO, '*** l: ' + l);

10. 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();

11. String
由单引号括起来的任何字符集。

String str = 'I like dogs';
System.debug(LoggingLevel.INFO, '*** str: ' + str);

字符串大小:字符串对于字符数量没有限制。[堆大小限制](https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_gov_limits.htm)由于 Apex 在多租户环境中运行,Apex 运行时引擎严格执行限制,以便失控的 Apex 代码或进程不会独占共享资源。 如果某些 Apex 代码超出限制,则关联的调控器会发出无法处理的运行时异常。")用于确保您的 Apex 程序不会变得太大。


空字符串和尾随空格:Apex 中的字符串可以是 null 或为空,可以包括前导和尾随空格。相反,sObject 字符串字段值遵循与 SOAP API 中相同的规则:它们永远不能为空(仅允许null),并且它们永远不能包含前导和尾随空格。


转义序列:Apex 中的所有字符串都使用与 SOQL 字符串相同的转义序列:\b (退格), \t (tab), \n (换行), \F (换页), \r (回车), \ " (双引号), \ ' (单引号),和 \ \ (反斜杠)。


比较运算符:支持使用比较运算符==, !=, <, <=, >和 >= 由于 Apex 使用 SOQL 比较语义,字符串的结果根据上下文用户的区域设置进行整理,并且不区分大小写

12. Time
指示特定时间的值。

Time myTime = Time.newInstance(1, 2, 3, 0);
System.debug(LoggingLevel.INFO, '*** myTime: ' + myTime);

sObject数据类型

这是Salesforce中的特殊数据类型。 它类似于SQL中的表,并且包含与SQL中的列类似的字段。 有两种类型的sObjects:Standard和Custom。

比如标准对象 Account, Contact等,是系统预定义的。

自定义对象,用户自行创建的对象,如:MyCustomObject__c

Enum枚举

枚举是一种抽象数据类型,存储指定标识符的有限集合的一个值。 您可以使用关键字Enum定义一个枚举。 枚举可用作Salesforce中的任何其他数据类型。

public enum Season {WINTER, SPRING, SUMMER, FALL}

您还可以将类定义为枚举

public enum MyEnumClass { X, Y }

集合(collection)

List: 列表是元素的有序集合,这些元素通过其索引进行区分。列表元素可以是任何数据类型 - 原始类型、集合、sObject、用户定义类型和内置 Apex 类型。

// Create an empty list of String
List<String> my_list = new List<String>();
// Create a nested list
List<List<Set<Integer>>> my_list_2 = new List<List<Set<Integer>>>();

Set: 集合是不包含任何重复项的无序元素集合。集合元素可以是任何数据类型 - 原始类型、集合、sObject、用户定义类型和内置 Apex 类型。

Set<String> myStringSet = new Set<String>();

Map: 映射是键值对的集合,其中每个唯一的键映射到单个值。键和值可以是任何数据类型 - 原始类型、集合、sObject、用户定义类型和内置 Apex 类型。

Map<String, String> country_currencies = new Map<String, String>();
Map<ID, Set<String>> m = new Map<ID, Set<String>>();


本篇参考:https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/langCon_apex_data_types.htm
本文欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值