目錄:
1.基本數(shù)據(jù)類型
2.引用數(shù)據(jù)類型
數(shù)據(jù)類型:
??????? Java語言是一個強類型語言
??????? 1.所有變量,必須先聲明類型,再使用。
??????? 2.指定類型的變量,只能裝對應類型的數(shù)據(jù)。通俗來講,什么樣的瓶子裝什么樣的酒。
Java數(shù)據(jù)類型可分為兩大類:
1.基本數(shù)據(jù)類型
共8個???
4個整型(不支持小數(shù)): ?????? byte??????? short??????? int??????? long
2個浮點型(支持小數(shù)):??????? float??????? double
1個字符型???????????????????? :?????? ? char
1個 boolean 型???????????? :???????? boolean(只支持兩個值:true 或者 false)
四個整數(shù)(不支持小數(shù)):
byte:? 一個字節(jié)。??? 1 byte =8 bit (每個 bit 相當于一個硬幣,有兩個狀態(tài))??? -128~127??? 256
short:兩個字節(jié)。? ? -32768~32767 ? ?? ? 65536
int:???? 四個字節(jié)。??? -2G~2G-1
long:? 八個字節(jié)。??? -2^63~2^63-1
整數(shù)Test程序 及 運行結果:
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);? //溢出? 補碼
??? }
}
2個浮點數(shù)(支持小數(shù)):
??????? A.浮點數(shù)有兩種表現(xiàn)形式:
?????????????? 1.10進制形式:??? 5.12??????? .512(沒有整數(shù)部分 0 可以省略)
?????????????? 2.科學記數(shù)法:??? .12e4
??????? B.浮點數(shù)默認是 double 類型
?????????????? 如果想使用一個 float 型的浮點數(shù),應該在浮點數(shù)后添加 F 或 f。
?????????????? 推薦使用 double 型的浮點數(shù)。
?????? C.浮點數(shù)有三個特殊值:
??????????????? 正無窮大:用正浮點數(shù)除以 0 就是正無窮大。所有正無窮大都相等。(Double.POSITIVE_INFINITY)
? ? ? ? ? ? ? ? 負無窮大:用負浮點數(shù)除以 0 就是負無窮大。所有負無窮大都相等。? ? (Double.NEGATIVE_INFINITY)
? ? ? ? ? ? ? ? 非數(shù):? ? ? 用 0.0 除以 0 就是非數(shù)。? ? ? ? ? ? ? 非數(shù)與自己不相等。? (Double.NaN)
浮點數(shù)Test程序 及 運行結果:
public class 浮點數(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 默認是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個字符型:char
??????? A. 每個字符型的變量只能裝一個字符,既可是英文的,也可是中文的。而且用單引號包起來。
??????? B.字符型的值有 3 種表示方式:
?????????????? 1.? ‘a(chǎn)’??? ,?? ‘中’
? ? ? ?? ? ? ? 2. 轉義字符:? ‘\n’? 換行? 將當前位置移到下一行開頭
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? \r? ? 回車? 將當前位置移到本行開頭
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? \t? ? 橫向跳格? 水平制表(HT) (跳到下一個TAB位置)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? \b? 退格? 將當前位置移到前一列
??????????????????????????????????????? \f?? 換頁(FF),將當前位置移到下頁開頭
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? \"? 代表一個雙引號字符
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? \'?? 代表一個單引號(撇號)字符
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? \\? 代表一個反斜線字符''\'
?????????????? 3. 直接用 Unicode 的形式來表示。
??????? C. 每個字符占 2 個字節(jié)(16位),一共有 65536 種狀態(tài),相當于可表示 65536 個字符。
??????????????? 整個 Java 一共也就是支持 65536 個字符。
??????????? 字符型的變量,直接可作為“正整數(shù)”使用,最高位依然是數(shù)值位。0~65535。
字符型Test程序 及 運行結果:
public class 字符型Test
{
??? public static void main(String[] args)
??? {
??????? char c = 'a';
??????? char c2 = '國';
??????? char rr = '\r';? //相當于13
??????? char nn = '\n';? //相當于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';? //相當于鍵盤上的 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);
??????? //? 一個字符占 16 bit,因此可寫成 4 位的 16 進制
?? ? ?? char ca = '\u0042';? // 66? 必須是 \u? (unicode形式)
??????? System.out.println(ca);
??? }
}
練習:簡單隨機“驗證碼”? 程序 及 運行結果:
//? 生成一個六位、隨機大寫字母
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)建一個隨即對象
??????????? int randNum = rand.nextInt(25);//? 生成一個 0~25 之間的隨機數(shù)
?????? ? ?? System.out.print((char)(randNum + 65));//? 得到 65~65+25 之間的數(shù)值
??????? }
??? }
}
/****************************************
補充1:TB? 之上? 接著就是拍字節(jié)(PB)、艾字節(jié)(EB)、澤它字節(jié)(ZB,又稱為皆字節(jié))、堯它字節(jié)(YB)、最大是千億億億字節(jié)(BB)、最小是比特(b,又稱為位)。
補充2:整數(shù)有如下 4 種表示形式
?????????????????? 10 進制整數(shù):????? 默認就是
? ? ? ? ? ? ? ? ?? 16 進制整數(shù):? ??? 0x 0開頭,0~9? abcdef
? ? ? ? ? ? ? ? ?? 8 ? 進制整數(shù):? ? ? 以 0 開頭,0~7
? ? ? ? ? ? ? ? ?? 2 ? 進制整數(shù):? ? ? 以 0b 開頭,0~1
當我們直接使用一個整數(shù)時,整數(shù)默認是 int 類型。
?????????? 如果想使用一個 long 型的整數(shù),應該在整數(shù)后添加 L 或 l。
補充:3:關于整數(shù)的存儲:
?????????? 1.? 最高位是符號位。
??????????????? 最高位是 0 代表正數(shù),最高位是 1 代表負數(shù)
?????????? 2.所有數(shù)值在計算里都以補碼形式保存的。
?????????? 原碼:??? 直接換算出的二進制碼
?????????? 反碼:??? 除符號位不變之外,其他位都取反。
?????????? 補碼:??? 負數(shù)補碼 = 反碼 +1;正數(shù)補碼 = 原碼。
補碼的設計目的是:
⑴使符號位能與有效值部分一起參加運算,從而簡化運算規(guī)則.
⑵使減法運算轉換為加法運算,進一步簡化計算機中運算器的線路設計
******************************/
基本數(shù)據(jù)類型的類型轉換:
??????? 1.Java 是強類型的語言。
?????????????????? A. 所有變量,必須先聲明,后使用。
?????????????????? B. 指定類型的變量,只能裝相應類型的值
??????? 8 個基本類型,7個數(shù)值型 + 1個boolean型
??????? 7 個數(shù)值型??? (4 個整型、2 個浮點型、 char 可當成正整數(shù)型)
Java 的類型轉換可分為兩種:
??? 1. ? 自動類型轉換:
????? ? ? ? ? ? 表數(shù)范圍小的,可以自動轉換表數(shù)范圍大的。
直接寫一個整數(shù),默認是 int 型,但如果它的范圍在 byte、short 表數(shù)范圍之內,而且程序直接將該值賦給 byte、short 類型的變量,系統(tǒng)會自動把它當成 byte、short 用
????????? 1.所有數(shù)值型,都可以自動轉換為 double 類型。
????????? 2.所有數(shù)值型,除了 double 之外,都可以自動轉換為 float 型
? ? ? ? ? 3.所有整型都可以自動轉換為 long 型?
2.強制類型轉換
??? 當我們要把表數(shù)范圍大的變量或值,轉為表數(shù)范圍小的,就需要使用強制轉換。
??? 語法格式:??? (類型)
??? 強轉是可能丟失精度的。
強制類型轉換 (溢出的計算)程序 及 運行結果:
public class 強制轉換
{
??? public static void main(String[] args)
??? {
? ? ? ? double d = 34;// 34默認是 int 型,int 型可以自動轉換 double ,因此是對的
??????? float ff = 12;// 12默認是 int 型,int 型可以自動轉換 float
??????? float fo = '\u0078';//? '\u0078'是 char 型,char 可以自動轉換 float 型
??????? double dd = '\r';//? '\r'是 char 型,char 可以自動轉換 double 型
??????? int iVal = 'A';//? 'A'是 char 型,char 型可自動轉換成 int 型
??????? float ft = (float)d;// 由于 d 是 double 型,double 不能自動轉換為float
??????? // 因此需要進行強轉
?? ? ?? double de = fo;//? 由于 fo 是 float 型,float 型可以自動轉換為 double
?? ? ?? char cr = (char)dd;// 由于 dd 是 double 型,double 型不能自動轉換為 char
??????? // 因此需要強轉
?? ? ?? //強轉是可能丟失精度的。
?? ? ?? short st = (short)33330;// 33330默認是 int 型,int 不能自動轉換為 short ( -32768~32767)。因此強轉
??????? System.out.println(st);
??????? byte bb = 12;//? 12 默認 int,但由于 12 在byte內,系統(tǒng)會自動把它當成byte
?? ? ?? int it = -3;
??????? byte bt = (byte)it;// it 是 int 型,不能自動轉換為byte,因此強轉
?? ? ?? System.out.println(bt);
??? }
}
3.表達式類型的自動提升
規(guī)則:整個表達式的數(shù)據(jù)類型,與表達式中最高等級的運算數(shù)的類型相同。
自動提升程序 及 運行結果:
public class 自動提升
??? {
??????? public static void main(String[] args)
?? ? ?? {
?? ? ?? byte bt = 2; //? 2 是 int 型。
?????? ? ? ? ? ? ? ? ? ?? //? 由于2在 byte 范圍,而是直接賦整數(shù)值
?? ? ??????????????????? //? 系統(tǒng)會自動將它當成 byte 處理。
? ? ? ? bt = bt + 1;????? //? 錯誤的? ? ? ? ? ? 正確應該為:bt = (byte)(bt + 1)
?? ? ???????????????????????????????? //? 1 默認是 int 型
?? ? ??????????????????????????????? //? 整個表達式的類型與 1 的類型相同,因此表達式的類型就提升成了 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,整個表達式依然是 int 型。
??????? System.out.println(it);
??????? it = 10;
?? ? ?? double du = it / 4; // it是int,4也是int,整個表達式依然是 int 型。
?? ? ?? System.out.println(du);
??? }
}
直接量:
??? 直接在源代碼中指定的值,就是直接量。
??? 8 個基本數(shù)據(jù)類型,都可以指定直接量。
??? boolean 類型,只有兩個直接變量:true,false
? ? null 直接量,只能賦值給引用變量。null 直接量不能賦值給基本類型的變量。
2.引用數(shù)據(jù)類型
類,接口,數(shù)組
以上,未完
寫在最后:
今早終于把東西搬過來了,總算是為自己可能三個月的實習找到了一個窩!!!昨天坐一號線地鐵去大望路找女票,地鐵的一幕引發(fā)了我的思考,一對小夫妻帶著大概幾個月的娃,孩子哭哭啼啼,孩子的父親并沒有多大耐心,只有母親去安慰孩子……或許再過幾年,我也要為人父,本來是覺得這件事距離我很遠的啊,再看看公司的前輩,也有很多已經(jīng)結婚了。北京這個地方,確實很迷人,扎根北京的想法我也不知道想過沒,總之作為女票口中第一代進京的我們來說,是有些難吧,可能終將有一天,我也會變成房奴吧,哈哈。但是不管怎么說,還是要抓住眼下,世界會殘酷的淘汰掉不會改變的人(昨地鐵上看到的一句話),來,干了這碗驢雜湯!