JAVA入門小小白學(xué)習(xí)中ing(面向?qū)ο螅惡蛯?duì)象,java中定義類的格式,類的對(duì)象))

小豬學(xué)習(xí)

小小白慢慢學(xué)習(xí)中ing 第十天

努力努力


本日內(nèi)容(面向?qū)ο蟪踝R(shí))

1、生活中什么是面向?qū)ο?br>

洗衣服,吃飯

面向過程:關(guān)注點(diǎn)是過程 ————站在一個(gè)執(zhí)行者的角度去考慮事情,做事情

????//step1.找個(gè)盆

????//step2.收集要洗的衣服

????//step3.放水,放洗衣粉。。

????//step4:洗一洗

????//step5:曬一曬

?

面向?qū)ο螅宏P(guān)注點(diǎn)是對(duì)象 ————站在指揮者的角度

????//step1:找個(gè)對(duì)象

????//step2:讓他洗衣服

生活中的面向?qū)ο螅赫液线m的人,做合適的事兒。。

生活中的面向過程:親力親為,按照流程步驟來,一步一步,吭哧吭哧。。。

?

代碼中:

????Arrays類

????????sort();-->排序

????????binarySearch();-->搜索

????Scanner類

????????sc.nextInt();

????????sc.next();

????????sc.nextDouble();

2、面向?qū)ο蠛兔嫦蜻^程

面向?qū)ο螅?OOP)

????不是一種語言,而是一種編程思想。

面向?qū)ο蟪绦蛟O(shè)計(jì):(Object Oriented Programming)

????????Object:對(duì)象

????????Oriented:方向,定向

????????Programming:程序

面向過程:

????????關(guān)注點(diǎn)在過程上(步驟)

????????step1,step2,step3.。。。。

????????總和分析,按照步驟實(shí)現(xiàn)即可。

?

面向?qū)ο螅?/p>

????????關(guān)注點(diǎn)在對(duì)象上,

????????萬事萬物皆對(duì)象。

????????A:分析當(dāng)前的問題域中所涉及的對(duì)象。

????????B:這些對(duì)象有什么樣的特征和功能。

????????????????外部特征:靜態(tài)屬性

????????????????動(dòng)作行為:動(dòng)態(tài)屬性

????????C:對(duì)象和對(duì)象之間的關(guān)系。

????????????????繼承關(guān)系,聚合關(guān)系,關(guān)聯(lián)關(guān)系。。。

????????????????類的堆砌。

3、類和對(duì)象

類 ? ? ? ? ? ? ? | ? ? ? ?? 對(duì)象

人類:??????????????????? Person鐘南山院士,你,我,王二狗,李小花,袁隆平爺爺,馬云爸爸。。

狗類:??????????????????? 幻影,忠犬八公,二哈,嘯天

貓類:??????????????????? 嘟嘟,卡卡,你家的貓,姥姥家的白貓

汽車類: ? ? ? ? ? ? ? ? 我的黑色的長城車,58臺(tái)紅旗車,撞我的那臺(tái)車。。

筆記本電腦類: ? ?? 我現(xiàn)在用的這個(gè)電腦15寸的pro,王二狗的華碩,你媳婦的聯(lián)想

手機(jī)類: ? ? ? ? ? ? ? ? 我的華為Mate30,你的小米mix2s,你媳婦用諾基亞n95

類:其實(shí)指的就是類別。對(duì)同一類事物的統(tǒng)稱。對(duì)這類事物進(jìn)行描述,--->創(chuàng)建class

????????就是一個(gè)抽象的概念。

對(duì)象:

? ? ? ? 類中的一個(gè)具體的實(shí)例,客觀存在的,能用。個(gè)體。

如何定義一個(gè)類?

????????要有能夠描述這一類別的外部特征——我們叫做屬性(靜態(tài)屬性)

變量就可以。(名詞)

? ? ? ? 要有能夠描述這一類別的行為功能——我們叫做方法(動(dòng)態(tài)屬性)

方法就可以。(動(dòng)詞)

4、Java中定義類的格式

