本文目錄一覽:
- 1、初學Java不能理解char c =(char)(Math.random()*26+’a’)
- 2、關於JAVA中char的用法不是很明白,為什麼c
- 3、java char的用法
- 4、java中char定義的問題(才學兩天,小白問題)
初學Java不能理解char c =(char)(Math.random()*26+’a’)
首先你要知道,random()產生的隨機數的範圍是0—1,乘以26之後這個範圍就擴大到0—26(這是按我們的需要人為將其擴大);
然後,你要搞清楚數字與字元之間的轉換關係以及運算時的原理,小寫字母的ASCII碼是97—122;
現在分析一下這行代碼具體是怎麼運行的:
首先,Math.random()*26產生了一個0—26之間的數,這個就不解釋了,開始已經提到了,然後這個數要與字元a做運算,可是字元怎麼能與數字運算呢?我們知道,字元在計算機中是以ASCII碼的形式存儲的(其實也就是數字),所以,前邊的運算,就是數字與數字的運算,表面上整型數字與字元的運算;
好了,現在運算關係搞清楚了,那麼,前面產生的0—26的隨機數加上一個a(也就是加上a的ASCII碼97),就對應到26個字母中了,這個可以這樣理解,比如產生的隨機數就是0,那麼0加97還是97,就是字母a,如果隨機數是1,那加上97就變成98,對應的字母就是b,以此類推,後邊都是一樣的;
最後再將這個運算後的數字強制轉換成字元就行了:
隨機數
a的ASCII
字元(ASCII)
0******************
97***************
a(97)
1
******************97
******************b(98)
2
******************97
******************c(99)
後邊的就不寫了!
關於JAVA中char的用法不是很明白,為什麼c
char c=’a’+1中’a’是字元型常量,1是數字常量。在編譯器編譯的時候,會自動合併,不會做類型轉換。在編譯階段就完成。
char c=’a’+x中’a’是字元型常量,但x是變數,在編譯階段無法合併,只能在運行時編譯,運行時發現x是整型,’a’+x自動轉換成整型,無法直接賦值給char型。需要進行強轉。(char)(‘a’+x)
java char的用法
char在java中稱為「字元型」
佔2個位元組
字元常量是用單引號括起的一個字元
且字元常量在內存中存儲的是該字元在Unicode字符集中的排序位置,即整數
eg:char
x=’a’
內存x中存儲的是字元a在Unicode字符集中的排序位置97
因此允許將上面的語句寫成char
x=97;
java中char定義的問題(才學兩天,小白問題)
你好!
A表示字元字面量,’\uxxxx’表示十六進位unicode碼字元;B錯誤是因為沒有使用’\ixxxx’表示的字元;C錯誤是因為缺少”;D錯誤是因為char類型變數只能用一個字元;E中的0x或者0X表示一個十六進位的字面量。
打字不易,採納哦!
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/154671.html