如何在java中执行此行?

时间:2016-01-21 06:24:07

标签: java

我正在尝试将字符与ascii值进行比较,因为我正在使用波纹管代码。它工作正常,但我有一个疑问。如下波纹线已被执行。 我没有将s.charAt(i)转换为int,但是它与ascii值的比较。

代码1:

if(s.charAt(i)>='a' && s.charAt(i)<='z'){
}

代码2:

if((int)s.charAt(i)>='a' && (int)s.charAt(i)<='z'){
}

上面两个代码的工作方式相同。我需要知道code1和code2之间的区别。任何人都可以帮我理解这个吗?

1 个答案:

答案 0 :(得分:2)

比较运算符处理数值操作数 - 或者更具体地说,可以转换为可以转换为数字操作数(JLS 15.20.1)的操作数。所以即使在你的&#34;代码1&#34;例如,为了进行比较,四个字符(两个来自s.charAt(i)和两个文字)会自动提升为int。

比较的第一步是使用&#34;二进制数字转换&#34;使两个操作数具有相同的类型(JLS 5.6.2)。基本上,它们被扩展为可以容纳这两种类型的最窄类型,在char的情况下是int。一旦完成,它只是一个简单的签名比较。