/*

class ClassName{//類名首字母大寫

//屬性描述:外部特征

//行為描述:能夠干啥

}

*/

要求:

? ?1、CLassName要求符合駝峰命名法,首字母大寫,見名知意。

? ?2、屬性描述:外部特征,用于描述這個(gè)類別的一些特征,而這些特征通過一個(gè)"詞"來描述清楚,比如姓名,年齡。使用變量來表示?!境蓡T變量】Field,詞義"字段"

? ?3、行為描述:能夠干啥,用于描述這個(gè)類別的一些行為功能,而這些行為功能,是一個(gè)動(dòng)作行為,比如吃飯,睡覺。使用方法來表示?!境蓡T方法】Method,詞義"方法"

? 不要加static。

方法:就是一段具有獨(dú)立功能的代碼。

4.1 step1聲明類

public class Person{//類的名字

}

4.2 step2聲明類中的【成員變量】

public class Person {

????????//step2:成員變量

????????String name;//使用String類型的變量name,表示人類中的姓名

????????int age;//使用int類型的變量age,表示人類中的年齡

????????char sex;//使用char類型的變量sex,表示人類中的性別

}

4.3 step3聲明類中的【成員方法】

public class Person {

????????//step2:成員變量

????????String name;//使用String類型的變量name,表示人類中的姓名

????????int age;//使用int類型的變量age,表示人類中的年齡

????????char sex;//使用char類型的變量sex,表示人類中的性別

????????//step3:成員方法

????????public void eat(){

????????????????System.out.println("吃飯啦。。");

????????}

????????public void sleep(){

????????????????System.out.println("睡覺啦。。");

????????}

????????public void daDouDou(){

????????????????System.out.println("打豆豆。。。");

????????}

}

?5、類的對(duì)象

5.1 創(chuàng)建類的對(duì)象

創(chuàng)建對(duì)象,也叫做類的實(shí)例化。對(duì)象,也叫類的實(shí)例。

/*

new關(guān)鍵字

new,詞義:新的,新建

new 關(guān)鍵字,專門用于新建對(duì)象。

*/

Scanner sc = new Scanner();//Scanner也是個(gè)類,Person也是個(gè)類。

int[] arr = new int[5];

語法結(jié)構(gòu):

????????/*

????????類名 對(duì)象名 = new 類名();

????????*/

step1:創(chuàng)建類

step2:根據(jù)類,實(shí)例化對(duì)象

5.2通過對(duì)象訪問屬性

/*

int[] arr = new int[5];

獲取數(shù)組的長度:

arr.length

arr的長度

*/

對(duì)象訪問屬性的語法:就是一個(gè).

//給對(duì)象的屬性,進(jìn)行賦值

p1.name = "王二狗";//給p1這個(gè)對(duì)象的name屬性進(jìn)行賦值

p1.age = 18;

p1.sex = '男';

//獲取對(duì)象的屬性值

System.out.println("姓名:"+p1.name);

System.out.println("年齡:"+p1.age);

System.out.println("性別:"+p1.sex);

5.3通過對(duì)象訪問方法

/*

Scanner sc = new Scanner();

sc.nextInt();

*/

Scanner,就是一個(gè)class,一個(gè)類

sc,是根據(jù)Scanner創(chuàng)建出來的一個(gè)對(duì)象

對(duì)象調(diào)用類中的方法,語法,也是.

對(duì)象.方法名();

????????p1.eat();

????????p1.sleep();

????????p1.daDouDou();

方法:public void test1();

對(duì)象.test1();

6、 內(nèi)存分析

實(shí)例代碼:

package com.qf.demo01;

?

