Java學(xué)習(xí)4:數(shù)據(jù)類型(上)

數(shù)據(jù)類型(上)

數(shù)據(jù)類型用來(lái)聲明變量挨稿,程序在運(yùn)行過(guò)程中根據(jù)不同的數(shù)據(jù)類型分配不同大小的空間陕靠。
例如:
int i = 10;
double d = 1.23;
i變量和d變量數(shù)據(jù)類型不同反惕,空間大小不同赤嚼。
數(shù)據(jù)類型在java語(yǔ)言中包括兩種:
第一種:基本數(shù)據(jù)類型
基本數(shù)據(jù)類型有可以劃分為4大類8小種:
8小種:
byte,short,int,long,float,double,boolean,char
第一類:整數(shù)型:byte,short,int,long(沒(méi)有小數(shù))
第二類:浮點(diǎn)型:float,double(帶有小數(shù)的)
第三類:布爾型:boolean(只有兩個(gè)值true和false)
第四類:字符型:char(java種規(guī)定字符必須使用單引號(hào)括起來(lái),屬于文字寞宫。)
第二種:引用數(shù)據(jù)類型
字符串型String屬于引用數(shù)據(jù)類型株灸。String字符串不屬于基本數(shù)據(jù)類型范疇崇摄。
java種除了基本數(shù)據(jù)類型之外,剩下的都是引用數(shù)據(jù)類型慌烧。
引用數(shù)據(jù)類型后期面向?qū)ο蟮臅r(shí)候才會(huì)接觸逐抑。

計(jì)算機(jī)存儲(chǔ)單位

整數(shù)型:byte,short,int,long有什么區(qū)別?
浮點(diǎn)型:float,double有什么區(qū)別屹蚊?
區(qū)別就是:占用的空間大小不同厕氨。
計(jì)算機(jī)只能識(shí)別二進(jìn)制。
1字節(jié) = 8bit(8比特)-->1byte = 8bit
byte占用1個(gè)字節(jié)淑翼。short占用2個(gè)字節(jié)腐巢。int占用4個(gè)字節(jié)。long占用8個(gè)字節(jié)玄括。float占用4個(gè)字節(jié)冯丙。double占用8個(gè)字節(jié)。boolean占用1個(gè)字節(jié)。char占用2個(gè)字節(jié)胃惜。
1KB = 1024byte
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB

數(shù)據(jù)類型.png

二進(jìn)制與十進(jìn)制

十進(jìn)制轉(zhuǎn)換成二進(jìn)制
方法:除以2泞莉,然后余數(shù)逆序輸出
例如:125轉(zhuǎn)換為二進(jìn)制
125/2 = 62 余1
62/2 = 31 余0
31/2 = 15 余1
15/2 = 7 余1
7/2 = 3 余1
3/2 = 1 余1
1/2 = 0 余1
逆序輸出:1111101
二進(jìn)制轉(zhuǎn)換成十進(jìn)制
方法:權(quán)相加法
例如:1111101
12^6+125+1*24+12^3+122+0*21+1*2^0=64+32+16+8+4+0+1=125
十六進(jìn)制:滿16進(jìn)1位
八進(jìn)制:滿8進(jìn)1位

取值范圍

byte類型的取值范圍
byte是 [-128~127] 共可以標(biāo)識(shí)256個(gè)不同的數(shù)字。
byte類型的最大值是怎么計(jì)算出來(lái)的呢船殉?
byte是1個(gè)字節(jié)鲫趁,8個(gè)比特位,所以byte可以存儲(chǔ)的最大值是:01111111利虫。
注意:在計(jì)算機(jī)當(dāng)中挨厚,一個(gè)二進(jìn)制位最左邊的是符號(hào)位,當(dāng)為0是表示整數(shù)糠惫,當(dāng)為1時(shí)表示負(fù)數(shù)疫剃。
所以,byte類型最大值時(shí)2的7次方減1硼讽,也就是128-1=127
有幾個(gè)取值范圍需要大家記壮布邸:
byte(1個(gè)字節(jié)):【-128 ~ 127】
short(2個(gè)字節(jié)):【-32768 ~ 32767】 可以表示65536個(gè)數(shù)字
int(4個(gè)字節(jié)):【-2147483648 ~ 2147483647】
char(2個(gè)字節(jié)):【0 ~ 65535】 可以表示65536個(gè)數(shù)字
short和char實(shí)際上容量相同,不過(guò)char可以表示更大的數(shù)字固阁。因?yàn)閏har表示的是文字壤躲,文字沒(méi)有正負(fù)之分,所以char可以表示更大的數(shù)字备燃。

