在java中的字符铸造

时间:2017-08-23 21:42:49

标签: java casting

在我的java代码中我有

result.append((num%b2)>=10?((char)('A'+((num%b2)-10))):(num%b2));

其中num和b2都是整数。当num%b2大于或等于10

((char)('A'+((num%b2)-10)))

附加到stringbuilder结果。但是,它不是附加一个char,而是附加一个int值,其中包含我想要返回的char的ASCII号。为什么它不会返回char?

2 个答案:

答案 0 :(得分:1)

因为(num%b2)int

条件表达式的类型是可以表示两个操作数的通用类型。所以,如果" true"操作数是char但是" false"操作数是intsomeCondition ? someChar : someInt的结果是int

如果你把它写成一个普通的if-else语句,那就更清楚了:

if (num%b2 >= 10) {
  result.append((char)('A'+((num%b2)-10)));
} else {
  result.append(num%b2);
}

答案 1 :(得分:0)

只需将其转换为字符串,它就会将其附加为字符串:

git rm