public class Test1Person {

????????public static void main(String[] args) {

????????????????//step1:創(chuàng)建Person類的對(duì)象

????????????????//語法:類名 對(duì)象名 = new 類名();

????????????????Person p1 = new Person();

????????????????System.out.println(p1);//打印p1的值,p1是引用類型,打印都是p1指向的對(duì)象的地址。

????????????????System.out.println(p1.name);

????????????????System.out.println(p1.age);

????????????????System.out.println(p1.sex);

????????????????/*

????????????????* com.qf.demo01.Person@15db9742

????????????????* 包名.類名@編碼值 ---->理解為p1的內(nèi)存地址。

????????????????* java中的數(shù)據(jù)類型:

????????????????* 基本類型:byte,short,char,int,long,bolean,float,double

????????????????* 引用類型:

????????????????* 數(shù)組,類類類型

????????????????*/

????????????????//step2:通過對(duì)象訪問屬性,語法是.

????????????????//給對(duì)象的屬性,進(jìn)行賦值

????????????????p1.name = "王二狗";//給p1這個(gè)對(duì)象的name屬性進(jìn)行賦值

????????????????p1.age = 18;

????????????????p1.sex = '男';

????????????????//獲取對(duì)象的屬性值

????????????????System.out.println("姓名:"+p1.name);

????????????????System.out.println("年齡:"+p1.age);

????????????????System.out.println("性別:"+p1.sex);

????????????????//step3:通過對(duì)象,訪問成員方法--->理解為就是對(duì)象調(diào)用成員方法

????????????????p1.eat();

????????????????p1.sleep();

????????????????p1.daDouDou();

????????}

}

內(nèi)存分析圖:

示例代碼:

package com.qf.demo01;

?

public class Test2Person {

?????????public static void main(String[] args) {

????????????????//1.創(chuàng)建一個(gè)Person類的對(duì)象

? ? ? ? ? ? ? ? Person p1 = new Person();

????????????????System.out.println(p1);//p1的內(nèi)存地址:com.qf.demo01.Person@15db9742

????????????????p1.name = "張三狗";

????????????????p1.age = 19;

????????????????p1.sex = '男';

????????????????System.out.println(p1.name);//張三狗

????????????????System.out.println(p1.age);//19

????????????????System.out.println(p1.sex);//男

????????????????//2.再創(chuàng)建一個(gè)Person類的對(duì)象

????????????????Person p2 = new Person();

????????????????System.out.println(p2);//p2的內(nèi)存地址,com.qf.demo01.Person@6d06d69c

????????????????p2.name = "李小花";

????????????????p2.age = 17;

????????????????p2.sex = '女';

????????????????System.out.println(p2.name);//李小花

????????????????System.out.println(p2.age);//17

????????????????System.out.println(p2.sex);//女

????????????????//3.

????????????????Person p3 = null;//僅僅聲明了Person類型的對(duì)象p3,但是實(shí)際上,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? //并沒有在堆內(nèi)存中,創(chuàng)建出 ? 真正的對(duì)象。

????????????????/*

????????????????* NullPointerException,空指針異常

????????????????*

????????????????* 對(duì)象不存在,就是個(gè)null,

?????????????????* 強(qiáng)行的訪問對(duì)象的屬性或調(diào)用方法,就會(huì)空指針異常。

????????????????*/

????????????????//System.out.println("---->"+p3.name);//報(bào)錯(cuò)啦:NullPointerException

????????????????p3 = p1;//將p1的值(p1對(duì)象的內(nèi)存地址),賦值給p3,

????????????????????????????//結(jié)果-->p1和p3存儲(chǔ)的是同一個(gè)對(duì)象的內(nèi)存地址。

????????????????p3.name = "李鐵柱";

????????????????System.out.println(p1.name);//李鐵柱

????????????????System.out.println(p2.name);//李小花

????????????????System.out.println(p3.name);//李鐵柱

????????????????Person p4 = new Person();

????????????????System.out.println(p4);//?

????????????????p4.name = "王二丫";

????????????????p4.age = 18;

????????????????p4.sex = '女';

????????????????System.out.println(p4.name );

????????????????System.out.println(p4.age);

????????????????System.out.println(p4.sex);

????????????????p4 = p1;//改變對(duì)象的內(nèi)存地址了,就不再指向原來的內(nèi)存對(duì)象。

????????????????System.out.println(p1.name);

????????????????System.out.println(p3.name);

????????????????System.out.println(p4.name);

????????}

}

?

內(nèi)存分析圖:




希望我能堅(jiān)持住每天堅(jiān)持記錄著 ...

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容