在Apex中,所有的变量和表达式都会有一个数据类型,那salesforce中都有哪些数据类型?
接下来主要针对以下几个内容进行介绍,其他的自行查看。
数据类型 | 描述 | 举例 | 参考文档 |
---|---|---|---|
Blob | 一组二进制数据的集合用来存储在一个object中,通常用于存储在一个文件或者附件中(用于作为body部分)。 | String myString = 'StringToBlob'; | |
Blob myBlob = Blob.valueof(myString); | |||
Integer size = myBlob.size(); | https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_methods_system_blob.htm | ||
Boolean | 一个值仅允许赋值为 true/ false/null. | Boolean skipValidation = true; | https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_methods_system_boolean.htm |
Date | 一个表示特定日期的值。与Datetime值不同,Date值不包含关于时间的信息。通过加/减一个整形数字(代表加减天数),便可以返回一个新的日期类型的值。可以通过 System.today()获取当前用户时区下的当前日期。 | Date currentDate = System.today(); | |
Date particularDate = currentDate.addDays(5); | |||
system.debug('*** particular date: ' + particularDate); | |||
//返回当前user时区的当天日期的5天以后的结果。 | https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_methods_system_date.htm | ||
Datetime | 一个表示特定日期的值,包含时间戳的信息。Datetime类型需要考虑时区问题,即本地时间以及GMT时间。举个例子:中国是GMT + 8,本地时间如果为2023年1月1日的0时,则GMT时间为2022年12月31日的16时,使用正确的时间在项目中极为重要。通过 System.now()获取GMT时区的当前时间。通过 Datetime.format()或者其他方法获取当前user本地时区的时间。 | Datetime nowWithGMT = system.now(); | |
Datetime nowWithLocal = nowWithGMT.format(); | https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_methods_system_datetime.htm | ||
Decimal | 一个包含小数点的数,最多32位。Currency类型的字段在apex中将会自动转换成 Decimal类型。需要注意的是:两个数值相等但比例不同的十进制对象(如1.1和1.10)通常没有相同的哈希代码。当这样的十进制对象被用在Set或者作为Map的key时,需要谨慎使用。 | Decimal testVariable = 1.1; | |
Decimal testVariable2 = 1.10; | |||
Set<Decimal> variableSet = new Set<Decimal>(); | |||
variableSet.add(testVariable); | |||
system.debug(variableSet.contains(testVariable2)); | |||
//结果将会返回false,因为尽管 testVariable和testVariable2的值相等,但是因为小数点后的数量不同,哈希值会不同,所以系统不会认为相同。 | https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_methods_system_decimal.htm | ||
Double | 一个包含小数点的数,最多64位,范围为:-2的63次方到2的63次方减1 | Double pi = 3.14159; | https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_methods_system_double.htm |
ID | 18位的系统中的数据ID,如果传递的是15位的ID,系统也会自动转换成18位ID | Id currentUserId = UserInfo.getUserId(); | |
system.debug('*** currentUserId : ' + currentUserId); | |||
//输出当前运行user的ID | https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_methods_system_id.htm | ||
Integer | 32位不包含小数点的数。 | Integer integerVariable = 1; | https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_methods_system_integer.htm |
Long | 64位不包含小数点的数。 | Long longVariable = 1L; | https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_methods_system_long.htm |
Object | apex中支持的任意的数据类型。apex支持基础类型,用户定义的自定义的类,sobject基础类型,所有的数据类型都继承自Object | Object obj = 10; | |
// Cast the object to an integer. | |||
Integer i = (Integer)obj; | |||
String | 一系列的字符串用于放在单引号中 | String testVariable = ‘test’; | https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_methods_system_string.htm |
Time | 一个存储指定时间的值,可以通过 Time类的 newInstance实例化,如果想要获取当前时间,也可以通过获取 Datetime以后,获取 Time信息。 | Datetime nowWithGMT = system.now(); | |
Time currentTimeWithGMT = nowWithGMT.timeGmt(); | |||
system.debug(currentTimeWithGMT); | |||
//获取当前的GMT的日期 | https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_methods_system_time.htm |
建议大家将基础类型的类以及方法都简单扫一遍。
集合:集合在apex开发中一定会用到,这里使用的是 List, Set以及Map。接下来对这三个进行描述。
Index 0 | Index 1 | Index 2 |
---|---|---|
'Red’ | 'Orange’ | 'Yellow’ |
List里面的元素可以是任何的类型,比如基础类型,sObject,或者嵌入的列表等。举个例子:
// 创建一个空的列表
List<String> my_list = new List<String>();
// 创建一个嵌套列表
List<List<Set<Integer>>> my_list_2 = new List<List<Set<Integer>>>();
// 创建一个列表并添加值
List<Integer> myList = new List<Integer>();
myList.add(47);
更多 list的知识可以参考:https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_methods_system_list.htm
// 定义set时可以直接设置元素
Set<String> set1 = new Set<String>{'New York', 'Paris'};
//定义一个空的Set
Set<Integer> mySet = new Set<Integer>();
//添加元素
mySet.add(10);
//如果添加重复元素,会自动忽略,所以输出set的大小,返回的结果是1
mySet.add(10);
//输出结果为1,因为两次add内容相同,Set中的内容是唯一的
System.debug(LoggingLevel.INFO, '*** mySet.size(): ' + mySet.size());
更多Set的知识可以参考:https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_methods_system_set.htm
//定义一个Map
Map<Integer, String> m = new Map<Integer, String>();
//添加键值对到Map中
m.put(1, 'First entry');
m.put(2, 'Second entry');
String result = '';
if(m.containsKey(1)) {
result = m.get(1);
}
//输出结果为 First entry
system.debug(result);
更多Map的知识可以参考:https://developer.salesforce.com/docs/atlas.en-us.apexref.meta/apexref/apex_methods_system_map.htm
do while和while的用法和java相同,用于对集合进行处理,其中 do while是先执行方法体,然后在执行while中的条件语句。while是先执行条件语句,满足条件才会执行方法体内容。
do while语法: