1? Java 基本數(shù)據(jù)類型
變量就是申請內(nèi)存來存儲(chǔ)值。也就是說,當(dāng)創(chuàng)建變量的時(shí)候,需要在內(nèi)存中申請空間。
內(nèi)存管理系統(tǒng)根據(jù)變量的類型為變量分配存儲(chǔ)空間,分配的空間只能用來儲(chǔ)存該類型數(shù)據(jù)。
因此,通過定義不同類型的變量,可以在內(nèi)存中儲(chǔ)存整數(shù)、小數(shù)或者字符。
Java 的兩大數(shù)據(jù)類型:
* 內(nèi)置數(shù)據(jù)類型
* 引用數(shù)據(jù)類型
1.1? 內(nèi)置數(shù)據(jù)類型
Java語言提供了八種基本類型。六種數(shù)字類型(四個(gè)整數(shù)型,兩個(gè)浮點(diǎn)型),一種字符類型,還有一種布爾型。
1.1.1? byte:
* byte 數(shù)據(jù)類型是8位、有符號的,以二進(jìn)制補(bǔ)碼表示的整數(shù);
* 最小值是?-128(-2^7);
* 最大值是?127(2^7-1);
* 默認(rèn)值是?0;
* byte 類型用在大型數(shù)組中節(jié)約空間,主要代替整數(shù),因?yàn)?byte 變量占用的空間只有 int 類型的四分之一;
* 例子:byte a = 100,byte b = -50。
1.1.2? short:
* short 數(shù)據(jù)類型是 16 位、有符號的以二進(jìn)制補(bǔ)碼表示的整數(shù)
* 最小值是?-32768(-2^15);
* 最大值是?32767(2^15 - 1);
* Short 數(shù)據(jù)類型也可以像 byte 那樣節(jié)省空間。一個(gè)short變量是int型變量所占空間的二分之一;
* 默認(rèn)值是?0;
* 例子:short s = 1000,short r = -20000。
1.1.3? int:
* int 數(shù)據(jù)類型是32位、有符號的以二進(jìn)制補(bǔ)碼表示的整數(shù);
* 最小值是?-2,147,483,648(-2^31);
* 最大值是?2,147,483,647(2^31 - 1);
* 一般地整型變量默認(rèn)為 int 類型;
* 默認(rèn)值是?0?;
* 例子:int a = 100000, int b = -200000。
1.1.4? long:
* long 數(shù)據(jù)類型是 64 位、有符號的以二進(jìn)制補(bǔ)碼表示的整數(shù);
* 最小值是?-9,223,372,036,854,775,808(-2^63);
* 最大值是?9,223,372,036,854,775,807(2^63 -1);
* 這種類型主要使用在需要比較大整數(shù)的系統(tǒng)上;
* 默認(rèn)值是?0L;
* 例子: long a = 100000L,Long b = -200000L。
"L"理論上不分大小寫,但是若寫成"l"容易與數(shù)字"1"混淆,不容易分辯。所以最好大寫。
1.1.5? float:
* float 數(shù)據(jù)類型是單精度、32位、符合IEEE 754標(biāo)準(zhǔn)的浮點(diǎn)數(shù);
* float 在儲(chǔ)存大型浮點(diǎn)數(shù)組的時(shí)候可節(jié)省內(nèi)存空間;
* 默認(rèn)值是?0.0f;
* 浮點(diǎn)數(shù)不能用來表示精確的值,如貨幣;
* 例子:float f1 = 234.5f。
1.1.6? double:
* double 數(shù)據(jù)類型是雙精度、64 位、符合IEEE 754標(biāo)準(zhǔn)的浮點(diǎn)數(shù);
* 浮點(diǎn)數(shù)的默認(rèn)類型為double類型;
* double類型同樣不能表示精確的值,如貨幣;
* 默認(rèn)值是?0.0d;
* 例子:double d1 = 123.4。
1.1.7? boolean:
* boolean數(shù)據(jù)類型表示一位的信息;
* 只有兩個(gè)取值:true 和 false;
* 這種類型只作為一種標(biāo)志來記錄 true/false 情況;
* 默認(rèn)值是?false;
* 例子:boolean one = true。
1.1.8 char:
* char類型是一個(gè)單一的 16 位 Unicode 字符;
* 最小值是?\u0000(即為0);
* 最大值是?\uffff(即為65,535);
* char 數(shù)據(jù)類型可以儲(chǔ)存任何字符;
* 例子:char letter = 'A';。
?
?
2? ?引用類型
* 在Java中,引用類型的變量非常類似于C/C++的指針。引用類型指向一個(gè)對象,指向?qū)ο蟮淖兞渴且米兞俊_@些變量在聲明時(shí)被指定為一個(gè)特定的類型,比如
Employee、Puppy 等。變量一旦聲明后,類型就不能被改變了。
* 對象、數(shù)組都是引用數(shù)據(jù)類型。
* 所有引用類型的默認(rèn)值都是null。
* 一個(gè)引用變量可以用來引用任何與之兼容的類型。
* 例子:Site site = new Site("Runoob")。
?
3? ? 常量的概述
常量是指在程序運(yùn)行過程中其值不能改變的量。
3.1? ?常量類型
Java中常量的分類:
??? 整數(shù)常量 : 所有整數(shù)
??? 小數(shù)常量 : 所有小數(shù)
??? 布爾常量 : 只有true和false
??? 字符常量 :使用’’引起來的單個(gè)字符
??? 字符串常量 :使用“”引起來的字符序列,“”? 、“a” 、” ”?
??? null常量 : 只有一個(gè)值null
3.2? char 類型
char類型表示的是單個(gè)字符類型,任何數(shù)據(jù)使用單引號括起來的都是表示字符。字符只能有一個(gè)字符,比如:普通的老百姓穿上軍裝就是軍人。?? ????
??? 注意:特殊字符的轉(zhuǎn)義序列:轉(zhuǎn)義字符
?? 轉(zhuǎn)義字符的概述:
特殊字符使用”\”把其轉(zhuǎn)化成字符的本身輸出,那么使用”\”的字符稱作為轉(zhuǎn)移字符。
需求:使用輸出語句,打印出帶引號的信息例如輸出。
System.out.println("teacher said"java is
fun"");編譯是無法正常通過的。語法有錯(cuò)誤,編譯器讀到第二個(gè)引號就認(rèn)為是字符串的結(jié)束,剩余的不知道怎么處理。如何解決這個(gè)問題:java中使用轉(zhuǎn)義字符來表示特殊的字符。一個(gè)轉(zhuǎn)義字符以反斜杠(\)開始。
???? 問題:想要打印帶引號的字符串怎么辦,就可以使用反斜杠(\)后跟字符,這個(gè)反斜杠就是轉(zhuǎn)義字符。
?
\r 表示接受鍵盤輸入,相當(dāng)于按下回車。
\n 表示換行。
\t? 制表符,相當(dāng)于Table鍵
\b 退格鍵,相當(dāng)于Back Space
\’? 單引號
\’’ 雙引號
\\ 表示一個(gè)斜跨
上述問問題解決:System.out.println("teacher said\"java is fun\"");
注意:換行符就是另起一行,回車符就是回到一行的開頭,所以我們平時(shí)編寫文件的回車符應(yīng)該確切來說叫做回車換行符
?
Java中這8中基本數(shù)據(jù)類型都是小寫的。
?3.4??常量名的聲明規(guī)范:
多個(gè)單詞組成時(shí),字母全部大寫,多個(gè)單詞之間使用_分隔(例:INTEGER_CACHE)
注意:只是為了增加規(guī)范性、可讀性而做的一種約定,標(biāo)識(shí)符在定義的時(shí)候最 ????????????? 好見名知意,提高代碼閱讀性。
?
4? ?自動(dòng)類型轉(zhuǎn)換
整型、實(shí)型(常量)、字符型數(shù)據(jù)可以混合運(yùn)算。運(yùn)算中,不同類型的數(shù)據(jù)先轉(zhuǎn)化為同一類型,然后進(jìn)行運(yùn)算。
轉(zhuǎn)換從低級到高級。
?
低 ------------------------------------> 高 byte,short,char—> int —> long—> float
—> double
數(shù)據(jù)類型轉(zhuǎn)換必須滿足如下規(guī)則:
*
1. 不能對boolean類型進(jìn)行類型轉(zhuǎn)換。
*
2. 不能把對象類型轉(zhuǎn)換成不相關(guān)類的對象。
*
3. 在把容量大的類型轉(zhuǎn)換為容量小的類型時(shí)必須使用強(qiáng)制類型轉(zhuǎn)換。
*
4. 轉(zhuǎn)換過程中可能導(dǎo)致溢出或損失精度
* 5. 浮點(diǎn)數(shù)到整數(shù)的轉(zhuǎn)換是通過舍棄小數(shù)得到,而不是四舍五入
自動(dòng)類型轉(zhuǎn)換
必須滿足轉(zhuǎn)換前的數(shù)據(jù)類型的位數(shù)要低于轉(zhuǎn)換后的數(shù)據(jù)類型,例如:
short數(shù)據(jù)類型的位數(shù)為16位,就可以自動(dòng)轉(zhuǎn)換位數(shù)為32的int類型,同樣float數(shù)據(jù)類型的位數(shù)為32,可以自動(dòng)轉(zhuǎn)換為64位的double類型。
?
強(qiáng)制類型轉(zhuǎn)換
*
1. 條件是轉(zhuǎn)換的數(shù)據(jù)類型必須是兼容的。
*
2. 格式:(type)value type是要強(qiáng)制類型轉(zhuǎn)換后的數(shù)據(jù)類型?
?
隱含強(qiáng)制類型轉(zhuǎn)換
*
1. 整數(shù)的默認(rèn)類型是 int。
*
2. 浮點(diǎn)型不存在這種情況,因?yàn)樵诙x float 類型時(shí)必須在數(shù)字后面跟上 F 或者 f。
5??? final關(guān)鍵字
?
?? 1:定義靜態(tài)方法求圓的面積
?? 2:定義靜態(tài)方法求圓的周長
?? 3:發(fā)現(xiàn)方法中有重復(fù)的代碼,就是PI,圓周率。
????? 1:如果需要提高計(jì)算精度,就需要修改每個(gè)方法中圓周率。
?? 4:描述一個(gè)變量
????? 1:方法都是靜態(tài)的,靜態(tài)只能訪問靜態(tài),所以變量也定義為靜態(tài)的。
public static double PI=3.14;
????????? 1:如果定義為public后,新的問題,類名.PI=300; 改變了PI的值。
2:修改為private,修改為private后進(jìn)行了封裝,需要getset公共訪問方法。
????????? 3:現(xiàn)有的知識(shí)不能解決這樣的問題了??梢允褂胒inal
5.1 使用final
?????? ?1:final關(guān)鍵字主要用于修飾類、類成員、方法、以及方法的形參。
? ? ? ?2:final修飾成員屬性:
?
????????? 1:說明該成員屬性是常量,不能被修改。
???????????? public static final double PI=3.14;
? ? ? ? ? ? ? ? ?1:public :訪問權(quán)限最大
? ? ? ? ? ? ? ? ?2:static :內(nèi)存中只有一份
? ? ? ? ? ? ? ? ?3:final? :是一個(gè)常量
? ? ? ? ? ? ? ? ?4:常量名大寫
? ? ? ? ? ? ? ? ?5:必須初賦值。
?
????????? 2:使用類名.成員。修改該成員的值,報(bào)錯(cuò)。--常量不能被修改
? ? ? ? ? ? ? ? 1:基本數(shù)據(jù)類型,final使值不變
? ? ? ? ? ? ? ? 2:對象引用,final使其引用恒定不變,無法讓其指向一個(gè)新的對象,但是對象自身卻可以被修改。
? ? ? ? ? ? ? ? 3:該關(guān)鍵字一般和static關(guān)鍵字結(jié)合使用
? ? ? ? ? ? ? ? ? ? ?1:常量可以優(yōu)先加載,不必等到創(chuàng)建對象的時(shí)候再初始化。
? ? ? ? ? ? ? ?4:final和static可以互換位置
? ? ? ? ? ? ? ?5:常量一般被修飾為final
????????? 3:fianl修飾類:
? ? ? ? ? ? ? ?1:該類是最終類,不能被繼承。
? ? ? ? ? ? ? ? ? ? 1:將父類加final修飾,子類繼承,就會(huì)報(bào)錯(cuò)。
? ? ? ? ? ? ? ?2:查看api文檔發(fā)現(xiàn)String類是final的。Integer類也是final的
? ? ? ? ? ? ? ? ? ? 1:為了防止代碼功能被重寫
? ? ? ? ? ? ? ? ? ? 2:該類沒有必要進(jìn)行擴(kuò)展
? ? ? ? ? 4:final修飾方法:
? ? ? ? ? ? ? ? ? ?1:該方法是最終方法,不能被重寫
? ? ? ? ? ? ? ? ? ?2:當(dāng)一個(gè)類被繼承,那么所有的非私有函數(shù)都將被繼承,如果函數(shù)不想被子類繼承并重寫可以將該函數(shù)final修飾
? ? ? ? ? ? ? ? ? ?3:當(dāng)一個(gè)類中的函數(shù)都被修飾為final時(shí),可以將類定義為final的。
? ? ? ? ? 5:final關(guān)鍵字修飾形參
? ? ? ? ? ? ? ? ? ?1:當(dāng)形參被修飾為final,那么該形參所屬的方法中不能被篡改。
? ? ? ? ? ? ? ? ? ?2: 項(xiàng)目中主要用于一些只用來遍歷未知數(shù)據(jù)的函數(shù)。將未知變量聲明為final的。增強(qiáng)數(shù)據(jù)的安全性。
熱門工具 換一換