字符編碼

對(duì)于8種基本數(shù)據(jù)類型來(lái)說(shuō)碉克,其中byte,short赚爵,int棉胀,long法瑟,folat冀膝,double,boolean霎挟,這7種類型計(jì)算機(jī)表示起來(lái)比較容易窝剖,因?yàn)樗麄兌际菙?shù)字。其中布爾類型只有兩個(gè)值true和false酥夭。實(shí)際上true和false分別在c++種對(duì)應(yīng)的是1和0赐纱,1為true,0為false熬北。
對(duì)于char類型來(lái)說(shuō)計(jì)算機(jī)表示起來(lái)比較麻煩疙描,因?yàn)閏har對(duì)應(yīng)的是文字。每一個(gè)國(guó)家的文字不一樣讶隐,文字不能直接通過(guò)自然算法轉(zhuǎn)換成二進(jìn)制起胰。
所以字符編碼產(chǎn)生了。
字符編碼是人為定義的一套轉(zhuǎn)換表巫延。在字符編碼種規(guī)定了一系列的文字對(duì)應(yīng)的二進(jìn)制效五。
字符編碼其實(shí)本質(zhì)上就是一本字典地消,該字典中描述了文字于二進(jìn)制之間的對(duì)照關(guān)系。
字符編碼是認(rèn)為規(guī)定的畏妖。(某個(gè)計(jì)算機(jī)協(xié)會(huì)規(guī)定的)
字符編碼涉及到編碼和解碼兩個(gè)過(guò)程脉执,編碼和解碼的時(shí)候必須采用同一套字符編碼方式,不然就會(huì)產(chǎn)生亂碼戒劫。
起初半夷,計(jì)算機(jī)是不支持文字的,只支持科學(xué)計(jì)算迅细。后來(lái)隨著計(jì)算機(jī)的發(fā)展玻熙,計(jì)算機(jī)開(kāi)始支持文字,最先支持的文字是英文疯攒,英文對(duì)應(yīng)的字符編碼方式是ASCII碼嗦随。
ASCII碼采用1byte進(jìn)行存儲(chǔ),鍵盤上所有的鍵全部算上也不超過(guò)256個(gè)敬尺。所以英文本身在計(jì)算機(jī)方面就占有優(yōu)勢(shì)枚尼。
'a' ---> 97 ---> 01100001
'A' ---> 65 ---> 01000001
'0' ---> 48 ---> 00101110(這個(gè)'0' 不是數(shù)字0,是文字'0' )
'a'--采用ASCII碼進(jìn)行編碼-->01100001
01100001--采用ASCII碼進(jìn)行解碼-->'a'


ASCII碼 對(duì)照表.png

隨著計(jì)算機(jī)語(yǔ)言的發(fā)展砂吞,后來(lái)國(guó)際標(biāo)準(zhǔn)組織制定了ISO-8859-1編碼方式署恍,又稱為lating-1編碼方式,向上兼容ASCII碼蜻直,但不支持中文盯质。后來(lái)發(fā)展到亞洲才支持中文,日文概而,韓文....
簡(jiǎn)體中文這塊的編碼方式:GB2312<GBK<GB18030(容量的關(guān)系)
繁體中文:Big5(臺(tái)灣使用的是大五碼)
在java中呼巷,java為了支持全球所有的文字,采用了一種字符編碼方式叫做Unicode編碼赎瑰。unicode編碼統(tǒng)一了全球所有的文字王悍,支持所有文字。具體實(shí)現(xiàn)包括:UTF-8 UTF-16 UTF-32.....餐曼。

