我正在尝试将字符与 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 之间的区别。任何人都可以帮助我了解这一点吗?
最佳答案
比较运算符适用于数值操作数,或者更具体地说,适用于可转换为数值操作数的操作数 ( JLS 15.20.1 )。因此,即使在“code 1”示例中,四个字符(两个来自 s.charAt(i)
,以及两个文字)也会自动提升为 int 以进行比较。
比较的第一步是使用“二进制数值转换”使两个操作数具有相同类型( JLS 5.6.2 )。基本上,它们被加宽到可以容纳这两种类型的最窄类型,在 char
的情况下是 int
。一旦完成,这只是一个简单的、带符号的比较。
关于java - 这行代码在java中是如何执行的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34916727/