[英](char); What is the purpose of this code?
多谢您的宝贵时间,
对于以下代码(类的方法),我不确定(char)应该做什么。 arg 1有一个char
,最后我也得到一个字符。
那么, (char)
像(char)
一样工作? 如果它更常用,我想进一步了解它,因此,如果您能告诉我具体的位置,我将不胜感激。
static B calculer(B arg1, int arg2) {
arg1.b = (char)(arg1.b + arg2);
}
Java字符是该字符实际持有Unicode代码点的幕后数字。 Java字符是一个无符号的16位数字(UTF-16)。 因此,您可以通过多种方式将它们视为数字。 这是将arg2
添加到arg.b
的Unicode值中。
例如,如果arg.b
为'a'
(代码点为十进制97),而arg1
为10
,则返回方法arg.b
现在为'k'
(代码点为十进制107)。
由于Java在数值运算过程中会提升数据类型,因此在将int添加到char后,表达式的结果是int而不是char。 字符被提升为整数。 因此,需要使用强制转换将结果重新转换为char以进行分配。
这叫做铸造。 强制转换的作用是将其他一些数据类型(例如int)转换为字符。 我认为这是Java代码? 因此,您想了解有关Java字符及其处理这种情况的方式的更多信息。
它将(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
,而不是通常的char
。
范例 :
我写了这段代码(其中'a'
代表arg1.b
而5
代表arg2
:
char x = (char)('a' + 5);
System.out.println(x); // displayed 'f'
之所以显示'f'
是因为它将'a'
和5
在一起,它被解释为97 + 5(97是'a'
的ASCHII值,或者本质上是它的int
值),然后保留(char)(102)
,然后将其解释为'f'
( 102
的char
值)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.