【发布时间】:2021-06-11 09:22:00
【问题描述】:
在 Java 中,您可以使用 char 值或 ASCII 值将 char 转换为 int ,反之亦然。如果将 int 变量转换为 char,则会得到相应的字符。所以,下面的 sn-p 将打印 'a':
int x = 97;
System.out.println( (char)x ); // 'a'
但是当我这样做时:
char ch = 'a', ch2 = 97, ch3 = 'b';
System.out.println( ( (ch+=1) > ch2 ) ? (char)ch2 : (int)ch3 );
编译器会打印出 int 值 97,而不是 'a',即使“真面”上的三元运算符返回值是 (char)ch2。所以我期待的是 'a' 而不是 97。为什么它打印的是 97 而不是 'a'?
【问题讨论】:
标签: java casting conditional-operator primitive primitive-types