Java基本數(shù)據(jù)類型

目錄:

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);? //溢出? 補碼

??? }

}


整數(shù)Test



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);

}


浮點數(shù)Test


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);

??? }

}


字符型Test

練習:簡單隨機“驗證碼”? 程序 及 運行結果:

//? 生成一個六位、隨機大寫字母

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ù)值

??????? }

??? }

}


RandomStr

/****************************************

補充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)結婚了。北京這個地方,確實很迷人,扎根北京的想法我也不知道想過沒,總之作為女票口中第一代進京的我們來說,是有些難吧,可能終將有一天,我也會變成房奴吧,哈哈。但是不管怎么說,還是要抓住眼下,世界會殘酷的淘汰掉不會改變的人(昨地鐵上看到的一句話),來,干了這碗驢雜湯!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容