51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2008|回复: 0
打印 上一主题 下一主题

Selenium Web Driver自动化测试(java版)系列上半部分(3) - java运算符

[复制链接]
  • TA的每日心情
    开心
    2018-8-16 07:28
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    跳转到指定楼层
    1#
    发表于 2018-8-17 15:27:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    上次介绍了变量和类型转换,但都是单个的变量,没什么价值,这篇我们就让变量运算起来。变量参与运算,这就需要运算符。Java里面有三种运算符,最基本的运算符和数学符号一致,加减乘除,还有一个用百分号表示求余数的,又叫做取模。这五种方式就跟算算数一样,所以并称为算术运算符。

    +号和-号不说了,*号代表乘法,注意乘号不是x,你要是写x系统就默认你创建了一个叫x的变量,就错了。"/"代表求商,"%"是求余,又叫取模。有时候会看到取模这俩字,指的就是求余数。创建一个叫Operators.java的文件,然后复制下面的内容:

    声明int a = 5; int b = 6; int c; c = a + b; 然后打印c。猜的到结果吧?很简单,得11。这是咱们第一次让变量之间交流,那它的运行原理是什么样呢?看我画张图。你或许注意到我一直在讲内存里是怎么工作的,不要嫌烦,现在看起来很简单,但我发现很多朋友如果不深刻理解这块儿,以后讲复杂的过程理解起来就有点吃力。咱们不怕慢,一定把基础搞好。而且测试员本身就要测一切,包括内存,大家一定别忽视。

    内存自动开辟了两个空间分别存a和b的值,然后又开辟了一个空间准备存c。c一开始是空的,a和b的值现在是十进制的数,但运算的时候其实是分别转换成二进制码后相加,最后把结果存到c这个空间里。这就是a+b的原理。那如果我算a*b呢?如果a%b呢?一样的道理:

    算出来c等于30。简单说说,第一句话int a = 5, b = 6;,声明同一类型变量的时候可以写在同一行,中间用逗号隔开。而且只用在第一个前面加上类型就可以了。第二句话int c = a*b;,可以边声明新变量边用一个计算结果赋值。这些都是经验,没事多练多编译,你会发现很多简便的写法。

    当然,有时候不止两个数进行运算,好几个数运算的时候可能有加减有乘除,比如a+b*c/d-e.这种情况下会怎么样?先做哪步?答案跟咱们小学学数学时一样 – 先乘除后加减。那如果是同级呢?比如这里乘和除是同级的,答案是同级从左到右依次计算。我们小学数学里可以加括号,对吧?那我们加个括号呢?优先级又变了。还是跟数学一样,括号优先。先算a+b。

    计算结果是-25,这就是简单的四则运算,你也可以试试求余数。现在我把c = a + b那个例子改一下,写成int a = 5; int b = 6; a = a + b; 这里面没有c了:

    打印一下,a变成了11。这种情况和上面的a+b不一样,这次是最后是把11再赋回给a,这样a就存11了,b还是6。内存图就变成这个样子:

    假如我们不停地执行a=a+b,第二次a等于17,b还是6。再执行一遍:a等于23,b还是6。执行到这里我们是不是发现,如果我们一直执行a=a+b,a会一直增加,而增加的值就是b的值?b是不是感觉好像一个固定的增长幅度?

    所以,像a=a+b这种情况有一个更简单的写法:a+=b。左边是最终要改变的值,右边是幅度。比如咱们这个例子中a从5变到11,b是5变到11的幅度,上面的程序可以简写成:

    这就是咱们的算术运算符的第一个补充。当然,有+=,就有-=,*=,/=。大家没事可以自己去试试。再举个例子,这次我把b都去掉了:

    这里面的a值最后得6,当然,你也可以写成a += 1。但因为幅度是1,所以这种情况还有一种福利写法:a++和++a。++默认就是+1。注意,幅度一定是1,否则不能这么写。你要是a = a + 2,只能老老实实写a += 2。看看下面的a++和++a举例,它们都打印出6:



    那a++和++a有区别么?我还是用例子解释,先说++a,我再把b请回来:



    打印结果b等于6。而a++呢?



    看,b的值这次等于5了。为什么明明单独写a++和++a结果一样,但赋给b就不一样了呢?原因在于操作的顺序不同!b = ++a的内存工作原理是先加后赋值。先让a自增1,然后把结果赋给b,相当于这样:

    而b = a++则是先把a的值赋给b,再让a自增1,顺序正好相反:

    注意,只有++和--,没有别的了,"//"不是除的意思,而是注释。

    这就是算术运算符的概念。第二种叫做关系运算符。关系运算符包括>,<,==,!==,>=,和<=。你会发现怎么等于号怎么是==这么写的呢?小学数学老师可没这么教过我。其实就是与变量赋值区别开。比如int a = 5,代表把5赋给a,已经用了咱小学数学用的等于号了,没办法,不能混淆,于是等于就变成了==。而等号前面加一个!就代表不等于。

    关系运算符通常和第三种运算符,也就是逻辑运算符一起用。咱们一起讲。逻辑运算符包括三个关键字:与,或,非。与的意思是"同时",用&&表示;或的意思是"或者",用||表示;非的意思是"反过来",用!表示。

    这三个关键字一般用在条件判断里,条件出现在这三个关键字的前后。条件判断咱们还没讲到,下篇讲。我们可以先预热一下,讲讲什么是条件。看我这里的例子:

    if的意思是如果,括号里的就叫条件。咱们例子中需要条件判断来讲与或非,我就先给大家演示一下:

    我现在程序里写if(a == b && a < 6),翻译过来就是如果a等于b并且a<6,打印出我是条件1;if(a > b || b ==5),翻译过来就是如果a大于b或者b等于5,打印出我是条件2;if(!(a>=b)),翻译过来就是a>=b反过来,那反过来就是a<b对不对?如果满足打印我是条件3。很明显,只有前两个条件满足,所以只打印前两句话。大家先好好看看这几个例子,下篇文章我还会详细讲条件判断。

    这篇文章的源代码在[Operators](https://github.com/cslm/cslm.sel ... b902e28c7f39ef4727a)中。再留几个练习题吧:
    1. 我们发现这节课讲的几个例子里的变量都是整型,那如果是两个字符相加呢?或者不一样类型的数相加呢?回想一下上节课讲的转换过程,然后计算下面几个算式:
    1)20.8+5;
    2)10+6%5-10;
    3)(10+6.8)*3/6(要求结果四舍五入);
    4)'A'+'C';

    2. 刚刚我们只罗列了算数运算符的优先级,如果再算上关系运算符和逻辑运算符呢?请自己上网查找并总结。下篇文章我们讲java的流控机制。

    本篇知识点及注意事项:
    1. 变量之间可以进行四则运算;
    2. a=a+b可以写成a+=b,同理也有-=,*=,/=;
    3. a=a+1可以写成a+=1,也可以写成a++或++a;
    4. 只有++或--代表自增1或自减1,没有自乘1这么一说,**是错的。而且也没有自除1,//代表注释。


    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏1
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-9 03:55 , Processed in 0.062391 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表