搞java不细心_Java 2 (基础总结)
注:Java采用Unicode符號(hào)集,每個(gè)字符占2個(gè)字節(jié),無論英文還是中文還是其他字符。
標(biāo)識(shí)符
為變量、類或方法起的名稱
以字母,下劃線、或者$符號(hào)開頭
由字母、數(shù)字、下劃線或者$符號(hào)開頭
區(qū)分大小寫,沒有長(zhǎng)度限制,不能使用關(guān)鍵字
盡量取得容易辨識(shí),見名知意
如:identifier、userName、user_Name、_sys_varl、$change
基本數(shù)據(jù)類型
Java定義了8中基本數(shù)據(jù)類型
布爾值----boolean(只有true和false兩種類型)
字符-------char?(?16?位的Unicode字符?用單引號(hào)(?''?)標(biāo)注;'a'表示字母a?????'\t'?表示制表符?????'\u????'中?用確切的代替???申明并且初始化:?char?c?=?'A'????申明變量??char?ch1,ch2)
整數(shù)--------byte?(8位)?short(16)??int(32)??long(64)【以0開頭表示八進(jìn)制?;以0x開始表示16進(jìn)制】
浮點(diǎn)型-----float???double
變量
必須在類的內(nèi)部【可以在方法外也可以在方法類】
在方法類定義的變量叫做局部變量,需要顯示的初始化
成員變量和類變量【對(duì)象】自動(dòng)初始化【數(shù)字初始化為0,對(duì)象初始化為null】
常量
在程序運(yùn)行中,其值保持不變的量
不同數(shù)據(jù)類型間的相互轉(zhuǎn)換【封裝Wrapper類】
Java中類的定義:
?Class?{
;
;
;
}
成員變量申明:
???;
修飾符:
final:修飾常量,常量的值不能被修改【例如?final?int?CONSTANT?=?50;】
static:申明靜態(tài)變量[類變量]?static?int?nCount;
方法的申明:
??[參數(shù)列表]{
語句;
}
方法參數(shù)的傳遞方式:
1、值傳遞:形參是基本數(shù)據(jù)類型,方法調(diào)用時(shí),實(shí)際參數(shù)把值傳遞給形式參數(shù),形式參數(shù)只是用實(shí)際參數(shù)的值初始化自己的存儲(chǔ)單元內(nèi)容;是兩個(gè)不同的存儲(chǔ)單元,所以方法執(zhí)行中,形式參數(shù)值的改變不會(huì)影響實(shí)際參數(shù)的值。
2、引用傳遞:形參類型是引用數(shù)據(jù)類型【傳遞地址】,方法調(diào)用時(shí),實(shí)際參數(shù)是對(duì)象或者數(shù)組,這時(shí),形式參數(shù)和實(shí)際參數(shù)指向的是同一地址,方法執(zhí)行中,對(duì)形式參數(shù)的操作實(shí)際上是對(duì)實(shí)際參數(shù)的操作,這個(gè)結(jié)果在方法結(jié)束后被保留了下來,所以對(duì)形式參數(shù)的操作實(shí)際上就是對(duì)實(shí)際參數(shù)的操作。
構(gòu)造器申明:
??[參數(shù)列表]{
語句;
}
注釋:構(gòu)造器沒有返回值,void也不行;如果有返回值,方法會(huì)被當(dāng)做普通函數(shù)執(zhí)行;
構(gòu)造器函數(shù)特點(diǎn):
作用:完成對(duì)類對(duì)象的初始化
名稱必須和類名相同
不能有返回值,不能有 return 語句
一般申明為Public類型
構(gòu)造器的使用:
1、不能現(xiàn)實(shí)的調(diào)用
2、在創(chuàng)建一個(gè)類的對(duì)象時(shí),系統(tǒng)自動(dòng)調(diào)用構(gòu)造器為該對(duì)象初始化
3、構(gòu)造器只能和new關(guān)鍵字一起使用
格式:
類名??對(duì)象名???=??new?構(gòu)造函數(shù)名稱(成員變量的初始值)?;
默認(rèn)構(gòu)造器:
1、每個(gè)類至少有一個(gè)構(gòu)造器
2、如果不編寫構(gòu)造函數(shù),系統(tǒng)自動(dòng)添加默認(rèn)的構(gòu)造函數(shù)【默認(rèn)構(gòu)造函數(shù)不帶參數(shù),默認(rèn)構(gòu)造函數(shù)函數(shù)體為空】
3、不必編寫構(gòu)造函數(shù)就能使用new?XXX()??創(chuàng)建實(shí)例
對(duì)象創(chuàng)建格式:
?=?new?(實(shí)參)
對(duì)象的清除:
對(duì)象為null時(shí),Java自動(dòng)調(diào)用垃圾回收機(jī)制清除對(duì)象,釋放對(duì)象占用的內(nèi)存空間
手動(dòng)編寫finalize()?方法撤銷對(duì)象???--?不提倡
對(duì)象的內(nèi)存模型:
棧內(nèi)存:方法中定義的變量(基本類型和引用類型)。超過變量的作用域,自動(dòng)釋放變量的內(nèi)存
堆內(nèi)存:new?創(chuàng)建的對(duì)象(包括數(shù)組),由系統(tǒng)自動(dòng)回收
類的繼承【僅支持單繼承】
?class??extends?{
申明;
}
子類可以繼承父類中非private的方法和屬性;子類可以添加新的屬性和方法;【程序代碼重,減少冗余】
方法的重載(overload):
1、一個(gè)類中有多個(gè)同名的方法
2、條件:參數(shù)的個(gè)數(shù)不同;參數(shù)的類型不同
3、如果兩個(gè)方法只有返回值不一樣,不是重載,會(huì)報(bào)錯(cuò)
方法的覆蓋(override):
1、子類可以修改父類繼承過來的行為
2、子類可以創(chuàng)建和父類的方法不同功能的方法,但是下面必須相同:【方法名、返回值、參數(shù)列表】
super關(guān)鍵字:
往往在覆蓋方法時(shí),真正不目的不是代替現(xiàn)有的行為,而是在某些方面擴(kuò)展那些行為;
類中使用super關(guān)鍵字指向父類的成員?包括數(shù)據(jù)和方法;
3中使用方法:
super.方法名([參數(shù)表]);??----?調(diào)用父類的方法
super.成員變量名;???????----?訪問父類的成員變量
super([參數(shù)表]);????????----??調(diào)用父類的構(gòu)造函數(shù)
構(gòu)造函數(shù)不能被繼承:
子類從父類繼承所有的方法和變量
子類不能繼承父類的構(gòu)造函數(shù)
有兩種方式可以獲取構(gòu)造函數(shù):1、使用默認(rèn)的構(gòu)造函數(shù)?2、編寫1個(gè)或者多個(gè)構(gòu)造函數(shù)
調(diào)用父類的構(gòu)造函數(shù):
要調(diào)用父類的構(gòu)造函數(shù),必須在子類構(gòu)造函數(shù)的第一行使用super關(guān)鍵字
要調(diào)用特定的父類的構(gòu)造函數(shù),必須為super提供參數(shù)
如果沒有this或者super調(diào)用,編譯器會(huì)插入一個(gè)對(duì)父類無參數(shù)構(gòu)造函數(shù)的隱式調(diào)用:
super();
變量的多態(tài):
類型為X的參考變量,指向的對(duì)象類型既可以是X,也可以是X的子類;
如:?Employee?x?=?new?Manager();????Employee?y?=?new?Employee();
實(shí)例方法能夠被覆蓋,靜態(tài)(static) 方法不能被覆蓋
原因:
靜態(tài)方法在編譯時(shí)候,根據(jù)調(diào)用該方法的類或者對(duì)象所屬的類決定
實(shí)例方法在運(yùn)行時(shí)根據(jù)對(duì)象所屬的類決定
如:Super?s?=?new?Sub();???編譯時(shí)候S是Super類的對(duì)象,運(yùn)行時(shí)?S?指向Sub類的對(duì)象;
instanceof操作符:
可以根據(jù)對(duì)象所屬的類進(jìn)行不同的處理
抽象類:只能被繼承,不能被實(shí)例化的類
定義格式:
abstract?class?類名{
abstract?返回值類型??方法名[參數(shù)列表];
...
}
說明:
抽象類中可以包含抽象方法和非抽象方法,也可以不包含抽象方法和非抽象方法;只要有一個(gè)抽象方法,就屬于抽象類;
abstract?class?Animal{
public?abstract?void?eat();
}
class?Dog?extends?Animal{
public?void?eat(){System.out.println("狗吃骨頭");}
}
class?Cat?extends?Animal{
public?void?eat(){System.out.println("貓吃老鼠");}
}
class?Wolf?extends?Animal{
public?void?eat(){System.out.println("狼吃羊");}
}
說明:不能創(chuàng)建抽象類的對(duì)象,即不能被實(shí)例化;
使用時(shí),必須用起創(chuàng)建子類
子類可以定義自己的成員變量和方法,但是必須將父類的所有抽象方法代碼寫完;
如果子類只是實(shí)現(xiàn)了部分抽象的方法,那么,該類仍然是抽象類;
最終類:
final?類不能被子類化;如Java.lang.String?是final?類,這樣做是基于安全的考慮;
標(biāo)記為final的方法不能被覆蓋;處于安全的考慮,如果方法的實(shí)現(xiàn)不應(yīng)改變,而且對(duì)對(duì)象的一致性要求比較高,則可以創(chuàng)建一個(gè)final方法。
標(biāo)記為final的變量代表常量,只能一次賦值;
接口:
使用interface關(guān)鍵字申明,可以支持多重繼承
接口中只能包含:
抽象方法;
常量(默認(rèn)為 public static final )【用得較少】
說明:
1、接口本身只是提供定義,使用時(shí),必須通過類實(shí)現(xiàn)接口(?implements?)?實(shí)現(xiàn)接口時(shí),必須實(shí)現(xiàn)所有的方法。否則該類還是抽象類(?abstract?class?)。
2、一個(gè)雷尅實(shí)現(xiàn)多個(gè)接口。
3、擴(kuò)展子句(extends?)必須在實(shí)現(xiàn)子句(?implements?)之前
包:
package???[.]*;
如:package shipping.domain;
說明:
1、如果有包申明,必須在源文件開始處申明。他的前面只能有空白和注釋,不能有其他語句;
2、每個(gè)源文件只能有一個(gè)包申明;
3、如果沒有包申明,則該類屬于"默認(rèn)"包(沒有名稱的包)
4、包的名稱有層次,且用?.?分開;
import語句:
基本語法:
import?[.].
或者import?[.].*;
?
總結(jié)
以上是生活随笔為你收集整理的搞java不细心_Java 2 (基础总结)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 默认焦点_按钮活动焦点阴影默认
- 下一篇: java教务系统类设计_基于Java E