apex语言与java比较_Apex 基础知识合辑

什么是 ApexApex 是一种类似于 Java 的强类型、面向对象编程语言。在 Apex 类中,语法上可定义方法、变量、静态代码块等,变量用于定义对象的属性,比如对象的名称或者类型,而方法用于定义对象的行为;业务上可将逻辑事件绑定到系统事件中,比如按钮的点击、数据的更新以及操作 Visualforce 页面等。定义好的 Apex 类可被其他类调用,或者作为 Web Service 通过 API ...
摘要由CSDN通过智能技术生成

什么是 Apex

Apex 是一种类似于 Java 的强类型、面向对象编程语言。在 Apex 类中,语法上可定义方法、变量、静态代码块等,变量用于定义对象的属性,比如对象的名称或者类型,而方法用于定义对象的行为;业务上可将逻辑事件绑定到系统事件中,比如按钮的点击、数据的更新以及操作 Visualforce 页面等。定义好的 Apex 类可被其他类调用,或者作为 Web Service 通过 API 调用。

总的来讲,在 Salesforce 中,Apex 主要以两种形式存在:

以单独的脚本形式,按照用户的需求、业务逻辑执行,可以理解为 Java 项目中的 controller 类。

以触发器 trigger 的形式,trigger 作用于具体的 sObject(参考 “什么是 sObject“),当此 sObject 发生数据更变时就会触发作用于此 sObject 上的 trigger。

Apex 语言特性

Apex 类和 Java 类相似,是创建对象的模版,具有以下语言特性:

面向对象,支持类的接口实现与类继承。

强类型,Apex 类在编译期会验证对对象的引用。

易测试,Apex 类为单元测试的创建,执行以及代码覆盖提供内置支持。

Apex 的开发、编译以及执行在云中进行。

集成数据库,Apex 类可直接访问数据库记录,并且可以直接通过语句来增删改查。

触发器(Trigger),直接作用于对象,类似于数据库系统的触发器。

Apex 支持对数据库的事务访问以及回滚。

Apex 的工作模式

Apex 的工作模式主要是分为开发人员和用户,当开发人员成功提交并编译代码后,用户提出请求后触发 Apex 代码并返回结果,整个过程有两个操作序列,如图 1 所示:

图 1. Apex 工作模式

3a206564453e2ad23bc0373088dcfe44.png

开发人员操作:从图 1 可 以看出,开发人员编写的代码在 Apex Compiler 编译器编译过后,代码以元数据的形式存储在数据库中,等待用户触发执行。对于开发人员而言,编写好的未编译过的代码,首先提交到 Application Server,编译时验证代码是否正确,比如表名、字段名不匹配或者不存在等问题,然后服务器端会把编译结果返回到开发人员终端(Salesforce 的 developer console 或者本地的 IDE),开发人员收到结果后重新审核代码。

从图 1 还 可以看出,Application Server 上除了编译器之外还有运行期,代码运行期发生的错误是指程序通过了编译没有发生错误,但是程序执行时发生了异常,语法本身没有错,是逻辑上出现了问题。比如代码中需读取配置文件,但是此配置文件丢失了,因为语法上并没有错误,所以通过了编译期,但是代码触发时,却找不到此文件,就会出现运行错误。运行时错误主要会涉及空指针异常、数组下标越界、内存溢出等,这个时候开发人员就需要重新审核业务逻辑后,重新部署代码。

用户操作:当用户提出请求并最终触发 Apex 代码执行时,比如访问 Visualforce 页面后在页面上执行按钮点击事件,平台应用程序服务器从元数据检索编译指令并执行。

Apex 语法介绍

现在您已经初步了解到 Apex 的基本知识并对于 Apex 的工作模式也有了一定的了解。本章主要是介绍 Apex 的语法,包括基本数据类型、集合与数据流程控制语句以及数据操作三部分内容。总体来看,Apex 与 Java 具有很多相似之处,所以如果已经熟悉 Java 的话,对于学习 Apex 有很大的帮助。

常见的数据类型

Apex 的数据类型分为很多种,以下是几种常用的数据类型:

String:用单引号引起来的一组字符的组合,一般用来存储文本信息,如名称、邮箱等内容。

