JAVA数据类型及字符编码
文章目錄
- 一、數(shù)據(jù)類型作用
- 二、數(shù)據(jù)類型有哪些
- 三、基本數(shù)據(jù)類型占字節(jié)數(shù)
- 四、數(shù)據(jù)類型取值范圍
- 五、字符編碼
一、數(shù)據(jù)類型作用
數(shù)據(jù)類型是用來(lái)聲明變量的,程序在運(yùn)行過(guò)程中根據(jù)不同的數(shù)據(jù)類型分配不同大小的內(nèi)存空間。
二、數(shù)據(jù)類型有哪些
JAVA數(shù)據(jù)類型分為基本數(shù)據(jù)類型和引用數(shù)據(jù)類型,基本數(shù)據(jù)類型一共有8種,除了基本數(shù)據(jù)類型外其他都是引用數(shù)據(jù)類型。
基本數(shù)據(jù)類型有*:
整數(shù)型:byte、int、short、long
浮點(diǎn)型:double、float
布爾型:boolean
字符型:char(必須用單引號(hào)括起來(lái))
引用數(shù)據(jù)類型有:
類(Class)
接口(Interface)
數(shù)組
三、基本數(shù)據(jù)類型占字節(jié)數(shù)
1byte = 1字節(jié) = 8bit
1short = 2字節(jié) = 16bit
1int = 4字節(jié) = 32bit
1 long = 8字節(jié) = 64bit
1 double = 8字節(jié) = 64bit
1 float = 4字節(jié) = 32bit
1 char = 2字節(jié) = 16bit
1 boolean= 1字節(jié) = 8bit
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB
四、數(shù)據(jù)類型取值范圍
byte:[-27 ~ 27-1]即 [-128 ~ 127],共256個(gè)不同的數(shù)字。默認(rèn)缺省值為0。
byte是一個(gè)字節(jié),8個(gè)比特位,所以byte可以存儲(chǔ)的最大值是:01111111
在計(jì)算機(jī)中,一個(gè)二進(jìn)制最左邊的是符號(hào)位,當(dāng)為0時(shí)表示正數(shù),當(dāng)為1時(shí)表示負(fù)數(shù)。所以byte類型的最大值是:01111111
short:[-215 ~ 215-1]即[-32768 ~ 32767],默認(rèn)缺省值為0。
int:[-231 ~ 231-1]即[-2147483648 ~ 2147483647],默認(rèn)缺省值為0。Java中,整數(shù)默認(rèn)為int類型。
long:[-263 ~ 263-1],默認(rèn)缺省值為0L。
float:[-231 ~ 231-1],默認(rèn)缺省值為0.0f。
doube:[-263 ~ 263-1],默認(rèn)缺省值為0.0。Java中小數(shù)默認(rèn)為double類型 - 小數(shù)結(jié)尾可以添加D/d作為標(biāo)記。
boolean:[-27 ~ 27-1],默認(rèn)缺省值為false。
char:[0 ~ 2^16-1]即[0 ~ 65535],默認(rèn)缺省值為’\u0000’。存儲(chǔ)用的就是utf-16。
short和char實(shí)際上容量相同,但是char可以表示更大的數(shù)字,因?yàn)閏har表示的是文字,文字沒(méi)有正負(fù)之分,所以char可以表示更大的數(shù)字。
五、字符編碼
對(duì)于char類型來(lái)說(shuō)計(jì)算機(jī)表示起來(lái)比較麻煩,因?yàn)閏har對(duì)應(yīng)的是文字,每一個(gè)國(guó)家的文字不一樣,文字不能直接通過(guò)“自然算法”轉(zhuǎn)換成二進(jìn)制。這個(gè)時(shí)候字符編碼誕生了。
字符編碼是人為的定義的一套轉(zhuǎn)換表。在字符編碼中規(guī)定了一系列的文字對(duì)應(yīng)的二進(jìn)制。字符編碼其實(shí)本質(zhì)上就是一本字典,該字段中描述了文字與二進(jìn)制之間的對(duì)照關(guān)系。
字符編碼涉及到編碼和解碼兩個(gè)過(guò)程,編碼和解碼的時(shí)候必須采用同一套字符編碼方式,不然就會(huì)出現(xiàn)亂碼。
(1). 起初的時(shí)候計(jì)算機(jī)是不支持文字的,只支持科學(xué)計(jì)算。實(shí)際上計(jì)算機(jī)起初是為了戰(zhàn)爭(zhēng)而開(kāi)發(fā)的,計(jì)算導(dǎo)彈的軌道…
后來(lái)隨著計(jì)算機(jī)的發(fā)展,計(jì)算機(jī)開(kāi)始支持文字,最先支持的文字是英文,英文對(duì)應(yīng)的字符編碼方式是:ASCII碼。
ASCII碼采用1byte進(jìn)行存儲(chǔ),因?yàn)橛⑽淖帜甘?6個(gè)。(鍵盤(pán)上所有的鍵全部算上也超不過(guò)256個(gè)。1byte可以表示256種不同的情況。所以英文本身在計(jì)算機(jī)方面就占有優(yōu)勢(shì)。)
‘a(chǎn)’ —> 97
‘b’ —> 98
‘c’ —> 99
‘A’ —> 65
‘B’ —> 66
‘0’ —> 48
‘1’ —> 49
(2).隨著計(jì)算機(jī)語(yǔ)言的發(fā)展,后來(lái)國(guó)際標(biāo)準(zhǔn)組織制定了ISO-8859-1編碼方式,又稱為latin-1編碼方式,向上兼容ASCII碼。但不支持中文。
(3).后來(lái)發(fā)展到亞洲,才支持中文,日文,韓文…中文這塊的編碼方式:GB2312<GBK<GB18030 (容量的關(guān)系)以上編碼方式是簡(jiǎn)體中文。繁體中文:big5(臺(tái)灣使用的是大五碼。)
(4).在java中,java語(yǔ)言為了支持全球所有的文字,采用了一種字符編碼方式叫做unicode編碼。unicode編碼統(tǒng)一了全球所有的文字,支持所有文字。具體的實(shí)現(xiàn)包括:UTF-8、UTF-16、UTF-32
ISO-8859-1 - 西歐碼表 - 1個(gè)字節(jié)表示1個(gè)字符
gb2312 - 國(guó)標(biāo)碼 - gbk - 2個(gè)字節(jié)表示1個(gè)字符 - 收錄了常見(jiàn)的簡(jiǎn)體漢字以及一部分常見(jiàn)的繁體漢字
Unicode編碼體系 - 收錄了世界上常見(jiàn)語(yǔ)言的基本字符 - 規(guī)定了一系列的編碼規(guī)則
utf-8-> 3個(gè)字節(jié)表示一個(gè)字符
utf-16 -> 2個(gè)字節(jié)表示1個(gè)字符
注意:規(guī)定無(wú)論哪張碼表兼容西歐碼表
總結(jié)
以上是生活随笔為你收集整理的JAVA数据类型及字符编码的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【图文详解】JAVA字面量和变量
- 下一篇: 【图文详解】JAVA中的转义字符