字符型:char

char占用2個(gè)字節(jié)压储。
char的取值范圍是 [0~65535]
char采用unicode編碼方式。
char類型的字面量使用單引號(hào)括起來(lái)源譬。
char可以存儲(chǔ)一個(gè)漢字集惋。一個(gè)漢字占用2個(gè)字節(jié),char類型正好占用兩個(gè)字節(jié)踩娘。

轉(zhuǎn)義字符

java語(yǔ)言中”\“負(fù)責(zé)轉(zhuǎn)義刮刑。
**加上一個(gè)特殊的字符,共同構(gòu)成一個(gè)新的字符。
** 的出現(xiàn)會(huì)將緊挨著的后面的字符進(jìn)行轉(zhuǎn)義为朋。
\t 表示制表符tab
\n 表示換行符
System.out.println();輸出括號(hào)內(nèi)內(nèi)容之后換行
System.out.print();輸出括號(hào)內(nèi)內(nèi)容之后不換行
如果想要在控制臺(tái)輸出一個(gè) ' 字符臂拓,可以使用 System.out.println(''');
' 表示一個(gè)普通不能再普通的單引號(hào)字符。
同理如果想要在控制臺(tái)輸出一個(gè) \ 字符习寸,可以使用 System.out.println('\');
\在java中兩個(gè)反斜杠代表了一個(gè)”普通的反斜杠字符“胶惰。
如果想要在控制臺(tái)輸出"test",可以使用 System.out.println(""test"");
"表示一個(gè)普通的雙引號(hào)字符霞溪。
\u反斜杠u表示后面的是一個(gè)字符的unicode編碼孵滞。
unicode編碼是十六進(jìn)制的。
例如:System.out.println('\u4e2d');
輸出的結(jié)果是:中
在較低版本JDK(例如JDK8)中鸯匹,bin目錄下會(huì)有一個(gè)native2ascii.exe的命令坊饶,在DOS命令窗口輸入這個(gè)命令后,輸入字符殴蓬,在敲擊回車匿级,就會(huì)出現(xiàn)它的unicode編碼。

native2ascii.exe運(yùn)行測(cè)試.png

整數(shù)型的4種編寫方式

對(duì)于整數(shù)型來(lái)說(shuō)染厅,最常用的是int痘绎,開(kāi)發(fā)的時(shí)候不用斤斤計(jì)較。
在java語(yǔ)言種整數(shù)型字面量有4種表示形式:
十進(jìn)制:最常用的肖粮。
二進(jìn)制:0b開(kāi)頭
八進(jìn)制:0開(kāi)頭
十六進(jìn)制:0x開(kāi)頭

public class Int{
  public static void main(String[] args){
    //十進(jìn)制
    int a = 10;
    System.out.println(a);//輸出10
    //八進(jìn)制
    int b = 010;
    System.out.println(b);//輸出8
    //十六進(jìn)制
    int c = 0x10;
    System.out.println(c);//輸出16
    //二進(jìn)制(JDK8的新特性孤页,低版本不支持)
    int d = 0b10;
    System.out.println(c);//輸出2
  }
}

類型轉(zhuǎn)換

在java中有一條非常重要的結(jié)論:在任何情況下,整數(shù)型的”字面量“默認(rèn)被當(dāng)作int類型處理涩馆。
如果希望該”整數(shù)型字面量“被當(dāng)作long類型來(lái)處理行施,需要在”字面量“后面添加L或l。建議使用大寫的L魂那,因?yàn)樾憀和1傻傻分不清蛾号。
小容量可以自動(dòng)轉(zhuǎn)換成大容量,這種操作被稱為:自動(dòng)類型轉(zhuǎn)換冰寻。
過(guò)大的整數(shù)可以在后面加一個(gè)L须教,把int類型轉(zhuǎn)換位long類型皿渗。
大容量轉(zhuǎn)換成小容量斩芭,要想編譯通過(guò),必須加強(qiáng)制類型轉(zhuǎn)換符乐疆,進(jìn)行強(qiáng)制類型轉(zhuǎn)換划乖。
需要注意的是:加強(qiáng)制類型轉(zhuǎn)換符之后,雖然編譯通過(guò)了挤土,但是運(yùn)行的時(shí)候可能會(huì)損失精度琴庵。
強(qiáng)制類型轉(zhuǎn)換符格式:(強(qiáng)制轉(zhuǎn)換的類型)
例如:
long x = 100L;
int y = (int)x;//這個(gè)(int)就是強(qiáng)制類型轉(zhuǎn)換符

