Java 入門知識(shí)學(xué)習(xí)筆記 (類和對(duì)象)

一盏袄、類和對(duì)象的定義及關(guān)系

1、類是同一類別對(duì)象的抽象定義葱她;可以理解為是某一類具體對(duì)象的模子撩扒,確定對(duì)象將會(huì)擁有的特性,包括該類對(duì)象具備的屬性和方法吨些。

2搓谆、對(duì)象是對(duì)類的一種具體化的客觀存在,是對(duì)類的具體實(shí)例化豪墅。要?jiǎng)?chuàng)建一個(gè)對(duì)象泉手,必須基于類,即先要?jiǎng)?chuàng)建可描述該對(duì)象的類偶器。

3斩萌、創(chuàng)建一個(gè)類

publicclass Telphone {

//屬性(成員變量):有什么

float screen;

float cpu;

float mem;

//方法 :干什么

void call(){

System.out.println("Telphone有打電話的功能!");

}

void sendMessage(){

System.out.println("Telphone有發(fā)短信的功能屏轰!");

}

}

4颊郎、創(chuàng)建一個(gè)對(duì)象 針對(duì)上面代碼創(chuàng)建類的創(chuàng)建對(duì)象方法

Telphone myphone=new Telphone();

小編相信這里有很多學(xué)習(xí)java的朋友,小編整理了一份java方面的學(xué)習(xí)資料霎苗,想要獲取的可以加我的java學(xué)習(xí)群的喲袭艺,928204055。歡迎愛學(xué)習(xí)Java的你們叨粘。

5猾编、對(duì)象的比較:

有兩種方法,分別為“==”運(yùn)算符和equals()方法升敲,但兩者有本質(zhì)的區(qū)別: (1)“==”運(yùn)算符比較的是兩個(gè)對(duì)象引用的地址是否相同答倡;

(2)equals()方法比較的是兩個(gè)對(duì)象引用所指的內(nèi)容是否相同

publicclass ClassCompare {

publicstaticvoid main(String[] args) {

String c1=new String("abc");

String c2=new String("abc");

String c3=c1;

System.out.println("c2==c3的運(yùn)算結(jié)果為: "+(c2==c3));

System.out.println("c2.equals(c3)的運(yùn)算結(jié)果為: "+(c2.equals(c3)));

}

}

/*首先為c1分配一塊內(nèi)存區(qū)域存儲(chǔ)字符串a(chǎn)bc,并將c1指向設(shè)為該內(nèi)存區(qū)域

*然后同樣為c2分配另外一塊內(nèi)存區(qū)域存儲(chǔ)字符串a(chǎn)bc驴党,并將c2指向設(shè)為該內(nèi)存區(qū)域

*最后把c3的引用指向c1的指向

*/

6瘪撇、類的使用 同樣針對(duì)上面創(chuàng)建的Telphone類:

publicclass InitialTelphone {

publicstaticvoid main(String[] args) {

// TODO Auto-generated method stub

Telphone phone=new Telphone();

phone.sendMessage();

//這里各實(shí)例屬性值在未初始化賦值的時(shí)候默認(rèn)為0

phone.screen=5.0f;

phone.cpu=1.4f;

phone.mem=2.0f;10 phone.sendMessage();

//賦值后的顯示

}

}

二、成員變量和局部變量

1港庄、成員變量:在類中定義倔既,用于描述對(duì)象的屬性裁厅;成員變量可以被本類的方法使用扒秸,也可以被其他類的方法使用(依據(jù)該成員變量定義時(shí)的修飾詞)理卑。

2日戈、局部變量:在類的方法中定義,在方法中臨時(shí)保存數(shù)據(jù)疮装。局部變量只能在當(dāng)前方法中使用赊抖。

