java的八大根本數(shù)據(jù)類型分別是:1、整型的byte、short、int、long;2、字符型的char;3、浮點(diǎn)型的float、double;4、布爾型的boolean。
(引薦教程:java入門教程)
自從Java發(fā)布以來(lái),根本數(shù)據(jù)類型便是Java語(yǔ)言的一部分,分別是byte,short,int,long,char,float,double,boolean.
其間:
整型:byte,short,int,long
字符型:char
浮點(diǎn)型:float,double
布爾型:boolean
一.整型
Java中整型數(shù)據(jù)歸于有符號(hào)數(shù),即第一個(gè)bit位為0表明正整數(shù),第一個(gè)bit位為1表明負(fù)整數(shù)。在計(jì)算機(jī)中負(fù)數(shù)由補(bǔ)碼進(jìn)行表明,那么補(bǔ)碼怎么計(jì)算呢?
(視頻教程引薦:java視頻教程)
補(bǔ)碼=源碼取反+1;
如:
22,在計(jì)算機(jī)中的表明為00010110,
-22,取反:11101001,加1:11101010
byte
byte歸于Java中的整型,長(zhǎng)度為1字節(jié)8bit,取值10000000(-128)到01111111(127),變量初始化默認(rèn)值為0,包裝類Byte
short
short歸于Java中的整型,長(zhǎng)度為2字節(jié)16bit,取值1000000000000000(-32768)到0111111111111111(32767),變量初始化默認(rèn)值為0,包裝類Short
int
int歸于Java中的整型,長(zhǎng)度為4字節(jié)32bit,取值-2^31(-2,147,483,648)到2^31-1(2,147,483,647),變量初始化默認(rèn)值為0,包裝類Integer
long
long歸于Java中的整型,長(zhǎng)度為8字節(jié)64bit,取值-2^63(-9,223,372,036,854,775,808?)到2^63-1(9,223,372,036,854,775,8087),變量初始化默認(rèn)值為0或0L,包裝類Long
二.浮點(diǎn)型
Java中浮點(diǎn)型數(shù)據(jù)無(wú)法由二進(jìn)制直接表明,而是一種對(duì)于實(shí)數(shù)的近似數(shù)據(jù)表明法,它遵從IEEE754標(biāo)準(zhǔn)
float
float歸于Java中的浮點(diǎn)型,也叫單精度浮點(diǎn)型,長(zhǎng)度為4字節(jié)32bit,變量初始化默認(rèn)值0.0f,包裝類Float
1.float結(jié)構(gòu)
包含三部分:符號(hào)位、指數(shù)位、尾數(shù)位
符號(hào)位(S)指數(shù)位(E)尾數(shù)位(M)
長(zhǎng)度1bit8bit23bit
闡明0表明正數(shù),1表明負(fù)數(shù)格局為,E值規(guī)模:(0,255),指數(shù)位取值:(,方式為1.M或0.M。其間當(dāng)E=0時(shí),取1.M,稱為正規(guī)方式,當(dāng)E!=0時(shí),取0.M,稱為非正規(guī)方式
2.float取值
正規(guī)方式:
非正規(guī)方式:
根據(jù)上面公式很簡(jiǎn)單計(jì)算出float的取值規(guī)模為:
(最小值,當(dāng)符號(hào)位S取1,指數(shù)位E取255)
(最大值,當(dāng)符號(hào)位S取0,指數(shù)位E取255)
能取到其間的近似數(shù)據(jù)。
留意:根據(jù)指數(shù)位和尾數(shù)位的取值不同,還有許多特殊情況,如NAN,正無(wú)量,負(fù)無(wú)量,但平時(shí)根本不會(huì)用到,這兒不再深化;一起由于是近似值,因而無(wú)法表明金額,表明金額主張運(yùn)用BigDecimal
double
double歸于Java中的浮點(diǎn)型,也叫雙精度浮點(diǎn)型,長(zhǎng)度為8字節(jié)64bit,變量初始化默認(rèn)值0.0d,包裝類Double
1.double結(jié)構(gòu)
包含三部分:符號(hào)位、指數(shù)位、尾數(shù)位
符號(hào)位(S)指數(shù)位(E)尾數(shù)位(M)
長(zhǎng)度1bit11bit52bit
闡明0表明正數(shù),1表明負(fù)數(shù)格局為,E值規(guī)模:(0,2047),指數(shù)位取值:(,)方式為1.M或0.M。其間當(dāng)E=0時(shí),取1.M,稱為正規(guī)方式,當(dāng)E!=0時(shí),取0.M,稱為非正規(guī)方式
2.double取值
正規(guī)方式:
非正規(guī)方式:
根據(jù)上面公式很簡(jiǎn)單計(jì)算出double的取值規(guī)模為:
(最小值,當(dāng)符號(hào)位S取1,指數(shù)位E取2047)
(最大值,當(dāng)符號(hào)位S取0,指數(shù)位E取2047)
能取到其間的近似數(shù)據(jù)。
留意:根據(jù)指數(shù)位和尾數(shù)位的取值不同,還有許多特殊情況,如NAN,正無(wú)量,負(fù)無(wú)量,但平時(shí)根本不會(huì)用到,這兒不再深化;一起由于是近似值,因而無(wú)法表明金額,表明金額主張運(yùn)用BigDecimal
三.字符型
char
char歸于java中的字符型,占2字節(jié)16bit,可以賦值單字符以及整型數(shù)值,變量初始化無(wú)默認(rèn)值,包裝類Character。
如:
chara=’a’;
chara=’中’;
chara=12;//取值規(guī)模0~65536,因?yàn)閏har類型在ASCII字符編碼中,有對(duì)應(yīng)的數(shù)值,可直接做運(yùn)算,輸出字符表中對(duì)應(yīng)的字符
四.布爾型
boolean
在JVM中并沒有供給boolean專用的字節(jié)碼指令,而boolean類型數(shù)據(jù)在經(jīng)過(guò)編譯后在JVM中會(huì)經(jīng)過(guò)int類型來(lái)表明,此刻boolean數(shù)據(jù)4字節(jié)32位,而boolean數(shù)組將會(huì)被編碼成Java虛擬機(jī)的byte數(shù)組,此刻每個(gè)boolean數(shù)據(jù)1字節(jié)占8bit.
–Java虛擬機(jī)標(biāo)準(zhǔn)
面向目標(biāo)三大特性:封裝、承繼、多態(tài)。
封裝:
將類的某些信息躲藏在類內(nèi)部,不允許外部程序直接拜訪,而是通過(guò)該類供給的辦法來(lái)完結(jié)對(duì)躲藏信息的操作和拜訪。
承繼:
子類擁有父類的所有特色和辦法(除了private潤(rùn)飾的特色不能擁有),從而完結(jié)了完結(jié)代碼的復(fù)用;
多態(tài):
運(yùn)用父類引證接受,不同的子類的目標(biāo)實(shí)例,父類引證調(diào)用相同的辦法,依據(jù)子類不同的實(shí)例,發(fā)生不同的成果1、封裝
1)什么是封裝
概念:盡可能躲藏目標(biāo)的內(nèi)部完結(jié)細(xì)節(jié),控制目標(biāo)的修正及拜訪的權(quán)限。
拜訪潤(rùn)飾符:private(可將特色潤(rùn)飾為私有,僅本類可見)
2)公共拜訪辦法
以拜訪辦法的方式,從而完結(jié)賦值與取值操作。
問(wèn)題:依舊沒有解決到不合法數(shù)據(jù)錄入!
供給公共拜訪辦法,以保證數(shù)據(jù)的正常錄入。
命名標(biāo)準(zhǔn):
賦值:setXXX()//運(yùn)用辦法參數(shù)完結(jié)賦值
取值:getXXX()//運(yùn)用辦法回來(lái)值完結(jié)取值
3)示例
publicstaticvoidmain(String[]args){
inta;
Numnum=newNum();
//傳入值100
num.setNum(100);
System.out.println(num.getNum());
}
privateinta;
//在調(diào)用get辦法時(shí),回來(lái)本類a的值
publicintgetNum(){
returna;
}
//接受傳入的值100,并賦值給本類的a
publicvoidsetNum(intnum){
this.a=num;
}
4)過(guò)濾有用數(shù)據(jù)
在公共的拜訪辦法內(nèi)部,增加邏輯判別,從而過(guò)濾掉不合法數(shù)據(jù),以保證數(shù)據(jù)安全。
5)總結(jié)
get/set辦法是外界拜訪目標(biāo)私有特色的唯一通道,辦法內(nèi)部可對(duì)數(shù)據(jù)進(jìn)行檢測(cè)和過(guò)濾。
2、承繼
1)程序中的承繼
程序中的承繼,是類與類之間特征和行為的一種贈(zèng)與或取得。
兩個(gè)類之間的承繼聯(lián)系,必須滿意“isa”的聯(lián)系。
2)父類的挑選
現(xiàn)實(shí)生活中,很多類別之間都存在著承繼聯(lián)系,都滿意“isa”的聯(lián)系。
狗是一種動(dòng)物、狗是一種生物、狗是一種物質(zhì)。
多個(gè)類別都可作為“狗”的父類,需求從中挑選出最適合的父類。
功用越精密,重合點(diǎn)越多,越接近直接父類。
功用越粗略,重合點(diǎn)越少,越接近Object類。(萬(wàn)物皆目標(biāo)的概念)
3)承繼
語(yǔ)法:class子類extends父類{}//界說(shuō)子類時(shí),顯現(xiàn)承繼父類
publicclass子類名extends父類名{
//代碼塊
}
運(yùn)用:發(fā)生承繼聯(lián)系之后,子類可以運(yùn)用父類中的特色和辦法,也可界說(shuō)子類獨(dú)有的特色和辦法。
優(yōu)點(diǎn):既提高代碼的復(fù)用性,又提高代碼的可擴(kuò)展性。
4)承繼的特色
Java為單承繼,一個(gè)類只能有一個(gè)直接父類,但可以多級(jí)承繼,特色和辦法逐級(jí)疊加。
5)不行承繼
結(jié)構(gòu)辦法:類中的結(jié)構(gòu)辦法,只擔(dān)任創(chuàng)建本類目標(biāo),不行承繼。
private潤(rùn)飾的特色和辦法:拜訪潤(rùn)飾符的一種,僅本類可見。
父子類不在同一個(gè)package中時(shí),default潤(rùn)飾的特色和辦法:拜訪潤(rùn)飾符的一種,僅同包可見。
3、辦法重寫
1)辦法的重寫/掩蓋
辦法重寫準(zhǔn)則:
辦法稱號(hào)、參數(shù)列表與父類相同。
回來(lái)值類型必須與父類相同或其子類
拜訪潤(rùn)飾符可與父類相同或是比父類更廣泛。
辦法重寫的履行:
子類重寫父類辦法后,調(diào)用時(shí)優(yōu)先履行子類重寫后的辦法。
辦法重寫的特性:
子類重寫父類辦法時(shí)子類辦法會(huì)掩蓋父類辦法。
子類重寫父類辦法,拜訪等級(jí)不能嚴(yán)于父類辦法。
子類重寫辦法名和類型與父類一樣。
父類的結(jié)構(gòu)辦法無(wú)法重寫,只能被掩蓋。
示例:
//父類
publicclassAnimal{
//父類中吃的辦法會(huì)輸出“玩玩玩”
publicvoidplay(){
System.out.println(“玩玩玩”);
}
//父類中睡的辦法會(huì)輸出“睡睡睡”
publicvoidsleep(){
System.out.println(“睡睡睡”);
}
}
/**
*狗類承繼父類
*/
publicclassDogextendsAnimal{
//進(jìn)行辦法重寫,將辦法重寫輸出為“狗玩飛碟”
publicvoidplay(){
System.out.println(“狗玩飛碟”);
}
}
publicclassTest{
publicstaticvoidmain(String[]args){
//實(shí)例化寵物目標(biāo)
Dogd=newDog();
d.play();
d.sleep();
}
}
運(yùn)轉(zhuǎn)輸出:
在這里刺進(jìn)圖片描繪
2)辦法重寫與辦法重載的區(qū)別
相同點(diǎn):辦法名相同
不同點(diǎn):
重載:參數(shù)列表不同,回來(lái)值與拜訪潤(rùn)飾符無(wú)關(guān)
重寫:參數(shù)列表相同,回來(lái)值相同或其子類,拜訪潤(rùn)飾符不能比父類更嚴(yán)
4、super關(guān)鍵字
1)super關(guān)鍵字
super關(guān)鍵字可在子類中拜訪父類的辦法。
運(yùn)用”super.”的方式拜訪父類的辦法,從而完結(jié)在子類中的復(fù)用;
再疊加額定的功用代碼,組成新的功用。
2)super調(diào)用父類無(wú)參結(jié)構(gòu)
super():表明調(diào)用父類無(wú)參結(jié)構(gòu)辦法。假如沒有顯現(xiàn)書寫,隱式存在于子類結(jié)構(gòu)辦法的首行。
3)super調(diào)用父類有參結(jié)構(gòu)
super():表明調(diào)用父類無(wú)參結(jié)構(gòu)辦法。
super(實(shí)參):表明調(diào)用父類有參結(jié)構(gòu)辦法。
參結(jié)構(gòu)被履行
4)this與super
this或super運(yùn)用在結(jié)構(gòu)辦法中時(shí),都要求在首行。
當(dāng)子類結(jié)構(gòu)中運(yùn)用了this()或this(實(shí)參),即不行再一起書寫super()或super(實(shí)參),會(huì)由this()指向結(jié)構(gòu)辦法完結(jié)super()調(diào)用。
classA{
publicA(){
System.out.println((“A-無(wú)參結(jié)構(gòu)”));
}
publicA(intvalue){
System.out.println((“A-有參結(jié)構(gòu)”));
}
}
classBextendsA{
publicB(){
super();
System.out.println(“B-無(wú)參結(jié)構(gòu)”);
}
publicB(intvalue){
//super();這兩貨不能跟一起存在
this();
System.out.println((“B-有參結(jié)構(gòu)”));
}
}
5、多態(tài)
概念:父類引證指向子類目標(biāo),從而發(fā)生多種形態(tài)。
二者具有直接或間接的承繼聯(lián)系時(shí),父類引證可指向子類目標(biāo),即構(gòu)成多態(tài)。
父類引證僅可調(diào)用父類所聲明的特色和辦法,不行調(diào)用子類獨(dú)有的特色和辦法。
1)多態(tài)的運(yùn)用
辦法重載可以解決接收不同目標(biāo)參數(shù)的問(wèn)題,但其缺點(diǎn)也比較顯著。
首要,隨著子類的增加,Master類需求持續(xù)供給大量的辦法重載,多次修正并重新編譯源文件。
其次,每一個(gè)feed辦法與某一種詳細(xì)類型構(gòu)成了密不行分的聯(lián)系,耦合太高。
場(chǎng)景一:運(yùn)用父類作為辦法形參完結(jié)多態(tài),使辦法參數(shù)的類型更為廣泛。
publicclassAnimal{
//父類中吃的辦法會(huì)輸出“玩玩玩”
publicvoidplay(){
System.out.println(“玩玩玩”);
}
//父類中睡的辦法會(huì)輸出“睡睡睡”
publicvoidsleep(){
System.out.println(“睡睡睡”);
}
}
/**
*狗類承繼父類
*
*
*
*/
publicclassDogextendsAnimal{
//狗類特有的辦法“狗吃狗糧”
publicvoideat(){
System.out.println(“狗吃狗糧”);
}
}
publicclassTest{
publicstaticvoidmain(String[]args){
//實(shí)例化寵物目標(biāo)
Animald=newDog();
d.play();
d.sleep();
//Themethodeat()isundefinedforthetypeAnimal
//關(guān)于類型動(dòng)物,eat()辦法未界說(shuō)
//當(dāng)咱們?nèi)フ{(diào)用子類目標(biāo)的特有辦法時(shí),就會(huì)爆出上面的過(guò)錯(cuò)提示
//假如想要完結(jié)子類特有辦法,就必須要強(qiáng)轉(zhuǎn)
//d.eat();
((Dog)d).eat();
}
}
運(yùn)轉(zhuǎn)輸出:
在這里刺進(jìn)圖片描繪
場(chǎng)景二:運(yùn)用父類作為辦法回來(lái)值完結(jié)多態(tài),使辦法可以回來(lái)不同子類目標(biāo)。
示例:
//動(dòng)物類父類
publicclassAnimal{
publicvoidfood(){
System.out.println(“…”);
}
}
//用extends關(guān)鍵字,承繼父類特色
publicclassDogextendsAnimal{
publicvoidfood(){
System.out.println(“狗吃狗糧”);
}
publicvoidruning(){
System.out.println(“一向跑跑跳跳”);
}
}
//用extends關(guān)鍵字,承繼父類特色
publicclassFishextendsAnimal{
publicvoidfood(){
System.out.println(“大魚吃小魚,小魚吃蝦米”);
}
publicvoidswimming(){
System.out.println(“小魚兒,一向游”);
}
}
publicclassMaster{
//傳入你的動(dòng)物,并去給它喂養(yǎng)
publicvoidfood(Animalanimal){
System.out.println(“喂養(yǎng)”);
animal.food();
}
}
importjava.util.Scanner;
publicclassShopping{
//你沒有動(dòng)物,所以animal為空
Animalanimal=null;
//判別你要購(gòu)買的寵物,并回來(lái)寵物類(狗、魚)
publicAnimalshopping(inta){
if(a==1){
animal=newDog();
}elseif(a==2){
animal=newFish();
}
//this.animal=animal;
returnanimal;
}
publicvoidshowMenu(){
Scannerinput=newScanner(System.in);
System.out.println(“歡迎來(lái)到一只寵物寵物店”);
System.out.println(“請(qǐng)?zhí)暨x喜歡的寵物:”);
System.out.println(“1.狗2.魚”);
inta=input.nextInt();
Animalanimal=shopping(a);
Mastermm=newMaster();
mm.food(animal);
//用instanceof判別你買的是狗仍是魚。
//狗就履行狗的特色和辦法,魚就履行魚的特色和辦法
if(animalinstanceofDog){
Dogd=(Dog)animal;
d.runing();
}elseif(animalinstanceofFish){
Fishf=(Fish)animal;
f.swimming();
}
}
}
//測(cè)驗(yàn)類
publicclasstext{
publicstaticvoidmain(String[]args){
Shoppingshop=newShopping();
shop.showMenu();
}
}
運(yùn)轉(zhuǎn)成果:
在這里刺進(jìn)圖片描繪
2)多態(tài)的靜態(tài)和動(dòng)態(tài)完結(jié)
動(dòng)態(tài)綁定:即為重寫/掩蓋,辦法的重寫
動(dòng)態(tài)綁定也叫后期綁定,在運(yùn)轉(zhuǎn)時(shí),虛擬機(jī)依據(jù)詳細(xì)目標(biāo)實(shí)例的類型進(jìn)行綁定,或許說(shuō)是只要目標(biāo)在虛擬機(jī)中運(yùn)轉(zhuǎn)創(chuàng)建了之后,才能確定辦法屬于哪一個(gè)目標(biāo)實(shí)例的
依據(jù)實(shí)際目標(biāo)是什么,就去找相應(yīng)目標(biāo)辦法去履行。
動(dòng)態(tài)綁定是在運(yùn)轉(zhuǎn)時(shí)才會(huì)履行(例如重寫的辦法)。
靜態(tài)綁定:即為重載,辦法的重載
一個(gè)辦法的參數(shù)在編譯階段常被靜態(tài)地綁定,它是依據(jù)參數(shù)列表的不同來(lái)區(qū)分不同的函數(shù),通過(guò)修改之后會(huì)變成兩個(gè)不同的函數(shù)
依據(jù)類型找相應(yīng)的特色或許靜態(tài)變量。
靜態(tài)綁定是在編譯時(shí)履行(如成員變量,靜態(tài)辦法)。
廣州天河區(qū)珠江新城富力盈力大廈北塔2706
020-38013166(網(wǎng)站咨詢專線)
400-001-5281 (售后服務(wù)熱線)
深圳市坂田十二橡樹莊園F1-7棟
Site/ http://www.szciya.com
E-mail/ itciya@vip.163.com
品牌服務(wù)專線:400-001-5281
長(zhǎng)沙市天心區(qū)芙蓉中路三段398號(hào)新時(shí)空大廈5樓
聯(lián)系電話/ (+86 0731)88282200
品牌服務(wù)專線/ 400-966-8830
旗下運(yùn)營(yíng)網(wǎng)站:
Copyright ? 2016 廣州思洋文化傳播有限公司,保留所有權(quán)利。 粵ICP備09033321號(hào)