51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

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

Selenium Web Driver自动化测试(java版)系列上半部分(2) - java变量和类型转换(2)

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

    连续签到: 1 天

    [LV.1]测试小兵

    跳转到指定楼层
    1#
    发表于 2018-8-17 10:27:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    [图片上的字如果看不清楚请点击放大]上篇说了,这些变量类型都是"看上去的",因为某些情况下你不指定计算机是不懂的。来看这个例子:


    发现了吧?他们打印出来的都是5,光从终端并看不出有任何不同。但实际上一个是整型,一个是字符型。有人说怎么5还可以当字符型?别急,看我再改一下:

    我把c = 'a'改成c = 65。有人说你这不是字符型变量么?怎么能存个整数呢?这肯定有错误。咱们先别急着下结论,打印下试试:

    我们惊奇地发现程序没报错,还打印出来个A。为什么呢?因为它打印出来的是这个十进制数65所对应的字符。点击[ASCII](http://www.asciitable.com)网站,我觉得没毒。上面有好多十进制,二进制,十六进制还有一些字符,我们可以看到65对应的是A。这些对应字符的数叫作ASC码。咱们不用深究这个ASC码是什么,只要记住它就是用来表示字符的二进制十进制十六进制的一个数就行了。

    那这么说这个65就真的是个数啰。确实,现在出现了一个很有意思的现象:等号左边是字符类型的,等号后边是一个数,回到刚才的问题,怎么能把一个数赋给一个字符呢?在java中,这个是可以被允许的,因为变量的类型是可以转换的,刚才演示的就是一个简单的把整型转成字符的例子。我们再来看看其它的。
    比如整型和浮点型相互转换:int <-> float

    重新编译执行一下,f = 10.0。因为f是单精度浮点型,要用小数表示:

    那我要是想反过来呢?多加几行代码:

    我们发现程序在a = f那行报错了:

    错误信息的意思是从float转成int可能会丢精度。看清楚了吧,整型可以转成浮点型,但反过来就不行了。为什么会这样?因为我们看到的这种转换方式在java里被称为自动转换,而自动转换是隐形的。也就是你不用控制它,它自己转。自动转换需要遵循一个原则:只能是低精度转成高精度,而高精度不能自动转成低精度。精度高低的顺序我已经给大家总结出来了,从低到高依次是byte,short,int,long,float,double,你要是想自动转换必须遵循这个原则。所以int整型可以转成float浮点型,但反过来就不行。另外,布尔型就俩值true和false,asc码也变不成数,不用考虑。

    咱们再举个例子:

    编译执行一下,会发现又报错了,还是一样的错误原因 - 可能会丢精度。有些人要抓狂了,说没毛病啊,float是浮点型,3.4是个小数,怎么就丢精度呢?先消消气,java规定,单精度浮点型变量的值后面要加个f,双精度则不用。这也是float和double在声明时的区别。你如果在3.4后面不写f,就意味着3.4是一个double类型的值,而按照自动转换原则double类型不能直接转换成float类型,所以就报错了。看看吧,防不胜防。把3.4后面补个f,程序通过。


    那如果我就想把高精度转成低精度可不可以?没问题,但必须使用强制转换。比如下面这个例子:

    我这里把f前面加一个(int),我们再执行一下,发现这次没问题了,a = 3:

    但我们同时也发现原来的3.4赋给a后损失了一些精度。对吧?没办法,因为你是把一个高精度强制转成低精度,必然要付出代价。

    好了,这就是java变量和类型转换的基本概念。没事声明几个变量打印出来看看,多动手。下篇文章我们介绍[java运算符](http://localhost:4000/2016/03/24/selenium/java/3-java-operators/)。

    本篇知识点及注意事项:
    1. 变量必须声明才能使用,并且给变量赋值后才能打印;
    2. 变量之间可以进行类型转换,低精度可以通过自动转换转成高精度,但高精度必须进行强制转换才能转成低精度。


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

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-26 23:03 , Processed in 0.059828 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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