Salesforce系列(四):Salesforce中深入认识Apex中的i++、++i语句!
前言
今天博主将为大家分享:Salesforce系列(四):Salesforce中深入认识Apex中的i++、++i语句!不喜勿喷,如有异议欢迎讨论!
再看这篇文章前博主郑重推荐大家前往阅读我的VsCode安装汉化等系列文章,点这里跳转:VsCode系列(一):下载安装及汉化 以及 Salesforce系列(一):使用Visual Studio Code进行开发!
在几乎所有的命令式编程语言中,必然都会有i++和++i这种语法。在编程启蒙教材《C语言程序设计》一书中,也专门解释了这两条语句的区别。有些语言中i++和++i既可以作为左值又可以作为右值,在Apex语言中,这两条语句都只能作为右值,而不能作为左值。同时,它们都可以作为独立的一条指令执行。
正题
Integer i = 0;
Integer j1 = i++; // 正确
Integer j2 = ++i; // 正确
i++; // 正确
++i; // 正确
i++ = 5; // 编译不通过 - Expression cannot be assigned
++i = 5; // 编译不通过 - Expression cannot be assigned
关于i++和++i的区别,稍微有经验的程序员都或多或少都是了解的,为了文章的完整性,本文也通过实例来简单地解释一下。
/**********- Example1 -**********/
Integer i = 0;
Integer j1 = ++i;
Integer j2 = i++;
System.debug(i);// 输出2
System.debug(j1 + '----' + j2);// 输出1---1
/**********- Example2 -**********/
Integer i = 1;
Integer j1 = i++;
System.debug(j1);// 输出1
System.debug(i);// 输出2
/**********- Example3 -**********/
Integer i = 1;
Integer j2 = ++i;
System.debug(j2);// 输出2
System.debug(i);// 输出2
综上所述:
- 无论是i++和++i指令,对于i变量本身来说是没有任何区别,指令执行的结果都是i变量的值加1;
- 对于Example1的j1,先将i变量值加1,然后将i的当前值(1)赋给变量j1(1);
对于Example1 的j2,先将i的原始值(1)赋给变量j2(1),然后i变的量值加1;
如果参照java的i++和++i还是有很大区别的。
/********** -Example4- **********/
Integer i = 0;
i = i++;
System.debug(i); // 输出0
/********** -Example5- **********/
Integer i = 0;
i = ++i;
System.debug(i); // 输出1
综上所述:(对比)
-
在Apex中Example4,5在IDE不会抛出任何异常
-
但是在Java中Example4的i = i++的导致的结果“异常”;Example5 IDE抛出:【The assignment to variable i has no effect】(赋值给变量i没有效果)警告。
-
但是不论在Apex还是Java中最终都会输出同样的结果,总而言之我们可以把上边的口诀进一步提炼如下:
- 不论i++,++i在没有使用自身变量i接收(无i=i++/i=++i)的情况下,i的最终值都是累加;
- 在i++,++i使用了变量接收的情况下(可以是自身变量接收,也可以是其他变量接收),
接收的值对于i++,遵循先赋值i,后i自增;对于++i,将+后的值赋给接收变量。
我们来试试,进入工作台点击设置齿轮按钮(如果还没注册推荐阅读博主的:Salesforce系列(0):Salesforce注册开发者账号!),进入开发者控制台(Developer Console)。窗体开启后点击Debug,将要运行的代码复制进去,勾选“open log”——点击“Execute”执行这段代码,想要显示运行后和我的截图一样,就勾选Debug only,和Filter过滤并显示调试内容。
到这里:Salesforce系列(四):Salesforce中深入认识Apex中的i++、++i语句!分享完毕了,快去试试吧!
最后
-
更多参考精彩博文请看这里:《陈永佳的博客》
-
喜欢博主的小伙伴可以加个关注、点个赞哦,持续更新嘿嘿!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/97778.html