3全谤、區(qū)別:局部變量的作用域僅限于定義的方法內(nèi)部;成員變量的作用域在整個(gè)類內(nèi)部都是可見的安皱。Java中會(huì)給成員變量賦初始值调鬓,但不會(huì)給局部變量默認(rèn)賦初值,所以局部變量在使用前必須要賦值酌伊,否則會(huì)報(bào)錯(cuò)腾窝。

4、同一個(gè)方法中不能用同名的局部變量居砖;在不同的方法中虹脯,可以有同名局部變量。如果局部變量和成員變量同名悯蝉,在定義該局部變量的方法內(nèi)部局部變量有更高的優(yōu)先級(jí)归形。

publicclass Telphone {

float screen;

float cpu;

float mem;

int var;

void call(){

int localVar=10;

System.out.println(var);

//可以調(diào)用類的成員變量var托慨,默認(rèn)值為0

System.out.println("Telphone有打電話的功能鼻由!");

}

void sendMessage(){

System.out.println(localVar);

//調(diào)用call()方法中的局部變量會(huì)報(bào)錯(cuò)

System.out.println("Telphone有發(fā)短信的功能!");

}

}

三厚棵、類的構(gòu)造方法 1蕉世、構(gòu)造方法是定義在Java類中的一個(gè)用來初始化對(duì)象的方法。構(gòu)造方法與類同名婆硬,并且沒有返回值狠轻。

2、如果類定義中沒有設(shè)置無參數(shù)的構(gòu)造方法彬犯,則系統(tǒng)會(huì)自動(dòng)生成向楼。

//設(shè)置無參數(shù)的構(gòu)造方法

publicclass Telphone {

int sc=10; //定義成員變量

public Telphone(){

System.out.println("無參的構(gòu)造方法執(zhí)行了");

}

}

publicclass InitialTelphone {

publicstaticvoid main(String[] args) {

Telphone phone=new Telphone();

//可以看到構(gòu)造方法執(zhí)行了

System.out.println(phone.sc);

//可以看到輸出了成員變量sc的值為10

//當(dāng)沒有設(shè)置無參構(gòu)造方法時(shí),默認(rèn)的無參構(gòu)造方法會(huì)使對(duì)象擁有成員變量這個(gè)實(shí)例屬性

//當(dāng)定義了無參構(gòu)造方法時(shí)谐区,即便沒有顯式的定義成員變量的賦值湖蜕,對(duì)象也會(huì)擁有成員變量對(duì)應(yīng)的實(shí)例屬性

}

}

3、有參數(shù)的構(gòu)造方法通常只有一個(gè)目的:即給成員變量賦初值宋列。

publicclass Telphone {

float screen;

float cpu;

float mem;

public Telphone(){

System.out.println("無參的構(gòu)造方法執(zhí)行了");

}

//有參構(gòu)造方法與無參構(gòu)造方法同名

public Telphone(float screen,float cpu,float mem){

screen=screen;

cpu=cpu;

mem=mem;

System.out.println("有參的構(gòu)造方法執(zhí)行了");

}

}

publicclass InitialTelphone {

publicstaticvoid main(String[] args) {

// TODO Auto-generated method stub

Telphone phone=new Telphone();

Telphone phone1=new Telphone(5.2f,1.4f,2.0f);

}

}

4昭抒、當(dāng)類中定義了構(gòu)造方法(不管是有參還是無參)時(shí),系統(tǒng)都不會(huì)再默認(rèn)生成無參的構(gòu)造方法炼杖。

5灭返、構(gòu)造方法的重載:方法名相同,但參數(shù)不同的多個(gè)構(gòu)造方法坤邪,調(diào)用時(shí)候會(huì)自動(dòng)判斷熙含、根據(jù)不同的參數(shù)組合選擇對(duì)應(yīng)的構(gòu)造方法。如上面代碼中無參和有參的構(gòu)造方法為同名艇纺,都可以使用婆芦。

6怕磨、構(gòu)造方法中一般可以添加保證賦值合理的功能。

publicclass Telphone {

float screen;

float cpu;

float mem;

public Telphone(){

System.out.println("無參的構(gòu)造方法執(zhí)行了");

}

public Telphone(float screen,float cpu,float mem){

if(screen<3.5){

System.out.println("賦值不合理消约,已自動(dòng)賦值screen為3.5");

screen=3.5f;

}else{

screen=screen;

}

cpu=cpu;

mem=mem;

System.out.println("有參的構(gòu)造方法執(zhí)行了");

}

}

四肠鲫、靜態(tài)變量和靜態(tài)方法

1、靜態(tài)變量:當(dāng)同一個(gè)類的兩個(gè)或者多個(gè)對(duì)象需要在同一個(gè)內(nèi)存區(qū)域共享一個(gè)數(shù)據(jù)時(shí)或粮,可以通過定義類的靜態(tài)變量來實(shí)現(xiàn)导饲。由static修飾的成員變量即是靜態(tài)變量。

靜態(tài)變量可以通過類名.靜態(tài)變量名氯材,也可以通過實(shí)例對(duì)象名.靜態(tài)變量名來訪問渣锦,但因?yàn)槭峭活愃袑?shí)例對(duì)象的共享,所以一般采用類名.靜態(tài)變量名的方式進(jìn)行訪問氢哮。

2袋毙、靜態(tài)方法:對(duì)于方法的靜態(tài)修飾,與上述靜態(tài)變量規(guī)則一致冗尤。需要注意:

(1)靜態(tài)方法可以直接調(diào)用同一個(gè)類中的靜態(tài)成員(包括靜態(tài)變量和靜態(tài)方法)听盖,但不能直接調(diào)用非靜態(tài)成員。如果要調(diào)用一個(gè)類中的非靜態(tài)成員裂七,則必須先實(shí)例化對(duì)象皆看,通過實(shí)例對(duì)項(xiàng)目名.非靜態(tài)成員來調(diào)用。

(2)與靜態(tài)成員方法不一樣的是在普通成員方法中可以直接訪問同類的非靜態(tài)和靜態(tài)變量背零。

publicclass HelloWorld {

String name="imook";

static String hobby="java";

publicvoid show(){

System.out.println(name); //普通成員方法中可以使用非靜態(tài)成員

System.out.println(hobby); //也可以使用靜態(tài)成員

}

publicstaticvoid main(String[] args) {

System.out.println(name); //錯(cuò)誤腰吟!靜態(tài)方法main中不能使用類中的非靜態(tài)成員

System.out.println(HelloWolrd.name); //錯(cuò)誤同上

System.out.println(hobby);

//靜態(tài)方法中可以直接調(diào)用靜態(tài)成員

System.out.println(HelloWorld.hobby);

//也可以通過類名.靜態(tài)成員名進(jìn)行調(diào)用 HelloWorld myHelloWorld=new HelloWorld();

//創(chuàng)建一個(gè)實(shí)例對(duì)象

System.out.println(myHelloWorld.name);

//可以通過實(shí)例對(duì)象名.非靜態(tài)成員名進(jìn)行調(diào)用

System.out.println(myHelloWorld.hobby);

//也可以通過實(shí)例對(duì)象名.靜態(tài)成員名進(jìn)行調(diào)用(但不推薦)

HelloWorld.show(); //錯(cuò)誤!靜態(tài)方法main中不能使用類中的非靜態(tài)成員

show(); //錯(cuò)誤同上!

myHelloWorld.show(); }}

3徙瓶、通過 static 靜態(tài)初始化塊:靜態(tài)初始化塊只在類加載時(shí)執(zhí)行毛雇,且只執(zhí)行一次,并且靜態(tài)初始化塊只能給靜態(tài)變量賦值侦镇,不能給普通成員變量賦值灵疮。

