首頁> Java> java教程> 主體

har[] 和 String 類型佔用位元組大小問題

(*-*)浩
發布: 2019-08-08 17:15:52
轉載
2058 人瀏覽過

har[] 和 String 類型佔用位元組大小問題

在C 語言中

1、char a[10] = {"China"} 中,這個a 佔用多少位元組?

答案:佔用 10 個位元組。

解析:上面程式碼對a 做了賦值的操作,

a[0]='C' ,a[1]='h' ,a[2]='i' ,a[3]='n' ,a[4]='a' ,a[5]='\0',a[6]='\0',a[7]='\0',a [8]='\0',a[9]='\0'

所以,它佔用的是10 個位元組。

2、如果單指 ”China“ ?

答案:共 6 個位元組。 China 佔 5 個字節,最後以 '\0' 結束,佔 1 個位元組。

在 Java 語言中

1、String s = "China"; 佔多少位元組?

答:佔 5 個位元組。

System.out.println(Charset.defaultCharset());//获取ide默认编码类型 String s = new String("China".getBytes()); byte[] b = s.getBytes(); System.out.println("" + b.length);
登入後複製

以上程式碼,可以輸出 "China" 所佔的位元組長度為 5

2、String s = "中國"; 佔多少位元組?

答:如果是 漢字 的情況需要考慮編碼。

(1)GBK 編碼(ide預設)時,每個漢字佔用 2 個字節,那麼中國佔 4 個位元組。

(2)UTF-8 編碼時,每個漢字佔用 3 個位元組,那麼中國佔用 6 個位元組。

3、轉碼問題,GBK 轉 UTF-8 時,位元組佔用會變大嗎?反過來呢?

//获取的是 UTF-8编码 System.out.println(Charset.defaultCharset()); String s; try { s = new String("中国".getBytes(),"GBK"); byte[] b = s.getBytes(); System.out.println("" + b.length); } catch (UnsupportedEncodingException e) { e.printStackTrace(); }
登入後複製

如上程式碼是:UTF-8 轉 GBK 編碼格式,s 長度從 6 個位元組變成 9 個位元組。

s 內容變化:中國 —> 涓浗

因為目前編碼是 UTF-8,轉碼之後變成了 3 個文字,佔用 9 個位元組。然而,反過來的情況是這樣的:

中國(gbk) —> ?й? (utf-8)

s 長度從4位元組變成了4位元組,雖然長度沒有改變,但文字已經改變。這裡的 ?佔用 1 個位元組

以上是har[] 和 String 類型佔用位元組大小問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:csdn.net
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!