long類型強(qiáng)轉(zhuǎn)為int類型會(huì)自動(dòng)將前面的4個(gè)字節(jié)砍掉。
int類型強(qiáng)轉(zhuǎn)為byte類型會(huì)自動(dòng)將前面的3個(gè)字節(jié)砍掉。
java中有一個(gè)語(yǔ)法規(guī)則:當(dāng)這個(gè)整數(shù)型字面量沒(méi)有超出byte或short的取值范圍迷殿,那么這個(gè)整數(shù)型的字面量是可以直接賦值給byte或short類型的變量儿礼。
這種語(yǔ)法機(jī)制是為了方便寫代碼而存在的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末庆寺,一起剝皮案震驚了整個(gè)濱河市蚊夫,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌懦尝,老刑警劉巖知纷,帶你破解...
    沈念sama閱讀 219,589評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異陵霉,居然都是意外死亡琅轧,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,615評(píng)論 3 396
  • 文/潘曉璐 我一進(jìn)店門踊挠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)乍桂,“玉大人,你說(shuō)我怎么就攤上這事效床∧@” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,933評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵扁凛,是天一觀的道長(zhǎng)忍疾。 經(jīng)常有香客問(wèn)我,道長(zhǎng)谨朝,這世上最難降的妖魔是什么卤妒? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,976評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮字币,結(jié)果婚禮上则披,老公的妹妹穿的比我還像新娘。我一直安慰自己洗出,他們只是感情好士复,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,999評(píng)論 6 393
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著翩活,像睡著了一般阱洪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上菠镇,一...
    開(kāi)封第一講書(shū)人閱讀 51,775評(píng)論 1 307
  • 那天冗荸,我揣著相機(jī)與錄音,去河邊找鬼利耍。 笑死蚌本,一個(gè)胖子當(dāng)著我的面吹牛盔粹,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播程癌,決...
    沈念sama閱讀 40,474評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼舷嗡,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了嵌莉?” 一聲冷哼從身側(cè)響起咬崔,我...
    開(kāi)封第一講書(shū)人閱讀 39,359評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎烦秩,沒(méi)想到半個(gè)月后垮斯,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,854評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡只祠,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,007評(píng)論 3 338
  • 正文 我和宋清朗相戀三年兜蠕,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片抛寝。...
    茶點(diǎn)故事閱讀 40,146評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡熊杨,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出盗舰,到底是詐尸還是另有隱情晶府,我是刑警寧澤,帶...
    沈念sama閱讀 35,826評(píng)論 5 346
  • 正文 年R本政府宣布钻趋,位于F島的核電站川陆,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏蛮位。R本人自食惡果不足惜较沪,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,484評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望失仁。 院中可真熱鬧尸曼,春花似錦、人聲如沸萄焦。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,029評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)拂封。三九已至茬射,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間烘苹,已是汗流浹背躲株。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,153評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留镣衡,地道東北人霜定。 一個(gè)月前我還...
    沈念sama閱讀 48,420評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像廊鸥,于是被迫代替她去往敵國(guó)和親望浩。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,107評(píng)論 2 356