成員變量和局部變量的區(qū)別?

  1. 在類中的位置不同

    • 成員變量:在類中方法外

    • 局部變量:在方法定義中或者方法聲明上

  2. 在內(nèi)存中的位置不同

    • 成員變量:在堆內(nèi)存

    • 局部變量:在棧內(nèi)存

  3. 生命周期不同

    • 成員變量:隨著對象的創(chuàng)建而存在,隨著對象的消失而消失

    • 局部變量:隨著方法的調(diào)用而存在,隨著方法的調(diào)用完畢而消失

  4. 初始化值不同

    • 成員變量:有默認初始化值

    • 局部變量:沒有默認初始化值,必須定義,賦值,然后才能使用。

  5. 注意事項:

    • 局部變量名稱可以和成員變量名稱一樣,在方法中使用的時候,采用的是就近原則。

方法

方法就是函數(shù),function,是為了完成特定功能的代碼塊

修飾符 返回值類型 方法名(參數(shù)類型 參數(shù)名1,參數(shù)類型 參數(shù)名2…) {
        函數(shù)體;
        return 返回值;
}
  1. 定義函數(shù)可以將功能代碼進行封裝
  2. 便于對該功能進行復用
  3. 函數(shù)只有被調(diào)用才會被執(zhí)行

    (當函數(shù)被調(diào)用的時候,jvm虛擬機會在內(nèi)存中給該函數(shù)分配一塊內(nèi)存空間,該內(nèi)存空間里面可以定義該函數(shù)所用到的一些變量,當方法執(zhí)行完畢之后,該內(nèi)存空間會被釋放掉。)調(diào)用完成,函數(shù)執(zhí)行完畢。
  4. 函數(shù)的出現(xiàn)提高了代碼的復用性
  5. 對于函數(shù)沒有具體返回值的情況,返回值類型用關鍵字void表示,那么該函數(shù)中的return語句如果在最后一行可以省略不寫。

注意:

  1. 調(diào)用方法時可以不接受方法返回的值,且不會報錯
  2. 函數(shù)中只能調(diào)用函數(shù),不可以在函數(shù)內(nèi)部定義函數(shù)。

方法重載

  1. 同一個類中,允許存在一個以上的同名的方法,參數(shù)個數(shù),參數(shù)類型不同
  2. 與返回值類型無關,只看方法名和參數(shù)列表
  3. 虛擬機通過參數(shù)列表的不同來區(qū)分同名方法
  4.  public void repeatName () {
     
     }
     
     public void repeatName (int i) {
         
     }
     
     public void repeatName (double i) {
         
     }
    

形參

  1. 基本類型:形式參數(shù)的改變不影響實際參數(shù)

  2. 引用類型:傳入一個類的對象,形參是該對象的一個引用,形式參數(shù)的改變直接影響實際參數(shù)

    1. 類名:需要的是該類的對象
    2. 抽象類:需要的是該抽象的類子類對象,用具體子類實現(xiàn)
    3. 接口:需要的是該接口的實現(xiàn)類對象,用具體子類實現(xiàn)
  3. String是引用類型,但不能進行地址傳遞


    //抽象類
    abstract class Person {
        public abstract void study();
    }

    class PersonDemo {
        public void method(Person p) {//p; p = new Student();  Person p = new Student(); //多態(tài)
            p.study();
        }
    }
    
    //定義一個具體的學生類
    class Student extends Person {
        public void study() {
            System.out.println("Good Good Study,Day Day Up");
        }
    }
    
    class PersonTest {
        public static void main(String[] args) {
            //目前是沒有辦法的使用的
            //因為抽象類沒有對應的具體類
            //那么,我們就應該先定義一個具體類
            //需求:我要使用PersonDemo類中的method()方法
            PersonDemo pd = new PersonDemo();
            Person p = new Student();
            pd.method(p);
        }
    }


    //接口
    //定義一個愛好的接口
    interface Love {
        public abstract void love();
    }
    
    class LoveDemo {
        public void method(Love l) { //l; l = new Teacher();  Love l = new Teacher(); 多態(tài)
            l.love();
        }
    }
    
    //定義具體類實現(xiàn)接口
    class Teacher implements Love {
        public void love() {
            System.out.println("老師愛學生,愛Java,愛林青霞");
        }
    }
    
    class TeacherTest {
        public static void main(String[] args) {
            //需求:我要測試LoveDemo類中的love()方法
            LoveDemo ld = new LoveDemo();
            Love l = new Teacher();
            ld.method(l);
        }
    }

返回值

引用類型:

  1. 類:返回的是該類的對象
  2. 抽象類:返回的是該抽象類的子類對象
  3. 接口:返回的是該接口的實現(xiàn)類的對象
- 類

        class Student {
            public void study() {
                System.out.println("Good Good Study,Day Day Up");
            }
        }

        class StudentDemo {
            public Student getStudent() {
                return new Student();
            }
        }


- 抽象類

        abstract class Person {
            public abstract void study();
        }
        class PersonDemo {
            public Person getPerson() {
                //Person p = new Student();
                //return p;
                
                return new Student();
            }
        }
        class Student extends Person {
            public void study() {
                System.out.println("Good Good Study,Day Day Up");
            }
        }


- 接口

        interface Love {
            public abstract void love();
        }
        class LoveDemo {
            public Love getLove() {
                //Love l = new Teacher();
                //return l;
                
                return new Teacher();
            }
        }
        //定義具體類實現(xiàn)接口
        class Teacher implements Love {
            public void love() {
                System.out.println("老師愛學生,愛Java,愛林青霞");
            }
        } 

構(gòu)造方法

給對象的屬性賦初值

  1. 構(gòu)造方法格式
    • 方法名與類名相同

    • 沒有返回值類型,連void都沒有

    • 沒有具體的返回值

        public Student(){
            
        }
        public Student(String name1, int sge) {         //構(gòu)造函數(shù)可以重載
            this.name1 = name1;
            this.sge = sge;
        }   
      
  2. 默認構(gòu)造:建議自己給出無參構(gòu)造
    • 如果你不提供構(gòu)造方法,系統(tǒng)會給出默認構(gòu)造方法
    • 如果你提供了構(gòu)造方法,系統(tǒng)將不再提供

創(chuàng)建對象

Student s = new Student();

加載過程

  1. 加載Student.class文件進內(nèi)存
  2. 在棧內(nèi)存為s開辟空間
  3. 在堆內(nèi)存為學生對象開辟空間
  4. 對學生對象的成員變量進行默認初始化
  5. 對學生對象的成員變量進行顯示初始化
  6. 通過構(gòu)造方法對學生對象的成員變量賦值
  7. 學生對象初始化完畢,把對象地址賦值給s變量

匿名對象

匿名對象:就是沒有名字的對象。

匿名對象的應用場景:

  1. 調(diào)用方法,僅僅只調(diào)用一次的時候。
    • 好處:匿名對象調(diào)用完畢就是垃圾。可以被垃圾回收器回收。
  2. 匿名對象可以作為實際參數(shù)傳遞

Class s = new Class();
s.method();

new Class().method();
new Class().method(new Class());
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,431評論 6 544
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,637評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,555評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,900評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,629評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,976評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,976評論 3 448
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,139評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,686評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 41,411評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,641評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,129評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,820評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,233評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,567評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,362評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,604評論 2 380

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

  • 類是一個重要的C#編程概念,它在一個單元內(nèi)定義了表示和行為。類提供了面向?qū)ο缶幊毯兔嫦蚪M件編程所需的語言支持,是創(chuàng)...
    CarlDonitz閱讀 857評論 0 2
  • C++基礎2:類與對象 1. 認識類與對象 什么是類(class)?類(class)是類型(type),是用戶自定...
    jdzhangxin閱讀 2,291評論 0 7
  • 聞雞起舞又一年 什么是健康?什么是健康的生活方式? 健康既包括身體健康也包括心理健康。健康的生活方式包括:充足的睡...
    一枚冰兒閱讀 325評論 1 0
  • 這幾年,某寶的勢頭太強了,最直觀的一個表現(xiàn)是,人們的逛街時間已進入無孔不入,抽空刷個手機,包裹隔兩天就送到了。 ...
    蔚藍Life閱讀 209評論 0 0
  • 不知不覺,清明伴著綿綿細雨來到我們身邊。 當我們手捧鮮花,又一次走向那個埋葬著雖與我們天人相隔、卻永遠密不可分的先...
    祝方婷閱讀 406評論 2 1