[英](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.