久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長(zhǎng)資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      char類型要占幾個(gè)字節(jié)

      char類型在C或C++中占1個(gè)字節(jié),在java中占2個(gè)字節(jié)。char用于C或C++中是定義字符型變量的,而char數(shù)據(jù)類型是一種整數(shù)類型,只會(huì)占據(jù)1個(gè)字節(jié)。而在java中char類型占2個(gè)字節(jié)是因?yàn)镴ava編譯器默認(rèn)使用Unicode編碼,因此2字節(jié)(16位)可以表示所有字符。

      char類型要占幾個(gè)字節(jié)

      本教程操作環(huán)境:windows7系統(tǒng)、Dell G3電腦。

      我百度搜索“char占幾個(gè)字節(jié)”,得到下面的答案:

      char類型要占幾個(gè)字節(jié)

      char用于C或C++中定義字符型變量,是一種整數(shù)類型,只占一個(gè)字節(jié),取值范圍為 -128 ~ +127(-27~27-1)。

      char類型占1字節(jié),就是8位,所能存儲(chǔ)的正整數(shù)是 0111 1111,即127。

      顯然這不是我們想要的結(jié)果,于是我繼續(xù)搜索“java中的char占幾個(gè)字節(jié)”

      char類型要占幾個(gè)字節(jié)

      Java中的char用于存放字符的數(shù)據(jù)類型,占用2個(gè)字節(jié),采用unicode編碼,它的前128字節(jié)編碼與ASCII兼容,只不過(guò)有些字符需要兩個(gè)char來(lái)表示。

      為什么C或C++和java中的char占用字節(jié)數(shù)不相同?

      有些字符需要兩個(gè)char來(lái)表示又是什么意思?

      編碼

      在討論這個(gè)問(wèn)題之前,我們先對(duì)部分知識(shí)點(diǎn)做一下普及。

      首先我們都知道計(jì)算機(jī)中儲(chǔ)存的信息都是用二進(jìn)制數(shù)表示的,那怎么樣讓計(jì)算機(jī)存儲(chǔ)我們?nèi)祟愑玫臐h字或英文呢?

      比如如何將'a'轉(zhuǎn)換為二進(jìn)制存儲(chǔ)到計(jì)算機(jī)中,稱為編碼;

      而將存儲(chǔ)在計(jì)算機(jī)中的二進(jìn)制數(shù)解析顯示出來(lái),稱為解碼。

      字符集

      字符(Character)是各種文字和符號(hào)的總稱,包括各國(guó)家文字、標(biāo)點(diǎn)符號(hào)、圖形符號(hào)、數(shù)字等。字符集(Character set)是多個(gè)字符的集合,字符集種類較多,每個(gè)字符集包含的字符個(gè)數(shù)不同,常見字符集名稱:ASCII字符集、GB2312字符集、BIG5字符集、 GB18030字符集、Unicode字符集等。這是百度百科給的解釋,反正就是字符集是一些字符的集合,字符集種類多,字符集中的字符數(shù)量也各不相同。計(jì)算機(jī)要準(zhǔn)確的處理各種字符集文字,需要進(jìn)行字符編碼,以便計(jì)算機(jī)能夠識(shí)別和存儲(chǔ)各種文字。

      unicode

      它的名字叫統(tǒng)一碼, 也叫萬(wàn)國(guó)碼,符號(hào)數(shù)量在不斷增加,已超百萬(wàn) 。

      在創(chuàng)造Unicode之前,有數(shù)百種編碼系統(tǒng)。沒(méi)有一個(gè)編碼可以包含足夠的字符,從它的名字就可以看出這是一種所有符號(hào)的編碼,每一個(gè)符號(hào)都給予一個(gè)獨(dú)一無(wú)二的編碼,那么各個(gè)不同編碼導(dǎo)致的亂碼問(wèn)題就會(huì)消失。

      大多數(shù)計(jì)算機(jī)采用ASCII碼(美國(guó)標(biāo)準(zhǔn)信息交換碼),它是表示所有大小寫字母、數(shù)字、標(biāo)點(diǎn)符號(hào)和控制字符的7位編碼方案。統(tǒng)一碼(Unicode)包含ASCII碼,'u0000'到'u007F'對(duì)應(yīng)全部128個(gè)ACSII字符。

      不禁讓我感慨,有實(shí)力的人才能制定標(biāo)準(zhǔn)。 Unicode 只是一個(gè)符號(hào)集,它只規(guī)定了符號(hào)的二進(jìn)制代碼,僅僅提供字符與編號(hào)間映射,卻沒(méi)有規(guī)定這個(gè)二進(jìn)制代碼應(yīng)該如何存儲(chǔ)。 我們知道英文字母的編號(hào)特別小,用一個(gè)字節(jié)就完全能夠表示,而unicode中的中文符號(hào)的編號(hào)就很大了,一個(gè)字節(jié)根本不行。 于是后面出現(xiàn)了unicode字符存儲(chǔ)的多種實(shí)現(xiàn)方式,比如UTF-8,UTF-16等。 UTF-8 是在互聯(lián)網(wǎng)上使用最廣的一種 Unicode 的實(shí)現(xiàn)方式。

      內(nèi)碼和外碼

      我們常說(shuō)的java中的char占幾個(gè)字節(jié),應(yīng)該是java中內(nèi)碼中的char。

      內(nèi)碼是指java運(yùn)行時(shí),其char和string在內(nèi)存中的編碼方式;外碼是程序與外部交互時(shí)外部使用的字符編碼,比如序列化技術(shù)。 外碼可以理解為:只要不是內(nèi)碼,那就是外碼。 要注意的是,源代碼編譯產(chǎn)生的目標(biāo)代碼文件(可執(zhí)行文件或class文件)中的編碼方式屬于外碼。 JVM中內(nèi)碼采用UTF16。 UTF-16 的 16 指的就是最小為 16 位一個(gè)單元,也即兩字節(jié)為一個(gè)單元。早期,UTF16采用固定長(zhǎng)度2字節(jié)的方式編碼,兩個(gè)字節(jié)可以表示65536種符號(hào)(其實(shí)真正能表示要比這個(gè)少),足以表示當(dāng)時(shí)unicode中所有字符。但是隨著unicode中字符的增加,2個(gè)字節(jié)無(wú)法表示所有的字符,UTF16采用了2字節(jié)或4字節(jié)的方式來(lái)完成編碼。Java為應(yīng)對(duì)這種情況,考慮到向前兼容的要求,Java用一對(duì)char來(lái)表示那些需要4字節(jié)的字符。所以,java中的char是占用兩個(gè)字節(jié),只不過(guò)有些字符需要兩個(gè)char來(lái)表示。 這里就解釋了為什么有些字符需要兩個(gè)char來(lái)表示的問(wèn)題。

      另外:Java的class文件采用UTF8來(lái)存儲(chǔ)字符,也就是說(shuō),class中字符占1~6個(gè)字節(jié)。 Java序列化時(shí),字符也采用UTF8編碼,占1~6個(gè)字符。

      length()

      那再來(lái)一個(gè)問(wèn)題:Java中的一個(gè)字符的String.length()是多少?

      看過(guò)前面的知識(shí)點(diǎn)不能再?gòu)堊炀蛠?lái)回答是1吧…… 寫個(gè)demo看一下:虎年就用虎來(lái)測(cè)試吧,tigerUTF對(duì)對(duì)應(yīng)unicode編碼表示。

               String tiger = "?";          String tigerUTF = "uD83DuDC05";          System.out.println(tigerUTF);          System.out.println(tiger.length());           System.out.println(tiger.codePointCount(0,tiger.length()));
      登錄后復(fù)制

      char類型要占幾個(gè)字節(jié)char類型要占幾個(gè)字節(jié)

      可以得出調(diào)用String.length()得到的結(jié)果為2,表示的是stirng的char數(shù)組占UTF-16格式的2個(gè)代碼單元(即4個(gè)字節(jié)),而不是有多少個(gè)字符。 當(dāng)然我們想要獲取多少個(gè)字符,可以使用codePointCount方法來(lái)獲取。

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)