繁体   English   中英

(炭); 该代码的目的是什么?

[英](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),而arg110 ,则返回方法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

我可以显示a97通过将其转换成一int为好。

在您的情况下,它将(arg1.b + arg2)解释为char ,而不是通常的char

范例

我写了这段代码(其中'a'代表arg1.b5代表arg2

char x = (char)('a' + 5);
System.out.println(x); // displayed 'f'

之所以显示'f'是因为它将'a'5在一起,它被解释为97 + 5(97是'a'ASCHII值,或者本质上是它的int值),然后保留(char)(102) ,然后将其解释为'f'102char值)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM