下面的代碼片段燒焦,轉換int在Java的
int a = 1;
char b = (char) a;
System.out.println(b);
但我得到的是空的輸出。
int a = '1';
char b = (char) a;
System.out.println(b);
我會得到1作爲我的輸出。
有人可以解釋一下嗎?如果我想像第一個片段中那樣將int轉換爲char,我該怎麼做?
下面的代碼片段燒焦,轉換int在Java的
int a = 1;
char b = (char) a;
System.out.println(b);
但我得到的是空的輸出。
int a = '1';
char b = (char) a;
System.out.println(b);
我會得到1作爲我的輸出。
有人可以解釋一下嗎?如果我想像第一個片段中那樣將int轉換爲char,我該怎麼做?
int a = 1;
char b = (char) a;
System.out.println(b);
將打印出ascii值爲1的char(不可打印的開始標題字符)。
int a = '1';
char b = (char) a;
System.out.println(b);
將打印出的字符與ASCII值49(一個對應於「1」)
如果要轉換數字(0-9),您可以添加48到它和演員陣容,或類似Character.forDigit(a, 10);
。
如果你想轉換一個int
ascii值,你可以使用Character.toChars(48)
爲例。
在java a char 是 int。您的第一個片段將以默認字符編碼方案(可能是Unicode)打印出與值1相對應的字符。 Unicode字符U + 0001是非打印字符,這就是您看不到任何輸出的原因。
如果你想打印出字符'1',你可以在你使用的編碼方案中查找'1'的值。在Unicode中,這是49(與ASCII相同)。但是這隻適用於數字0-9。
你可能會使用一個字符串,而不是一個字符,並使用會更好Java的內置toString()
方法:
int a = 1;
String b = toString(a);
System.out.println(b);
這將工作無論你的系統編碼,併爲多位數工作。
對不起,但一個字符不是int,因爲它是由不同數量的字節組成的(快速參考[char-int representation - stackoverflow](http://stackoverflow.com/questions/17166393/byte-char-int -in-java的位表示))。 char可以用數字表示,你是對的,但它不是一個整數。 – morels
另外,我想你可能會發現第二行應該是「String b = Integer.toString(a);」 – Faulty
char數據類型在[java.lang.Character](https://docs.oracle.com/javase/8/docs/api/java/lang/Character.html)中定義良好,並且與int的關係和unicode代碼點和代碼單元。 – Ian
int a = 1;
char b = (char) a;
System.out.println(b);
霍拉,以及我經歷了同樣的問題,但我做了什麼是下面的代碼。
int a = 1
char b = Integer.toString(a).charAt(0);
System.out.println(b);
用這個你可以得到十進制值作爲字符類型。我用索引爲0的charAt(),因爲該字符串中唯一的值是'a',並且如您所知,該字符串中的'a'的位置從0開始。
對不起,如果我的英語沒有很好地解釋希望它能幫助你。
我的答案與jh314的答案類似,但我會更深入地解釋一下。
你應該在這種情況下,做的是:
int a = 1;
char b = (char)(a + '0');
System.out.println(b);
在這裏,我們使用「0」,因爲字符實際上是由ASCII值表示。 '0'是一個字符,用值48表示。我們輸入了(a +'0'),爲了增加它們,Java將'0'轉換爲它的ASCII值48,a是1,因此總和是49.然後我們做的是:
(char)(49)
我們鑄造int到char。等於49的ASCII碼是'1'。你可以用這種方式將任何數字轉換爲字符,比使用.toString()方法,然後通過.charAt()方法減去數字更聰明更好。
好像你正在尋找Character.forDigit
方法:
final int RADIX = 10;
int i = 4;
char ch = Character.forDigit(i, RADIX);
System.out.println(ch); // Prints '4'
還有可以從一個字符轉換回爲int的方法:
int i2 = Character.digit(ch, RADIX);
System.out.println(i2); // Prints '4'
注意,通過改變RADIX
您還可以支持十六進制(基數16)和任何基數高達36(或Character.MAX_RADIX
,因爲它也被稱爲)。
@ProgrammingNub定義「int的值」。你不想讓它打印數字4嗎?或者你想打印int的Ascii值,以便'65'打印'A'?因爲我的答案顯示了這個問題要求的預期行爲。看到https://ideone.com/09LAFR –
沒有人在這裏回答真正的「問題」:你正在將int轉換爲char;在ASCII表中,01的十進制值是「開始標題」,一個非打印字符。嘗試查找一個ASCII表並將33和7E之間的整數值轉換;那會給你看角色。
如果你想一個字符轉換成其相應的整數,你可以這樣做:
int a = (int) 'a';
char b = (char) a;
System.out.println(b);
這是因爲在ASCII有不能正常打印一些項目。
例如,數字97到122是對應於小寫字母a到z的整數。
對不起,但你只是複製粘貼舊的答案... – Miki
當你鍵入投整數燒焦它會返回INT的ASCII值(一旦經過ASCII表更好地理解)
int a=68;
char b=(char)a;
System.out.println(b);//it will return ascii value of 68
//output- D
排序......'char'是一個UTF-16代碼單元。 68作爲UTF-16代碼單元是唯一代表Unicode代碼點的代碼單元[U + 0044](http://www.fileformat.info/info/unicode/char/0044/index.htm)。 System.out會將文本的編碼更改爲默認編碼(可能與程序運行的終端/控制檯相匹配)。 println需要一個字符並嘗試對其進行編碼。由於char是一個完整的代碼點,它可以嘗試。由於U + 0044幾乎是所有字符集中的一個字符,所以應該成功地將它送到未加入的終端。與ASCII無關。 –
,如果你想打印基於ASCII字符在他們的ascii代碼上,不想超越(比如unicode字符),你可以將你的變量定義爲一個字節,然後使用(char)轉換。即:
public static void main(String[] args) {
byte b = 65;
for (byte i=b; i<=b+25; i++) {
System.out.print((char)i + ", ");
}
BTW,對於字母的ASCII碼 'A' 是65
如果我們談論的是類類型 - 不是基本類型,下面的技巧有許多工作要做:
Integer someInt;
Character someChar;
someChar = (char)Integer.parseInt(String.valueOf(someInt);
public class String_Store_In_Array
{
public static void main(String[] args)
{
System.out.println(" Q.37 Can you store string in array of integers. Try it.");
String str="I am Akash";
int arr[]=new int[str.length()];
char chArr[]=str.toCharArray();
char ch;
for(int i=0;i<str.length();i++)
{
arr[i]=chArr[i];
}
System.out.println("\nI have stored it in array by using ASCII value");
for(int i=0;i<arr.length;i++)
{
System.out.print(" "+arr[i]);
}
System.out.println("\nI have stored it in array by using ASCII value to original content");
for(int i=0;i<arr.length;i++)
{
ch=(char)arr[i];
System.out.print(" "+ch);
}
}
}
請提供解釋,而不僅僅是代碼轉儲。 –
儘管這段只有代碼的帖子可能會回答這個問題,但請爲此解釋原因。這將有助於未來的用戶評估他們的情況。 –
確保整數值是字母/字符的ASCII值。
如果沒有,然後讓它。
for e.g. if int i=1
然後添加64到它,使之成爲 'A' 65 = ASCII值 然後使用
char x = (char)i;
print x
// 'A' will be printed
「*轉換一個int爲char *?」 也許'B =(炭)('0'+ a)',但只適用於'0 <= a <= 9'。 – johnchen902
十進制值01是非打印字符;它工作正常。 – apraetor