请在下面的代码中解释二进制数字促销的逻辑。
boolean flag = 'A' < 'a';
System.out.println(flag);// prints true.
答案 0 :(得分:3)
在Java中,char
原始数据类型被定义为16位Unicode字符,其值为十六进制范围0x0000
到0xFFFF
。比较两个char
值时,它是使用的16位十六进制值。
在您的具体案例中,A
由0x0041
和a
代表0x0061
,因此'A' < 'a'
将评估为true
。< / p>
答案 1 :(得分:0)
当您比较两种不同类型(通常是数字)时,它会被称为促销,其中一种将转换为另一种,以便进行比较。像:
int x = 5;
double y = 6;
if (x < y)
...
在Java int
和double
中可以进行比较。在这种情况下,int
将隐式转换为double
。
在您的情况下,没有促销活动。将存储在内存中的字符作为数字(在Java中,它基于UTF-16标准并存储为正好2个字节,如short
)和'A' < 'a'
整数中的字符进行比较。