『壹』 java中的char 類型占幾個位元組
首先,java中的一個char的確是2個位元組。java採用unicode,2個位元組來表示一個字元。 一個數字或英文或漢字都是一個字元,只不過數字和英文時,存儲的2個位元組的第一個位元組都為0,就是浪費了點空間。存漢字就占滿了2個位元組。
『貳』 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
『叄』 Java中char到底是多少位元組
java中的char佔2個位元組
1:「位元組」是byte,「位」是bit ;
2: 1 byte = 8 bit ;
char 在java中是2個位元組。java採用unicode,2個位元組(16位)來表示一個字元。
代碼如下:
public class Test {
public static void main(String[] args) {
String str= "中";
char x ='中';
byte[] bytes=null;
byte[] bytes1=null;
try {
bytes = str.getBytes("utf-8");
bytes1 = charToByte(x);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("bytes 大小:"+bytes.length);
System.out.println("bytes1大小:"+bytes1.length);
}
public static byte[] charToByte(char c) {
byte[] b = new byte[2];
b[0] = (byte) ((c & 0xFF00) >> 8);
b[1] = (byte) (c & 0xFF);
return b;
}
}
結果如下:
bytes 大小:3
bytes1大小:2
『肆』 請問JAVA中char佔多少位元組數
JAVA中char佔2個位元組。
第2個問題:JAVA因為有虛擬機,無論是在WINDOWS,還是在LINUX等系統中,只要有JAVA虛擬機,就是一樣的。
『伍』 誰跟我說說在C,C++,JAVA中int,char,各占幾個位元組好么
C/C++中的int佔4個位元組,char佔1個位元組;Java中的int佔4個位元組,char卻佔1~6個位元組,要根據使用的編碼和具體字元而定。
目前在一般的電腦中,int佔用4位元組,32比特,數據范圍為-2147483648~2147483647,也就是-2^31~2^31-1。
C/C++,char是單字元數據類型,只佔1個位元組。
Java中,內碼(運行內存)的char使用UTF16的方式編碼,一個char佔用兩個位元組,但是某些字元需要兩個char來表示。所以,一個字元會佔用2個或4個位元組。
Java中,外碼中char使用UTF8的方式編碼,一個字元佔用1~6個位元組。
(5)char幾個位元組java擴展閱讀:
Java和C++的差異:
Java看起來設計得很像C++,但是為了使語言小和容易熟悉,設計者們把C++語言中許多可用的特徵去掉了,這些特徵是一般程序員很少使用的。例如,Java不支持go to語句,代之以提供break和continue語句以及異常處理。
Java還剔除了C++的操作符過載(overload)和多繼承特徵,並且不使用主文件,免去了預處理程序。因為Java沒有結構,數組和串都是對象,所以不需要指針。
Java能夠自動處理對象的引用和間接引用,實現自動的無用單元收集,使用戶不必為存儲管理問題煩惱,能更多的時間和精力花在研發上。
『陸』 Java中char到底是多少位元組
一個char佔多少位元組是跟字元集編碼有關的,unicode編碼中一個char占兩個位元組,java 是用unicode編碼。但是常見的資料庫中可能被設置為用utf-8,而utf-8一個字元佔用的位元組長度可能是一個字元、兩個字元或三個字元,英文字元abc佔用一個位元組,中文字元佔用三個位元組。UTF8編碼的字元中,第一個位元組ASCII值大於等於224的,其與之後的2個位元組一起組成一個UTF8字元,第一個位元組ASCII值大於192等於小於224的,其與之後的1個位元組組成一個UTF-8字元,第一個位元組ASCII值小於192的,其本身成為一個UTF8字元。
『柒』 Java中char到底是多少位元組
Java中無論是漢字還是英文字母都是用Unicode編碼來表示的,一個Unicode碼是16位,每位元組是8位,所以一個Unicode碼占兩位元組。但是英文字母比較特殊,源自於8位(1位元組)的ASCII嗎,於是在Unicode碼僅使用了低8位(1位元組)就可以表示,高8位的話不使用也無所謂。所以
char
c='a';
System.out.println(c.getBytes().lenth()),得到的是1(位元組)
但漢字就完整地使用了16位(2位元組)的Unicode,所以
char
c='中';
System.out.println(c.getBytes().lenth()),得到的是2(位元組)
綜上,c='a'在內存中確實只佔1位元組,但這不意味著String
s="abc"在內存中只佔3位元組。應該這么說,String
s="abc"至少在內存中佔3位元組。這是因為char是基本數據類型,而String確是對象類型。對象是一種很復雜的數據類型,你要看一個對象具體佔多少位元組,可以把這個對象序列化後存入一個文本文件來看它具體佔用了多少位元組,當然這也不是精確的,因為序列化需要寫入少量系統信息,但大致是對的。