簡體   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