感谢您的时间,
对于以下代码(类的方法),我不确定(char)应该做什么。 B arg 1有char
,最后我也得到了一个字符。
那么,(char)
是否像演员一样工作?如果它更常用,我想了解更多关于它的信息,所以如果你能告诉我在哪里看具体我会很感激。
static B calculer(B arg1, int arg2) {
arg1.b = (char)(arg1.b + arg2);
}
答案 0 :(得分:2)
Java字符是角色实际拥有Unicode代码点的幕后数字。 Java char是无符号的16位数(UTF-16)。因此,您可以通过多种方式将它们视为数字。这样做是将arg2
添加到arg.b
的Unicode值。
例如,如果arg.b
为'a'
(代码点为十进制97)且arg1
为10
,则返回方法arg.b
现为'k'
1}}(代码点是十进制数107)。
因为Java在数值运算期间提升数据类型,所以在向char添加int之后,表达式的结果是int而不是char。 char被提升为int。因此需要使用强制转换将结果重新转换为赋值的char。
答案 1 :(得分:0)
它被称为铸造。什么强制转换会将其他一些数据类型(如int)转换为字符。我认为这是Java代码?所以你想要更多地了解java字符以及它处理这种情况的方式。
答案 2 :(得分:0)
它将(arg1.b + arg2)
投射到char
。
如果有多种数据类型可以解释,则将其转换为您想要的数据类型。
例如,如果我尝试将数字97显示为char
而不是通常被解释为的int
97
,我会将其视为这样:
System.out.println( (char)97 ); // will display 'a', instead of 97
我可以将a
显示为97
,也可以将其展示给int
。
在您的情况下,它会将(arg1.b + arg2)
解释为char
,而不是通常的情况。
示例强>:
我写了这段代码(其中'a'
代表arg1.b
而5
代表arg2
:
char x = (char)('a' + 5);
System.out.println(x); // displayed 'f'
它显示'f'
,因为它将'a'
和5
加在一起,它被解释为97 + 5(97是'a'
的{{3}}值,或其本身的int
值,然后保留(char)(102)
,然后将其解释为'f'
(char
的{{1}}值)