publicclass HelloWorld {

int num1;

int num2;

staticint num3;

public HelloWorld(){

num1=11;

System.out.println("通過構(gòu)造方法給num1賦初值!");

}

{//通過普通初始化塊給num2賦初值

num2=222;

System.out.println("通過構(gòu)造方法給num2賦初值虽缕!");

}

static{ //通過靜態(tài)初始化塊給靜態(tài)變量num3賦初值

num3=3333;

System.out.println("通過構(gòu)造方法給num3賦初值始藕!");

}

publicstaticvoid main(String[] args) {

HelloWorld hello=new HelloWorld(); //構(gòu)造方法創(chuàng)建類的實(shí)例對(duì)象hello

/*

* 本次使用構(gòu)造方法時(shí),程序第一次加載HelloWorld類氮趋,會(huì)先執(zhí)行靜態(tài)初始化塊伍派,對(duì)應(yīng)給num3賦值3333,并輸出"通過構(gòu)造方法給num3賦初值剩胁!"

* 再執(zhí)行普通初始化塊诉植,對(duì)應(yīng)給num2賦值222并輸出"通過構(gòu)造方法給num2賦初值!"

* 最后才執(zhí)行構(gòu)造方法昵观,對(duì)應(yīng)給num1賦值11并輸出"通過構(gòu)造方法給num1賦初值晾腔!"

*/

System.out.println("hello的num1:"+hello.num1); //普通成員通過實(shí)例對(duì)象名訪問

System.out.println("hello的num2:"+hello.num2);

System.out.println("hello的num3:"+num3); //靜態(tài)成員直接訪問

HelloWorld hello2=new HelloWorld(); //構(gòu)造方法創(chuàng)建類的實(shí)例對(duì)象hello2

/*因靜態(tài)初始化塊只在加載時(shí)執(zhí)行一次舌稀,所以這次創(chuàng)建對(duì)象時(shí)不執(zhí)行靜態(tài)初始化塊

* 這里不執(zhí)行也是可以理解的,因?yàn)闃?gòu)造方法本身不包括靜態(tài)初始化塊灼擂,自然不會(huì)執(zhí)行

* 前次創(chuàng)建hello對(duì)象時(shí)并不是因?yàn)闃?gòu)造方法而去執(zhí)行靜態(tài)初始化塊壁查,而是加載類的時(shí)候執(zhí)行

*/

}

}

五、訪問修飾符和this關(guān)鍵字

1剔应、訪問修飾符包括 private\protected\public睡腿;其中private范圍對(duì)應(yīng)為本類;protected 范圍對(duì)應(yīng)本類峻贮、子類和同包席怪;public范圍為本類、子類纤控、同包及其他包挂捻。

如果沒有使用訪問修飾符,則默認(rèn)的訪問范圍是本類和同包船万。

2刻撒、this關(guān)鍵字用于引用對(duì)象,實(shí)質(zhì)上是對(duì)一個(gè)對(duì)象的引用唬涧。有些情況下可以省略this 關(guān)鍵字疫赎,如下例代碼:

privatevoid setName(String name){

this.name=name; //這里可以省略this盛撑,寫成name=name;

}

在當(dāng)需要返回一個(gè)類的對(duì)象時(shí)則必須顯式的使用this關(guān)鍵字:

/*創(chuàng)建一個(gè)返回類型為Book類的方法 *方法名為getBook */使用this引用對(duì)象將Book類的對(duì)象返回public Book getBook(){ return this; }

六碎节、實(shí)例

//漢諾塔

