表格格式范本样本_第1页
表格格式范本样本_第2页
表格格式范本样本_第3页
表格格式范本样本_第4页
表格格式范本样本_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

19.4ActionScript中语句、表达式和运算符语句、表达式和运算符是在程序开发中经常使用术语。那么,究竟什么算是表达式,如何才算语句,运算符均有哪些?本节就将讨论这些问题。19.4.1语句、表达式和运算符关系可以这样来描述三者关系:语句是完整“代码句子”,它是完整一句话,可以用来做某些事情。而表达式更象是不完整只言片语,可比作短语或词组,由于它们自身不能做任何事情,而是被用在语句中。表达式在被求值时会产生一种值。例如:如果你求值表达式“慢得象蜗牛”,你将得到一种实际值(也许是每小时1米)。这与在Flash中工作同样—表达式price/2将产生一种值。而运算符,作为一种表达式一某些,是用来指定如何组合、比较或修改表达式值字符。运算符在其上执行运算元素被称为操作数,运算符可以在一种或各种操作数上执行某个运算。例如:“加”运算符(+)在两个数字(操作数)上执行相加运算。表达式2+2将产生一种值(4)。最后,语句sum=2+2;做了一件把值4赋给了变量sum事情。OK,当前咱们已经懂得了这些术语含义,可以仔细探究它们了。19.4.2算术运算符让咱们关注这些执行简朴算术运算运算符。这些运算符不会变化它们操作数并且(当基于数字操作数执行操作时)你总能得到你期待成果。运算符执行运算+加法。即对两个数字操作数执行相加运算。当两个操作数中至少有一种是字符串时,Flash会试图把另一种也转换成字符串,然后把两个字符串串联成一种字符串。-作为二元运算符时(简而言之,使用两个操作数),它将对两个数字操作数执行相减运算;作为一元运算符时(基于一种操作数),通过将它放置到一种操作数前面,它将产生操作数颠倒符号后成果。如果操作数是正,则成果将是负。如果操作数是负,则成果将是正。*乘法。即对两个数字操作数执行相乘运算。/除法。即对两个数字操作数执行相除运算。%求模。即对两个数字操作数执行求模运算。这会产生第一种数字除以第二个数字余数。例如:20%7将产生6。除此之外,尚有两个运算符(++和--)也执行简朴算术操作。但由于它们都变化了各自操作数,因而我决定在本节背面“赋值运算符”某些中讨论它们。尽管你可以借助Flash内建Math类执行许多额外数学运算(它们将在第二十四章中进行讨论),但你不要低估这些简朴运算符在表达式中作用。当你查看下面例子时紧记两件事情:第一,所有变量值都假定已经事先被设立为数字,第二,这些仅仅是表达式,因而,就它们自身而言,它们不能做任何事情。平均数: sum/total一半: full/2中间点: lowest+((highest-lowest)/2)打折时价格: price-(price*discount)秒(已知毫秒): milliseconds/1000尽管我没有为求模(%)运算符提供任何例子—但事实上它是你可以得到最具威力运算符中一种。它看上去似乎相称乏味,仅仅是一种余数而已。但考虑你如何来判断某个数字与否是一种偶数—它应当可以被2整除。或者说,当它被2除时,余数应当是0。类似,要检查某个数字与否可以被3整除,只需要看看当它被3除时,与否没有余数即可。求模用武之地就在这里。如果你使用anyNumber%2并且发现表达式成果为0,则你就可以懂得这个数字是偶数。19.4.3比较运算符比较运算符被用于编写求值成果为真或假表达式中。如果你还记得表达式普通位于一种更大语句中话,你就会理解为什么需要这样表达式了。例如:就单词“true”自身而言,它没有任何意义。然而,一种完整有一定意义语句也许象这样“如果你矫正视力达到1.0,那么你就可以学开车。”表达式“如果你矫正视力达到1.0”求值成果不是true就是false。要使这个语句变得更明确些,你可以说“如果表达式‘你矫正视力达到1.0’为真,则你就可以学开车。”这个例子是一种条件语句。这样语句将在本章背面“控制程序流程”中详细讨论。比较运算符就其使用形式而言很容易理解。所有这些运算符都需要两个操作数,它们构成形式是“第一种操作数运算符第二个操作数”(就象12>4,在这里12是第一种操作数,>是运算符,4是第二个操作数)。让咱们看看所有这些运算符。运算符执行运算>不不大于。即当第一种操作数不不大于第二个操作数时产生真,否则产生假。<不大于。即当第一种操作数不大于第二个操作数时产生真,否则产生假。>=不不大于或等于。即当第一种操作数不不大于或等于第二个操作数时产生真,否则产生假。<=不大于或等于。即当第一种操作数不大于或等于第二个操作数时产生真,否则产生假。==等于。即当第一种操作数与第二个操作数相等时产生真,否则产生假。===严格等于。即当第一种操作数与第二个操作数严格相等时产生真,否则产生假。!=不等于。即当第一种操作数与第二个操作数不相等时产生真,否则产生假。!==严格不等于。即当第一种操作数与第二个操作数严格不相等时产生真,否则产生假。记住,你使用这些运算符编写表达式成果总是不是真(true)就是假(false)。简朴说,它们除真或假外不能产生任何东西。假并不意味着不好,而恰恰也许是非常好。一种象这样表达式25<12是不合理—它求值成果正好就是假。用比较运算符构成表达式普通在条件或循环语句中用作条件判断。例如:if(iq>150){ trace("恭喜,你简直就是天才!") }else{ trace("抱歉,你智商还没有达到天才级。")}有趣是尽管真和假是布尔数据类型两种也许变化。然而,你可以在表达式中使用它们,就好像它们是数字同样。真是1而假是0。例如:如果变量timesCheated不不大于1,则表达式score*(timesCheated<1)求值成果为0,不论score值是多少。简朴说,timesCheated<1这个某些求值成果不是true就是false(1或0)。如果timesCheated是0,则这某些就是true,而score就被1乘,成果就还是score。如果timesCheated不不大于或等于1,则这某些就是false,而score就被0乘,成果就是0。比较运算符不但可以用于数字比较,也可以用于字符串比较。当把比较运算符用于字符串比较时,运算符会依照两个字符串中左起相相应字符ASCII码值大小进行比较,并返回成果true或false。如果两个字符串头两个字符ASCII码值相等话,则会继续比对两个字符串左起第二个字符,以此类推……,直到比出成果,或以字符更少那个字符串因再没有字符可比而结束。让咱们看下面两个字符串比较例子:trace("a">"b");输出为false。由于字符aASCII值为97,bASCII值为98,因此比较成果为false。trace("ac">"ab");输出为true。由于第一种字符串中左起第一种字符和第二个字符串中左起第一种字符ASCII值相等,因而,继续将第一种字符串中左起第二个字符和第二个字符串中左起第二个字符ASCII值进行比较,而cASCII值不不大于b,因此比较成果为true。需要清晰地是,要进行字符串比较,两个操作数必要都是字符串才行。如果其中一种为数字,而另一种是字符串,则Flash会试图把这个字符串转换为数字,如果能转换成功(如果字符串是由数字构成话),则进行两个数字比较,否则,编译器会扔给你一种undefined。trace(5>"1"); //将输出true。由于字符串1将被转换成数字1,然后进行比较,成果为true。trace(5>"a"); //将输出undefined。由于字符串a无法将被转换成数字。对于进行数字比较而言,两个操作数完全可以是对象属性,就像这样:functionPerson(age){ this.age=age;}APerson=newPerson(2);BPerson=newPerson(3);trace(BPerson.age>APerson.age); //将输出true。很值得谈谈是==、!=、===和!==四个等于运算符,你不但可以对数字、字符串、布尔值这些原始数据类型执行这些关于与否相等运算,你还可以对对象这种引用数据类型执行此类运算。当对引用数据类型进行与否相等比较运算时,只有当两个引用数据类型引用是同一种对象时,这两个引用数据类型才被以为是相等。下面例子中两个对象被以为是相等:functionPerson(age){ this.age=age;}APerson=newPerson(2);BPerson=APerson;CPerson=APerson;trace(BPerson==CPerson); //将输出true;下面例子中两个对象被以为是不相等,尽管它们属性值是相等:functionPerson(age){ this.age=age;}APerson=newPerson(2);BPerson=newPerson(2);trace(BPerson==APerson); //将输出false。通过前面trace(5>"1")例子,咱们已经懂得在Flash中,当进行比较操作数数据类型不同步,Flash会试图对操作数类型进行转换,以便使其两者可以进行比较。但这会使得当你使用==运算符进行相等比较时无法确切懂得被比较两者数据类型与否也相似。要想进行严格不进行自动数据类型转换相等比较,你需要使用===或!==运算符。当使用严格等于或严格不等于运算符时,只有当两个操作数数据类型和值都完全相等时,才被以为是相等。让咱们看下面例子:trace(true==1); //输出为true。由于经类型转换后两者相等。trace(true===1); //输出为false。由于两者类型不同。再看下面例子:trace(5!="5"); //输出为false。由于经类型转换后两者相等。trace(5!=="5"); //输出为true。由于两者类型不同。注意,等于运算符由两个等号构成。单独一种等号(=)是一种完全不同运算符。单个等号执行一种赋值操作(就象你将在本节中背面小节看到那样)。简而言之,=左边变量被赋予=右边表达式值。这事实上是创立了一种完整语句(由于它做了某些事情)而不是象==运算符所做那样创立是一种表达式。这样做不但仅意味着左边变量被变化,并且如果你目是创立一种将产生真或假表达式话,则你将发现成果将总是产生真。简朴说,age=18;将18作为值赋给age,而这个语句求值成果将是真。相反,age==18将产生true或false(依赖于age变量值)。此外,当你使用==时,age值不会被变化。第一种事例说“age当前等于18”,而第二个事例说“age等于18吗?”。19.4.4字符串运算符咱们已经懂得,当对两个操作数使用+运算符时,如果这两个操作数中至少有一种是字符串,Flash会试图把另一种也转换成字符串,然后把两个字符串串联成一种字符串。就像下面例子阐明那样:a="你好,";b="世界!";c=a+b; //当前变量c保存着字符串"你好,世界!"。再如:trace("5"+5); //输出为55。由于数字5会被转换成字符串"5",两个字符串串联成果为"55"。除了+运算符可以应用于字符串外,你也可以将比较运算符应用于字符串,其运算方式我在前一小节中已经解说过了,在此不再赘述。19.4.5逻辑运算符逻辑运算符操作数是一种或两个布尔值,运算成果也是一种布尔值。逻辑运算符“与”和“或”使用两个操作数,而“非”使用一种操作数。逻辑运算符扩展了比较运算符能力,从而可以让你做出象“age不不大于14且不大于18”(在这个事例中“且”就起到逻辑运算符作用)这样复合表达式。你事实上是在比较两个表达式,但每一种表达式成果都必要是真或假。如果你是在数字上使用这些逻辑运算符,则除0之外任何数字都被以为是真。运算符执行运算&&逻辑“与”。如果两个操作数都是真,则产生真,否则为假。||逻辑“或”。如果两个操作数中任何一种(或两个都)是真,则产生真,否则为假(即仅当两个操作数都是假是才产生假)。!逻辑“非”。当操作数(跟在!之后)是假时,则产生真,当操作数是真时,则产生假。让咱们看下面例子:if((iq>150)&&(age<14)){ trace("发现一种天才小朋友!") }上面例子中,如果智商(iq)超过150且年龄不大于14话,则在输出窗口显示一段话。再看下面例子:if((stature<1.2)||(age>70)){ trace("可以免票");}else{ trace("需要购票");}在上面例子中,如果身高低于1.2米或者年龄超过70岁都可以免票,否则就需要购票。尽管这些表达式非常容易领悟,但有某些有趣基本原则需要注意。我在表达式中包括了额外圆括号以使这些表达式更加清晰。但由于逻辑运算符优先级非常低(关于运算符优先级将在本节最后进行解说),因而,位于逻辑运算符两边表达式会一方面被求值。简朴说,age>13&&age<19将可以与(age>13)&&(age<19)同样工作,尽管它读起来也许有些困难。同步还要注意,“与”和“或”两个操作数都必要是一种完整表达式。例如:age>13&&<19将不能工作。在咱们寻常说话中,你说“年龄不不大于13且不大于19”没有任何问题,但在ActionScript中,你应当说“年龄不不大于13且年龄不大于19”。19.4.6位运算符位运算符将是你至少用到运算符,我想你们中某些人也许永远都不会需要使用它。位运算普通只在运用汇编语言或C/C++语言进行系统软件中底层开发时才会用到,在Flash中几乎没有什么用处。但不论怎么说,如果你正需要用Flash来做某些演示位运算课件,或是某些演示程控应用,那你会但愿理解什么是位运算符。所谓位运算就是指进行二进制位运算。那么,什么是位呢?咱们懂得,计算机内存是由众多被称为“字节(byte)”单元构成。每一种字节均有一种地址。而一种字节普通由8个二进制位构成,其中最右边一位被称为“最低位”,最左边一位被称为“最高位”。每一种二进制位值不是0就是1。尽管当咱们在用ActionScript编程时,如果想使用7这个数字,就直接输入7就可以了。但在咱们PC机中,这个数字7是以4个字节来存储。事实上,对于7这样整数而言,用两个字节存储更经济,但由于ActionScript中是用双精度浮点数来表达所有数字,因而,7也会占用4个字节,即用32个二进制位来表达。让咱们看看如何把7这个数字用二进制来表达。要把十进制数转换成二进制数,就用十进制数字除以2,获得别的数,第一次余数就是二进制最低位,第二次余数就是次低位(即比最低位高一位那个位),依此类推,直到被除数不大于2,最后被除数就是二进制最高位。第一次,7除以2,商为3,余数为1。因而,二进制最低位为1。第二次,3除以2,商为1,余数为1。因而,二进制次低位为1。第三次,1不大于2。因而,二进制最高位为1。这样十进制数字7转换成二进制数就是111。如此,这四个字节中最右边一种字节内容是00000111,别的三个字节内容都是00000000。当前,咱们对数字二进制表达已经基本掌握了,让咱们看看均有哪些位运算符,以及如何用这些运算符对数字进行按位运算。按位运算符中除了按位“非”(~)外都是二元运算符。运算符执行运算&按位“与”。两个操作数中,如果两个相应位都是1,则该位运算成果就为1,否则为0。|按位“或”。两个操作数中,两个相应位中只要有一种为1,则该位运算成果就为1。换句话说,只有当两个相应位都是0时,该位运算成果才为0。^按位“异或”。两个操作数中,如果两个相应位值相似,则该位运算成果就为0,否则就为1。~按位“非”。这是按位运算符中唯一一种一元运算符,用来对一种二进制数按位取反,即将0变为1,1变为0。<<左移位。用来将第一种操作数中各二进制位都向左移动由第二个操作数中指定位数。>>右移位。用来将第一种操作数中各二进制位都向右移动由第二个操作数中指定位数。>>>无符号右移位。用来将第一种操作数中各二进制位都向右移动由第二个操作数中指定位数,且左边空出位数都添上0。让咱们通过下面某些例子来更好领悟位运算符运用(为了使代码更清晰,我使用某些比较小数字,并且只用4个字节中最后一种字节来表达,由于其她三个字节都是零):a=3&5;trace(a); //输出为1。由于3是00000011,而5是00000101,按位“与”成果是:0000001100000101(&)-------------00000001使用按位“与”,你可以把某个数字某些指定位值保存下来。详细说,你可以设计一种数字B,使数字B中那些与数字A中你想要保存其值那些位相应位值为1,且让数字B中别的位值为0,然后让这两个数字进行按位“与”,则运算成果就自然保存了数字A中你想要保存那些位值。例如,有一种数字01101010,你想把其左起第2、3、6、7、8位值保存下来,则你可以这样:01101010(这就是数字A)01100111(这就是你设计数字B)(&)------------01100010(所得成果中保存了你要保存那些位值) 3和5按位“或”成果为7。a=3|5;trace(a); //输出为7。3和5按位“异或”成果为6。a=3^5;trace(a); //输出为6。使用按位“异或”可以对某个数字特定位值进行翻转。例如,如果有一种数字01110101,你想使其低4位翻转,即1变为0,0变为1,则你只需让它与00001111进行按位“异或”即可:0111010100001111(^)-------------- 01111010按位“异或”还可以实当前不借助第三个变量状况下互换两个变量值。例如,如果a为3,b为5,要互换a和b值,你可以使用下面脚本:a=3;b=5;a=a^b;b=b^a;a=a^b;trace(a);//输出为5。trace(b);//输出为3。这是由于b=b^a;这行代码相称于b=b^(a^b)=b^a^b=a^b^b=a^0=a。而a=a^b;这行代码相称于a=(a^b)^a=a^b^a=b。对于按位“非”运算符(~),需要注意是要把它和负运算符(-)区别开来。例如,对3执行按位“非”成果是-4,而不是-3。a=~3;trace(a); //输出为-4。对某个数字执行“左移位”运算,相称于对该数字进行乘法运算,左移一位,相称于对该数字乘以2,左移两位,相称于对该数字乘以22=4。就像下例所示:a=3;a=a<<2;trace(a); //输出为12。对某个数字执行“右移位”运算,相称于对该数字进行除法运算且丢弃余数,右移一位,相称于对该数字除以2且丢弃余数,右移两位,相称于对该数字除以4且丢弃余数。就像下例所示:a=9;a=a>>2;trace(a); //输出为2。需要注意是,如果原先数字最高位为0,则在右移位时,左侧空出位将被填充0,如果原先数字最高位为1,则填充1。“无符号右移位”同“右移位”基本同样,只是无论原先数字最高位为0还是1,在右移位时,左侧空出位都将被填充0。19.4.7赋值运算符在FlashActionScript中,你是使用赋值运算符来为变量赋值。赋值运算符老祖宗是等号(=)。在下面你会看到,除了=外,通过将=与其她算术、逻辑和位运算符结合到一起,可以构成许多被称为“复合赋值运算符”赋值运算符。但事实上,这些复合赋值运算符尽管会使程序代码变得更简短,有时也能使某些工作变得更容易,但更多时候,它们会使你看不清程序逻辑。在使用赋值运算符时,有一点需要注意,那就是赋值运算符左侧必要是变量或属性。这样代码是错误:5++;。运算符执行运算=赋值。将右边表达式值放入左边变量中。++递增。这是一种一元运算符,它对作为操作数变量执行加1运算后又把成果重新赋给该变量。--递减。这是一种一元运算符,它对作为操作数变量执行减1运算后又把成果重新赋给该变量。+=相加并赋值。它对左边变量值和右边表达式值进行加法运算,并把运算成果重新赋给该变量。-=相减并赋值。它用左边变量值减去右边表达式值,并把运算成果重新赋给该变量。*=相乘并赋值。它对左边变量值和右边表达式值进行乘法运算,并把运算成果重新赋给该变量。/=相除并赋值。它用左边变量值除以右边表达式值,并把运算成果重新赋给该变量。%=求模并赋值。它用左边变量值除以右边表达式值,并把所得余数重新赋给该变量。<<=左移位并赋值。>>=右移位并赋值。>>>=无符号右移位并赋值。^=按位“异或”并赋值。|=按位“或”并赋值。&=按位“与”并赋值。对于这些复合赋值运算符,我只举一种例子:counter+=10;等效于:counter=counter+10;其她复合赋值运算符用法你猜也能猜到,在此不再赘述。除了=赋值运算符外,你用最多也许就是递增赋值运算符(++)和递减赋值运算符(--)了。你经常会把它们用于对计数器变量加1或减1。就象这样:counter++;上面语句等效于counter=counter+1;。对于递增和递减运算符而言,它们有两种使用格式:预先递增(或递减)格式和滞后递增(或递减)格式。两种格式不同之处是你是将这些运算符放置在操作数前面还是背面,就象这样++counter或counter--,这会产生一点微妙但却非常重要不同。将递增运算符放置在操作数背面会递增counter但“返回”操作数在递增发生前值。当你整个语句只有一种counter++时,这个微妙差别无关紧要。然而,当你说otherVariable=counter++时,otherVariable将变成counter被递增前值。相反,如果你说otherVariable=++counter,otherVariable将变成counter递增后值。不能简朴说这两种方式哪种好,取决于你目它们都可以被较好运用。看下面例子:a=1;b=1;x=a++;y=++b;trace(x);//输出为1。trace(y);//输出为2。尽管预先递增(或递减)和滞后递增(或递减)之间差别也许看起来很微妙,但在某一特定情形中,你也许不得不使用预先递增或预先递减方式。当操

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论