『壹』 java 的byte數組與漢字輸出
String在Java是字元數組,他的字元是使用Unicode字元來構建的。
String s=new String(byteArray);
是把數組byteArray[]的值初始化給了s,所以s是一個把byte類型的數據轉化為Unicode字元數組的字元串。
『貳』 java中的byte只有兩個位元組,才一萬多個字元,為什麼可以保存漢字
byte 只有一個位元組,java表示字元使用的 char 類型 這個是兩個位元組5萬多個字元,常用漢字才3萬多。
『叄』 java一個漢字佔3個byte么
String name = 『漢字';
System.out.println(name.getBytes('gbk').length); 結果是4
System.out.println(name.getBytes().length); 結果是6
實際上在gbk編碼中每個漢字是2個位元組。
UTF-8編碼是變長的,1—6個位元組。其中漢字編碼,是3個或4個位元組
你的問題可能是因為系統編碼不一樣。引起的
ps:雙引號在答題時不能正常顯示,所以用的是單引號
『肆』 java中一個漢字 位元組
你這個問題涉及到漢字的生成原理,漢字是由區碼和位碼組成的,在組成一個漢字之後,把這兩個位元組認為是一個字元,而在計算長度的時候又是看有幾個字元,所以「國人」的length=2了。
您的進步是我最大的動力,如果你覺得我回答的合理的話,請給我多加分。謝謝,如果不明白的話,請給我留言。大家相互學習啊! 加油!
『伍』 java byte位元組里有一個漢字 怎麼把它輸出來 用char強轉了 打出來是號
你用什麼讀的 你直接用BufferReader 例如:
public static void main(String[] args) {
String result = "";
BufferedReader bre = null;
try {
bre = new BufferedReader(new FileReader("D:/test/test.txt"));//此時獲取到的bre就是整個文件的緩存流
while ((result = bre.readLine())!= null) {// 判斷最後一行不存在,為空結束循環
System.out.println(result);//原樣輸出讀到的內容
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
希望能幫到你!
『陸』 java中byte是什麼類型
java中byte是位元組型。
java byte作為最小的數字來處理的,因此它的值域被定義為-128~127,byte的用作計數的時間遠少於用表達基本內存單元的時間。
比如從stream里讀入一個雙位元組字元,我們先收到2個byte。為了把byte轉換成適當的形式,需要對byte值做一些比較,比如判斷字元集要比較其是否在某個編碼范圍內。
(6)javabyte漢字擴展閱讀:
Java看起來設計得很像C++,但是為了使語言小和容易熟悉,設計者們把C++語言中許多可用的特徵去掉了,這些特徵是一般程序員很少使用的。
例如,Java不支持go to語句,代之以提供break和continue語句以及異常處理。Java還剔除了C++的操作符過載(overload)和多繼承特徵,並且不使用主文件,免去了預處理程序。
『柒』 java byte是什麼類型
byte屬於java里的基本數據類型,位元組型,2個位元組相當於一個字元,通俗的說2個位元組可以是一個漢字,可以是一個字母。
『捌』 java中如何計算一個字元串的byte長度(一個漢字多少字元)
中文並不一定是占兩個位元組的,具體佔多少位元組是跟具體的編碼方式相關的。
比如說:GB2312、GBK、GB18030
編碼是佔用兩個位元組的,但是
UTF-8
編碼的話至少需要佔用三個位元組。
有一個簡單方法,就是把大於
0xff
的字元都作為兩個字元(當然是在
GBK
環境下)
Java
code
publicstaticint
count(String
str)
{
if(str
==null||
str.length
==0)
{
return0;
}
int
count
=0;
char[]
chs
=
str.toCharArray();
for(int
i
=0;
i
<
chs.length;
i++)
{
count
+=
(chs[i]
>0xff)
?2
:
1;
}
return
count;
}
或者你直接使用
int
len
=
str.getBytes("gbk");上面代碼假設你的資料庫編碼格式是
GBK
的,而不是
UTF-8
的,如果是
UTF-8
的話,上面的代碼無效!1位元組等於8比特,一個字母是1位元組,而一個漢字要用2個位元組。一個漢字=2個字元