我正在尝试将字符与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之间的区别。任何人都可以帮我理解这个吗?
答案 0 :(得分:2)
比较运算符处理数值操作数 - 或者更具体地说,可以转换为可以转换为数字操作数(JLS 15.20.1)的操作数。所以即使在你的&#34;代码1&#34;例如,为了进行比较,四个字符(两个来自s.charAt(i)
和两个文字)会自动提升为int。
比较的第一步是使用&#34;二进制数字转换&#34;使两个操作数具有相同的类型(JLS 5.6.2)。基本上,它们被扩展为可以容纳这两种类型的最窄类型,在char
的情况下是int
。一旦完成,它只是一个简单的签名比较。