publicclass HanoiTower {

publicstaticint moveTimes=0;//設(shè)置全類下的靜態(tài)變量,計(jì)步器

publicstaticvoid moveDish(int num,char a,char b,char c){

if(num==1){

System.out.println("Move dish from "+a+" to "+c);

moveTimes++;

}else{

moveDish(num-1,a,c,b);

//先把num-1個(gè)盤子從a通過c放到b;這里不涉及具體的移動(dòng)抵卫,而是調(diào)用方法狮荔,所以計(jì)步器不加

System.out.println("Move dish from "+a+" to "+c);

//然后再把a(bǔ)上剩余的最后一個(gè)移動(dòng)到c,這里涉及到具體的移動(dòng)步驟,所以計(jì)步器加1

moveTimes++;

moveDish(num-1,b,a,c);

//最后解決b上的num-1個(gè)盤子介粘,通過a再移動(dòng)到c

}

}

publicstaticvoid main(String[] args) {

// TODO Auto-generated method stub

int numTimes=12;

moveDish(numTimes,'A','B','C');

System.out.println("總共移動(dòng)了"+moveTimes+"次殖氏!");

}

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市姻采,隨后出現(xiàn)的幾起案子雅采,更是在濱河造成了極大的恐慌,老刑警劉巖慨亲,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件婚瓜,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡刑棵,警方通過查閱死者的電腦和手機(jī)巴刻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蛉签,“玉大人胡陪,你說我怎么就攤上這事沥寥。” “怎么了柠座?”我有些...
    開封第一講書人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵邑雅,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我妈经,道長(zhǎng)蒂阱,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任狂塘,我火速辦了婚禮录煤,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘荞胡。我一直安慰自己妈踊,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開白布泪漂。 她就那樣靜靜地躺著廊营,像睡著了一般。 火紅的嫁衣襯著肌膚如雪萝勤。 梳的紋絲不亂的頭發(fā)上露筒,一...
    開封第一講書人閱讀 51,573評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音敌卓,去河邊找鬼慎式。 笑死,一個(gè)胖子當(dāng)著我的面吹牛趟径,可吹牛的內(nèi)容都是我干的瘪吏。 我是一名探鬼主播,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼蜗巧,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼掌眠!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起幕屹,我...
    開封第一講書人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤蓝丙,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后望拖,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體渺尘,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年靠娱,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了沧烈。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡像云,死狀恐怖锌雀,靈堂內(nèi)的尸體忽然破棺而出蚂夕,到底是詐尸還是另有隱情,我是刑警寧澤腋逆,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布婿牍,位于F島的核電站,受9級(jí)特大地震影響惩歉,放射性物質(zhì)發(fā)生泄漏等脂。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一撑蚌、第九天 我趴在偏房一處隱蔽的房頂上張望上遥。 院中可真熱鬧,春花似錦争涌、人聲如沸粉楚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽模软。三九已至,卻和暖如春饮潦,著一層夾襖步出監(jiān)牢的瞬間燃异,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工继蜡, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留回俐,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓壹瘟,卻偏偏與公主長(zhǎng)得像鲫剿,于是被迫代替她去往敵國(guó)和親鳄逾。 傳聞我的和親對(duì)象是個(gè)殘疾皇子稻轨,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Win7下如何打開DOS控制臺(tái)? a:開始--所有程序--附件--命令提示符 b:開始--搜索程序和文件--cmd...
    逍遙嘆6閱讀 1,599評(píng)論 4 12
  • 1.想起一句話雕凹,“ 你所浪費(fèi)的今天殴俱,是昨天死去的人奢望的明天。你所厭惡的現(xiàn)在枚抵,是未來的你回不去的曾經(jīng) 线欲。” 現(xiàn)在的...
    小墨_閱讀 199評(píng)論 0 0
  • 我自將心向明月汽摹,無奈明月照溝渠李丰。
    小女子的碎碎念閱讀 177評(píng)論 0 0
  • 今天最快樂的莫過于清早去沙灘玩,八點(diǎn)半多到的逼泣,太陽不太大趴泌,首先找了塊舒服的地方舟舒,放包做休息處,然后看今天的...
    歡歡樂樂1317閱讀 202評(píng)論 0 0
  • 我也想要一個(gè)高富帥 你值得擁有 啊哈哈哈哈哈哈哈哈哈哈嗜憔,優(yōu)秀 為了照片好看秃励,拼了 睡對(duì)角線很厲害了 你值得擁有 我...