charjava
字元類型char是Java原語(也稱簡單或基本)數據類型之一。在Java中,字元不像其他計算機語言中那樣是8個二進制位的,它使用的是Unicode。Unicode定義了一個字元集合,該集合可以表示所有人類語言中的字元。因此,在Java中,char是一個無符號16位類型,取值范圍為0到65535。標準的8為ASCII字元集是Unicode的子集,其取值范圍為0到127。因此,ASCII字元依然是有效的Java字元。字元變數可以由一對單引號中的字元賦值。例如:class CharDemo{ public static void main(String[] args){ char ch; ch='A'; System.out.println("The char of ch is: "+ch); }}值得注意的是,Java中的char字元並非像C語言中char那樣可以進行算術運算,因為在Java中,char是無符號16為類型,對char變數進行算術運算是沒有意義的。但是,可以把0到65535范圍內的值賦給char變數。把上面的程序中「ch='A'」改為「ch=65」,列印出來的結果是一致的。
2. java中的char與C++中的char的區別
java的char是Unicode(UCS-2)編碼,所以是雙位元組的,C++中的wchar_t類似於此。C++里的char是指ASCII編碼的字元,就只有一個位元組了。
3. java中char類型如何接收控制台輸入
java中基本數據類型的輸入包括整形的輸入:in.nextInt();單精度浮點型:in.nextFloat();雙精度浮點型:in.nextDouble();字元串類型:in.next();in.nextLine();那麼,您是否以為char類型也如in.nextChar();這樣呢?如果您這樣寫過,那麼您一定見過這個error:「The method nextChar() is undefined for the type Scanner」。那麼char類型該如何輸入呢???
有時候需要我們用Scanner接收char類型數據,而不是接收String。比如,當我們要用到switch()語句時,就不能用String類型了。switch語句:switch關鍵字的中文意思是開關、轉換的意思,switch語句在條件語句中特別適合做一組變數相等的判斷,在結構上比if語句要清晰很多。
switch語句的語法格式為:
switch(表達式){
case 值1:
功能代碼1;
[break;]
case 值2:
功能代碼2;
[break;]
……
default:
功能代碼1;
[break;]
}
語法說明:
1、 表達式的類型只能為byte、short、char和int這4種之一。
2、 值1、值2…值n只能為常數或常量,不能為變數。
3、 功能代碼部分可以寫任意多句。
4、 break關鍵字的意思是中斷,指結束switch語句,break語句為可選。
5、 case語句可以有任意多句,是標號語句。
6、 default語句可以寫在switch語句中的任意位置,功能類似於if語句中的else.執行流程:當表達式的值和 對應case語句後的值相同時,既從該位置開始向下執行,一直執行到switch語句的結束,在執行中,如果 遇到break語句,則結束switch語句的執行。
正常使用Scanner時,可以這樣:
Scanner in = new Scanner(System.in);
char c = in.next().charAt(0);
下面是ACM中的模擬計算器的題目,以此作為示例:
import java.util.*;
public class Main {
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int a = in.nextInt();
int b = in.nextInt();
char c = in.next().charAt(0);
switch(c)
{
case '+':
System.out.printf("%d",a+b);
break;
case '-':
System.out.printf("%d",a-b);
break;
case '*':
System.out.printf("%d",a*b);
break;
case '/':
if(b!=0)
{
System.out.printf("%d",a/b);
}
break;
}
}
}
4. java char的用法
這是java編譯器的一個缺陷,
你不能使用 Unicode的換行,斜杠等字元,至於為什麼,舉個例子:
public static void main(String[] args) {
if ( false == true ) { //these characters are magic: \u000a\u007d\u007b
System.out.println("false is true!");
}
}
你可以運行上面的方法,會輸出 false is true!
java在編譯時會先將Unicode字元進行 呈現(或翻譯),然後再進行編譯 ,上面的方法會變成
public static void main(String[] args) {
if ( false == true ) { //these characters are magic:
}{
System.out.println("false is true!");
}
}
再來看你的代碼
char a='\U000d';
會變成:
char a='
';
這樣就會產生語法錯誤。
這就是原因了
下面的代碼是可以通過編譯的
char c=' ';\u000d;
可以這樣理解,代碼中的 Unicode並不能理解為單純的 字元或字元串,他們本身就是你的代碼
如:
System.out.println("Unicode print ");
這一行代碼你可以寫成
\u0053\u0079\u0073\u0074\u0065\u006d\u002e\u006f\u0075\u0074\u002e\u0070\u0072\u0069\u006e\u0074\u006c\u006e\u0028\u0022\u0055\u006e\u0069\u0063\u006f\u0064\u0065\u0020\u0070\u0072\u0069\u006e\u0074\u0020\u0022\u0029\u003b\u0020
其實都是一樣的,只是書寫和查看都很不方便 。
建議不要在代碼中書寫Unicode形式的字元,很容易產生奇怪的錯誤,而且不方便查看和修改
5. java char的長度
char類型的是占兩個位元組;
一個位元組是8位(bit),所以也可以表示為16bit。
可以通過以下方式定義一個char類型:
char c = 'a'; 實際佔一個位元組。
char d = '高';實際占兩個位元組。
擴展:計算一個字元串的位元組長度。
如:」我是gdb「占的位元組數就是2+2+1+1+1 =7個位元組。
6. java中 char='\0'表示哪種字元
java中,八進制轉義可以用\。
\0表示空字元。如cuichangyang66 舉的例子,因為c[3]--c[7]是沒有賦值的,為空,所以被替換成空格。(PS:貌似\0本來就會列印成空格)
\1表示1
\8會報錯。因為八進制只有0-7.
\9也會報錯,原因如上。
\10表示十進制的8.
public class Test {
public static void main(String[] args) {
int a=013;
char b='\13';
System.out.println(b==a);//結果true
}
}
7. java中char的用法
char在java中稱為「字元型」 佔2個位元組
字元常量是用單引號括起的一個字元 且字元常量在內存中存儲的是該字元在Unicode字元集中的排序位置,即整數
eg:char x='a'
內存x中存儲的是字元a在Unicode字元集中的排序位置97 因此允許將上面的語句寫成char x=97;
8. java中的「char」指的是什麼
char是Java中的保留字,表示一種數據類型。與別的語言不同的是,char在Java中是16位的,因為Java用的是Unicode編碼。不過8位的ASCII碼包含在Unicode編碼中,其值對應於0~127。
9. Java中char到底是多少位元組
java中的char佔2個位元組
1:「位元組」是byte,「位」是bit ;
2: 1 byte = 8 bit ;
char 在java中是2個位元組。java採用unicode,2個位元組(16位)來表示一個字元。
代碼如下:
publicclassTest{
publicstaticvoidmain(String[]args){
Stringstr="中";
charx='中';
byte[]bytes=null;
byte[]bytes1=null;
try{
bytes=str.getBytes("utf-8");
bytes1=charToByte(x);
}catch(UnsupportedEncodingExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
System.out.println("bytes大小:"+bytes.length);
System.out.println("bytes1大小:"+bytes1.length);
}
publicstaticbyte[]charToByte(charc){
byte[]b=newbyte[2];
b[0]=(byte)((c&0xFF00)>>8);
b[1]=(byte)(c&0xFF);
returnb;
}
}
結果如下:
bytes 大小:3
bytes1大小:2
10. char在java裡面是什麼意思
char是Java中的保留字,表示一種數據類型。與別的語言不同的是,char在Java中是16位的,因為Java用的是Unicode編碼。不過8位的ASCII碼包含在Unicode編碼中,其值對應於0~127。