目錄:
1.基本數(shù)據(jù)類型
2.引用數(shù)據(jù)類型
數(shù)據(jù)類型:
??????? Java語(yǔ)言是一個(gè)強(qiáng)類型語(yǔ)言
??????? 1.所有變量,必須先聲明類型,再使用症汹。
??????? 2.指定類型的變量,只能裝對(duì)應(yīng)類型的數(shù)據(jù)贷腕。通俗來(lái)講烈菌,什么樣的瓶子裝什么樣的酒。
Java數(shù)據(jù)類型可分為兩大類:
1.基本數(shù)據(jù)類型
共8個(gè)???
4個(gè)整型(不支持小數(shù)): ?????? byte??????? short??????? int??????? long
2個(gè)浮點(diǎn)型(支持小數(shù)):??????? float??????? double
1個(gè)字符型???????????????????? :?????? ? char
1個(gè) boolean 型???????????? :???????? boolean(只支持兩個(gè)值:true 或者 false)
四個(gè)整數(shù)(不支持小數(shù)):
byte:? 一個(gè)字節(jié)花履。??? 1 byte =8 bit (每個(gè) bit 相當(dāng)于一個(gè)硬幣芽世,有兩個(gè)狀態(tài))??? -128~127??? 256
short:兩個(gè)字節(jié)。? ? -32768~32767 ? ?? ? 65536
int:???? 四個(gè)字節(jié)诡壁。??? -2G~2G-1
long:? 八個(gè)字節(jié)济瓢。??? -2^63~2^63-1
整數(shù)Test程序 及 運(yùn)行結(jié)果:
public class 整數(shù)Test
{
??? public static void main(String[] args)
??? {
? ? ? ? int a;
?? ? ?? a = 456;
?? ? ?? int b;
??????? b = a;
??????? System.out.println("~~~~" + a);
??????? System.out.println("~~~~" + b);
??????? byte bb = (byte)345;
??????? System.out.println("~~~~" + bb);? //溢出
??????? byte b2 = (byte)385;
??????? System.out.println("~~~~" + b2);? //溢出? 補(bǔ)碼
??? }
}
2個(gè)浮點(diǎn)數(shù)(支持小數(shù)):
??????? A.浮點(diǎn)數(shù)有兩種表現(xiàn)形式:
?????????????? 1.10進(jìn)制形式:??? 5.12??????? .512(沒(méi)有整數(shù)部分 0 可以省略)
?????????????? 2.科學(xué)記數(shù)法:??? .12e4
??????? B.浮點(diǎn)數(shù)默認(rèn)是 double 類型
?????????????? 如果想使用一個(gè) float 型的浮點(diǎn)數(shù),應(yīng)該在浮點(diǎn)數(shù)后添加 F 或 f妹卿。
?????????????? 推薦使用 double 型的浮點(diǎn)數(shù)旺矾。
?????? C.浮點(diǎn)數(shù)有三個(gè)特殊值:
??????????????? 正無(wú)窮大:用正浮點(diǎn)數(shù)除以 0 就是正無(wú)窮大。所有正無(wú)窮大都相等夺克。(Double.POSITIVE_INFINITY)
? ? ? ? ? ? ? ? 負(fù)無(wú)窮大:用負(fù)浮點(diǎn)數(shù)除以 0 就是負(fù)無(wú)窮大箕宙。所有負(fù)無(wú)窮大都相等。? ? (Double.NEGATIVE_INFINITY)
? ? ? ? ? ? ? ? 非數(shù):? ? ? 用 0.0 除以 0 就是非數(shù)铺纽。? ? ? ? ? ? ? 非數(shù)與自己不相等柬帕。? (Double.NaN)
浮點(diǎn)數(shù)Test程序 及 運(yùn)行結(jié)果:
public class 浮點(diǎn)數(shù)Test
{
??? public static void main(String[] args)
??? {
??????? double b = .512;
??????? System.out.println(b);
??????? double bb = .12e4;
??????? System.out.println(bb);
??????? float f = 1.12f;// 0.12 默認(rèn)是double 類型
??????? double max1 = 0.5/0.0;
??????? double max2 = 6666666/0.0;
?? ? ?? System.out.println(max1 == max2);
?? ? ?? double max3 = -0.5/0.0;
??????? double max4 = -666666/0.0;
??????? System.out.println(max3 == max4);
??????? double nan1 = 0.0/0.0;
??????? double nan2 = 0.0/0.0;
?? ? ?? System.out.println(nan1 == nan2);
}
1個(gè)字符型:char
??????? A. 每個(gè)字符型的變量只能裝一個(gè)字符,既可是英文的狡门,也可是中文的陷寝。而且用單引號(hào)包起來(lái)。
??????? B.字符型的值有 3 種表示方式:
?????????????? 1.? ‘a(chǎn)’??? 其馏,?? ‘中’
? ? ? ?? ? ? ? 2. 轉(zhuǎn)義字符:? ‘\n’? 換行? 將當(dāng)前位置移到下一行開(kāi)頭
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? \r? ? 回車? 將當(dāng)前位置移到本行開(kāi)頭
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? \t? ? 橫向跳格? 水平制表(HT) (跳到下一個(gè)TAB位置)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? \b? 退格? 將當(dāng)前位置移到前一列
??????????????????????????????????????? \f?? 換頁(yè)(FF)凤跑,將當(dāng)前位置移到下頁(yè)開(kāi)頭
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? \"? 代表一個(gè)雙引號(hào)字符
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? \'?? 代表一個(gè)單引號(hào)(撇號(hào))字符
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? \\? 代表一個(gè)反斜線字符''\'
?????????????? 3. 直接用 Unicode 的形式來(lái)表示。
??????? C. 每個(gè)字符占 2 個(gè)字節(jié)(16位)叛复,一共有 65536 種狀態(tài)仔引,相當(dāng)于可表示 65536 個(gè)字符扔仓。
??????????????? 整個(gè) Java 一共也就是支持 65536 個(gè)字符。
??????????? 字符型的變量咖耘,直接可作為“正整數(shù)”使用翘簇,最高位依然是數(shù)值位。0~65535鲤看。
字符型Test程序 及 運(yùn)行結(jié)果:
public class 字符型Test
{
??? public static void main(String[] args)
??? {
??????? char c = 'a';
??????? char c2 = '國(guó)';
??????? char rr = '\r';? //相當(dāng)于13
??????? char nn = '\n';? //相當(dāng)于10
??????? System.out.println((int)rr);
??????? System.out.println((int)nn);
??????? System.out.println(rr + nn);
??????? System.out.println("------------");
??????? //System.out.println(rr + "" +nn);
??????? System.out.println(rr);
??????? System.out.println(nn);
??????? System.out.println("============");
??????? System.out.println("******");
??????? char bb = '\b';? //相當(dāng)于鍵盤上的 backspace
??????? System.out.println(bb);
??????? System.out.println(bb);
??????? System.out.println(bb);
??????? System.out.println(bb);
??????? System.out.println(bb);
??????? char achar = 'a';? //數(shù)值是97
??????? System.out.println((int)achar);
??????? char Achar = 'A';? //65
??????? System.out.println((int)Achar);
?? ? ?? char zerochar = '0';? //數(shù)值是48
?? ? ?? System.out.println((int)zerochar);
??????? //? 一個(gè)字符占 16 bit缘揪,因此可寫成 4 位的 16 進(jìn)制
?? ? ?? char ca = '\u0042';? // 66? 必須是 \u? (unicode形式)
??????? System.out.println(ca);
??? }
}
練習(xí):簡(jiǎn)單隨機(jī)“驗(yàn)證碼”? 程序 及 運(yùn)行結(jié)果:
//? 生成一個(gè)六位耍群、隨機(jī)大寫字母
import java.util.*;
public class RandomStr
{
??? public static void main(String[] args)
??? {
??? // 控制代碼循環(huán) 6 次
??????? for(int i = 0;i < 6;i++)
??????? {
??????????? Random rand = new Random();//? 創(chuàng)建一個(gè)隨即對(duì)象
??????????? int randNum = rand.nextInt(25);//? 生成一個(gè) 0~25 之間的隨機(jī)數(shù)
?????? ? ?? System.out.print((char)(randNum + 65));//? 得到 65~65+25 之間的數(shù)值
??????? }
??? }
}
/****************************************
補(bǔ)充1:TB? 之上? 接著就是拍字節(jié)(PB)义桂、艾字節(jié)(EB)、澤它字節(jié)(ZB蹈垢,又稱為皆字節(jié))慷吊、堯它字節(jié)(YB)、最大是千億億億字節(jié)(BB)曹抬、最小是比特(b溉瓶,又稱為位)。
補(bǔ)充2:整數(shù)有如下 4 種表示形式
?????????????????? 10 進(jìn)制整數(shù):????? 默認(rèn)就是
? ? ? ? ? ? ? ? ?? 16 進(jìn)制整數(shù):? ??? 0x 0開(kāi)頭谤民,0~9? abcdef
? ? ? ? ? ? ? ? ?? 8 ? 進(jìn)制整數(shù):? ? ? 以 0 開(kāi)頭堰酿,0~7
? ? ? ? ? ? ? ? ?? 2 ? 進(jìn)制整數(shù):? ? ? 以 0b 開(kāi)頭,0~1
當(dāng)我們直接使用一個(gè)整數(shù)時(shí)张足,整數(shù)默認(rèn)是 int 類型触创。
?????????? 如果想使用一個(gè) long 型的整數(shù),應(yīng)該在整數(shù)后添加 L 或 l为牍。
補(bǔ)充:3:關(guān)于整數(shù)的存儲(chǔ):
?????????? 1.? 最高位是符號(hào)位哼绑。
??????????????? 最高位是 0 代表正數(shù),最高位是 1 代表負(fù)數(shù)
?????????? 2.所有數(shù)值在計(jì)算里都以補(bǔ)碼形式保存的碉咆。
?????????? 原碼:??? 直接換算出的二進(jìn)制碼
?????????? 反碼:??? 除符號(hào)位不變之外抖韩,其他位都取反。
?????????? 補(bǔ)碼:??? 負(fù)數(shù)補(bǔ)碼 = 反碼 +1疫铜;正數(shù)補(bǔ)碼 = 原碼茂浮。
補(bǔ)碼的設(shè)計(jì)目的是:
⑴使符號(hào)位能與有效值部分一起參加運(yùn)算,從而簡(jiǎn)化運(yùn)算規(guī)則.
⑵使減法運(yùn)算轉(zhuǎn)換為加法運(yùn)算,進(jìn)一步簡(jiǎn)化計(jì)算機(jī)中運(yùn)算器的線路設(shè)計(jì)
******************************/
基本數(shù)據(jù)類型的類型轉(zhuǎn)換:
??????? 1.Java 是強(qiáng)類型的語(yǔ)言。
?????????????????? A. 所有變量壳咕,必須先聲明励稳,后使用。
?????????????????? B. 指定類型的變量囱井,只能裝相應(yīng)類型的值
??????? 8 個(gè)基本類型驹尼,7個(gè)數(shù)值型 + 1個(gè)boolean型
??????? 7 個(gè)數(shù)值型??? (4 個(gè)整型、2 個(gè)浮點(diǎn)型庞呕、 char 可當(dāng)成正整數(shù)型)
Java 的類型轉(zhuǎn)換可分為兩種:
??? 1. ? 自動(dòng)類型轉(zhuǎn)換:
????? ? ? ? ? ? 表數(shù)范圍小的新翎,可以自動(dòng)轉(zhuǎn)換表數(shù)范圍大的程帕。
直接寫一個(gè)整數(shù),默認(rèn)是 int 型地啰,但如果它的范圍在 byte愁拭、short 表數(shù)范圍之內(nèi),而且程序直接將該值賦給 byte亏吝、short 類型的變量岭埠,系統(tǒng)會(huì)自動(dòng)把它當(dāng)成 byte、short 用
????????? 1.所有數(shù)值型蔚鸥,都可以自動(dòng)轉(zhuǎn)換為 double 類型惜论。
????????? 2.所有數(shù)值型,除了 double 之外止喷,都可以自動(dòng)轉(zhuǎn)換為 float 型
? ? ? ? ? 3.所有整型都可以自動(dòng)轉(zhuǎn)換為 long 型?
2.強(qiáng)制類型轉(zhuǎn)換
??? 當(dāng)我們要把表數(shù)范圍大的變量或值馆类,轉(zhuǎn)為表數(shù)范圍小的,就需要使用強(qiáng)制轉(zhuǎn)換弹谁。
??? 語(yǔ)法格式:??? (類型)
??? 強(qiáng)轉(zhuǎn)是可能丟失精度的乾巧。
強(qiáng)制類型轉(zhuǎn)換 (溢出的計(jì)算)程序 及 運(yùn)行結(jié)果:
public class 強(qiáng)制轉(zhuǎn)換
{
??? public static void main(String[] args)
??? {
? ? ? ? double d = 34;// 34默認(rèn)是 int 型,int 型可以自動(dòng)轉(zhuǎn)換 double 预愤,因此是對(duì)的
??????? float ff = 12;// 12默認(rèn)是 int 型沟于,int 型可以自動(dòng)轉(zhuǎn)換 float
??????? float fo = '\u0078';//? '\u0078'是 char 型,char 可以自動(dòng)轉(zhuǎn)換 float 型
??????? double dd = '\r';//? '\r'是 char 型植康,char 可以自動(dòng)轉(zhuǎn)換 double 型
??????? int iVal = 'A';//? 'A'是 char 型旷太,char 型可自動(dòng)轉(zhuǎn)換成 int 型
??????? float ft = (float)d;// 由于 d 是 double 型,double 不能自動(dòng)轉(zhuǎn)換為float
??????? // 因此需要進(jìn)行強(qiáng)轉(zhuǎn)
?? ? ?? double de = fo;//? 由于 fo 是 float 型向图,float 型可以自動(dòng)轉(zhuǎn)換為 double
?? ? ?? char cr = (char)dd;// 由于 dd 是 double 型泳秀,double 型不能自動(dòng)轉(zhuǎn)換為 char
??????? // 因此需要強(qiáng)轉(zhuǎn)
?? ? ?? //強(qiáng)轉(zhuǎn)是可能丟失精度的。
?? ? ?? short st = (short)33330;// 33330默認(rèn)是 int 型榄攀,int 不能自動(dòng)轉(zhuǎn)換為 short ( -32768~32767)嗜傅。因此強(qiáng)轉(zhuǎn)
??????? System.out.println(st);
??????? byte bb = 12;//? 12 默認(rèn) int,但由于 12 在byte內(nèi)檩赢,系統(tǒng)會(huì)自動(dòng)把它當(dāng)成byte
?? ? ?? int it = -3;
??????? byte bt = (byte)it;// it 是 int 型吕嘀,不能自動(dòng)轉(zhuǎn)換為byte,因此強(qiáng)轉(zhuǎn)
?? ? ?? System.out.println(bt);
??? }
}
3.表達(dá)式類型的自動(dòng)提升
規(guī)則:整個(gè)表達(dá)式的數(shù)據(jù)類型贞瞒,與表達(dá)式中最高等級(jí)的運(yùn)算數(shù)的類型相同偶房。
自動(dòng)提升程序 及 運(yùn)行結(jié)果:
public class 自動(dòng)提升
??? {
??????? public static void main(String[] args)
?? ? ?? {
?? ? ?? byte bt = 2; //? 2 是 int 型。
?????? ? ? ? ? ? ? ? ? ?? //? 由于2在 byte 范圍军浆,而是直接賦整數(shù)值
?? ? ??????????????????? //? 系統(tǒng)會(huì)自動(dòng)將它當(dāng)成 byte 處理棕洋。
? ? ? ? bt = bt + 1;????? //? 錯(cuò)誤的? ? ? ? ? ? 正確應(yīng)該為:bt = (byte)(bt + 1)
?? ? ???????????????????????????????? //? 1 默認(rèn)是 int 型
?? ? ??????????????????????????????? //? 整個(gè)表達(dá)式的類型與 1 的類型相同,因此表達(dá)式的類型就提升成了 int 型
? ? ? ? int a = 5;
? ? ? ? a = (int)((a + 20) / 2.5); // 2.5 是 double 型
? ? ? ? System.out.println(a);
??????? int it = 10;
??????? it = it / 4; // it 是 int乒融,4也是int掰盘,整個(gè)表達(dá)式依然是 int 型摄悯。
??????? System.out.println(it);
??????? it = 10;
?? ? ?? double du = it / 4; // it是int,4也是int愧捕,整個(gè)表達(dá)式依然是 int 型奢驯。
?? ? ?? System.out.println(du);
??? }
}
直接量:
??? 直接在源代碼中指定的值,就是直接量次绘。
??? 8 個(gè)基本數(shù)據(jù)類型瘪阁,都可以指定直接量。
??? boolean 類型邮偎,只有兩個(gè)直接變量:true管跺,false
? ? null 直接量,只能賦值給引用變量钢猛。null 直接量不能賦值給基本類型的變量伙菜。
2.引用數(shù)據(jù)類型
類轩缤,接口命迈,數(shù)組
以上,未完
寫在最后:
今早終于把東西搬過(guò)來(lái)了火的,總算是為自己可能三個(gè)月的實(shí)習(xí)找到了一個(gè)窩:摺!馏鹤!昨天坐一號(hào)線地鐵去大望路找女票征椒,地鐵的一幕引發(fā)了我的思考,一對(duì)小夫妻帶著大概幾個(gè)月的娃湃累,孩子哭哭啼啼勃救,孩子的父親并沒(méi)有多大耐心,只有母親去安慰孩子……或許再過(guò)幾年治力,我也要為人父蒙秒,本來(lái)是覺(jué)得這件事距離我很遠(yuǎn)的啊,再看看公司的前輩宵统,也有很多已經(jīng)結(jié)婚了晕讲。北京這個(gè)地方,確實(shí)很迷人马澈,扎根北京的想法我也不知道想過(guò)沒(méi)瓢省,總之作為女票口中第一代進(jìn)京的我們來(lái)說(shuō),是有些難吧痊班,可能終將有一天勤婚,我也會(huì)變成房奴吧,哈哈涤伐。但是不管怎么說(shuō)馒胆,還是要抓住眼下荆永,世界會(huì)殘酷的淘汰掉不會(huì)改變的人(昨地鐵上看到的一句話),來(lái)国章,干了這碗驢雜湯具钥!