[英]Java casting from int to char acting weird
我試圖將xored int用於表示字符。 如果我只轉換一個int,它會被轉換為一個正確的char。 但如果我xor兩個字符並轉換他們的結果我得到整數值。 為什么?
public class ClassToTestSnippets {
private static ClassToTestSnippets ctts;
public static void main(String[] args) {
ctts = new ClassToTestSnippets();
ctts.testThisMethod();
}
public void testThisMethod() {
System.out.println((char) 244^128);
System.out.println((char) 116);
System.out.println(244^128);
}
}
它首先將244轉換為字符,然后嘗試使用128進行xor,這相當於您的第三個print語句。
System.out.println((((char) 244) ^128));//this is how it interprets.
System.out.println((char) 116);
System.out.println(244^128);
由於運算符優先 。
首先, 廣播將被執行,則int
將被隱式轉換為char
。
您必須添加括號,以便XOR的結果而不僅僅是第一個參數將轉換為char。
System.out.println((char) (244^128));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.