Date/DateTime/Time:一般用来表示日期,其中 Date 用来表示只需要显示日期的值,Time 用来表示时间信息的值,DateTime 用来表示需要显示日期和时间信息的值。

Integer/Long/Double/Decimal:一般都是用来表示数值的类型。

Enum:一般用来列举一个变量的几个不同的取值。

String 类型

String 类型主要用来存储文本信息,它使用单引号将一组字符包围起来。在 Apex 中我们可以创建一个单引号包围的字符串,然后将它赋值给一个 String 类型的变量,如下所示:

String testString = 'just for testing string' ;Show moreShow more icon

除了上面这种方式,我们也可以将其他的类型转变为 String 类型,通过执行 String 类自带的静态 valueOf() 方法可以将其他类型变为 String 类型:

Integer a = 1;

String testVariable = String.valueOf(a);

System.debug(testVariable);Show moreShow more icon

String 类型的数据还支持 + 运算符的操作,如下所示,两个字符串通过 + 运算符拼接在一起就成为了一个新的字符串 'you and'。

String a = 'you';

String b = 'and';

System.debug(a + b);Show moreShow more icon

String 类型的数据对于 == 和 != 两种运算符是大小写不敏感的,比如下面示例中的结果将会返回 true。

String a = 'you';

String b = 'YOU';

System.debug( a == b );Show moreShow more icon

String 类型也包括很多实例方法来处理字符串数据,常用的方法如表 1 所示。

表 1. String 部分实例方法

方法名称

用法length()

判断一个目标字符串的长度。

substring(para1, para2)

系统会对于目标字符串进行截取,产生一个从 para1 位置到 para2 截止的一个新的字符串,其中 para1 和 para2 的计数是从 0 开始。

replaceAll(para1,para2)

全部替换目标字符串中的 para1 为 para2。

endsWith(para)

对于目标字符串的结尾进行判断,如果与 para 一致就返回 true,否则返回 false。

Date/Datetime/Time 类型

Date/Datetime/Time 这三种类型都是与时间有关系的数据类型,其中 Date 类型用来表示只有年、月、日的日期时间,Time 类型用来表示只有时、分、秒、毫秒的时间,Datetime 类型则是对于 Date 与 Time 进行结合展示。Date/Datetime/Time 三种类型都有 newInstance() 方法来构造指定的时间,具体如下所示:

Date myDate = Date.newinstance(1990, 2, 14);

Time myTime = Time.newInstance(16, 29, 1, 10);Show moreShow more icon

我们也可以获取到当前时间的上述三种类型的信息:

Datetime myDateTime = Datetime.now();

Date today = Date.today();Show moreShow more icon

对于 Date 类型的数据可以通过 time() 来转化为 Time 类型的时间:

Time t = DateTime.now().time();Show moreShow more icon

对于 Date/Time/Datetime 类型具有很多实例方法,比如 Datetime 含有 addDays()、addHours()、addMinutes()、dayOfYear()、timeGMT() 等方法用来改变时间数据信息,其中 addDays() 方法示例如下:

Date myToday = Date.today();

Date myNext30 = myToday.addDays(30);Show moreShow more icon

Integer/Long/Double/Decimal 类型

如果想要在 Apex 中存储数值变量信息,就需要将变量声明成 Integer/Long/Double/Decimal 类型的数据。

Integer:表示一个 32 位的不包括小数点的带符号的数值,范围是 -231 ~ 231-1。

Long:表示一个 64 位的不包括小数点的带符号的数值,范围是 -263 ~ 263-1。

Double:表示一个 64 位的包括小数点的带符号的数值,范围与 Long 类型一致。

Decimal:表示一个具有任意精度的带有小数点的并且带符号的数值,当变量需要用到精确的数字信息的时候可以使用 Decimal 类型,它可以在一定范围内不存在数据精度缺失的情况,货币信息会自动默认为 Decimal 类型数据。

这四种类型的具体声明信息如下所示:

Integer i = 0;

Long l = 2147483648L;

Double d = 56.89007;

Decimal dec = 24.908;Show moreShow more icon

我们也可以使用 ValueOf() 的静态方法来实现 String 类型与数值类型的转换,例如从 String 类型变为 Integer 类型:

Integer count = Integer.valueof('30');Show moreShow

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值