java學習筆記#1-內(nèi)部類/接口等概念

成員變量與局部變量:

具體定義不再贅述,記錄一些以前忽視的差異;

成員變量在聲明過程中會被系統(tǒng)默認初始化,默認值0;
局部變量在聲明過程中不會被系統(tǒng)默認初始化;
(final 修飾的為特殊情況,不會初始化)


局部變量和成員變量命名可以重復,當調(diào)用過程中沖突時,符合就近原則。(優(yōu)先調(diào)用局部變量)

靜態(tài)變量、靜態(tài)方法:

靜態(tài)變量可以通過對象名直接訪問,也可以直接通過類名訪問。
非靜態(tài)類不能以此方式調(diào)用,需要聲明類后,通過類調(diào)用。

public class HelloWorld {

    static int staticInt = 99;
    public static void main(String[] args) {
        System.out.println(staticInt);
        System.out.println(HelloWorld.staticInt);
    }
}

與靜態(tài)變量一樣靜態(tài)方法可以通過類名直接調(diào)用,而不需要實例化類的對象。

弊端:
靜態(tài)方法是屬于類的,內(nèi)存必須為它分配內(nèi)存空間,這個空間一直由靜態(tài)方法占用,內(nèi)存管理器不會由于靜態(tài)方法沒有被調(diào)用而將靜態(tài)方法的存儲空間收回,這樣如果將所有的方法都聲明為靜態(tài)方法,就會占用大量的內(nèi)存空間。

關(guān)于內(nèi)部類的概念:

靜態(tài)內(nèi)部類:

靜態(tài)相關(guān)訪問非靜態(tài)內(nèi)容都會受到限制,如靜態(tài)內(nèi)部類不能直接訪問外部類的非靜態(tài)成員。同樣,靜態(tài)內(nèi)容聲明較為直接,創(chuàng)建靜態(tài)內(nèi)部類的對象時,不需要外部類的對象,可以直接創(chuàng)建 內(nèi)部類 對象名= new 內(nèi)部類();

方法內(nèi)部類:

方法內(nèi)部類就是內(nèi)部類定義在外部類的方法中,方法內(nèi)部類只在該方法的內(nèi)部可見,即只在該方法內(nèi)可以使用。

Object類:

ToString():

ToString()方法時Object類中的方法,因為所有的類默認繼承Object類,所以在將類作為字符串輸出時,都會默認調(diào)用ToString()方法,一般時將對象轉(zhuǎn)換為關(guān)于內(nèi)存地址的哈希數(shù)。如果我們希望返回對象的屬性,則需要在對象中對ToString()方法進行重寫。

equals():

A.equals(B) 比較的是A,B兩個對象的引用是否指向同一個內(nèi)存區(qū)域。
當然,該方法可以由IDE自動重寫。

多態(tài):

引用的多態(tài):

父類引用指向本類;
父類引用指向子類;

  Animal animal1 = new Animal();
  Animal animal2 = new Dog();
方法的多態(tài):

本類方法的調(diào)用;
子類對父類方法的繼承、重寫等。

類型轉(zhuǎn)化:

        Animal animal ;
        Dog dog = (Dog)new Animal(); //強制類型轉(zhuǎn)化 animal->dog
        animal = dog;  //自動類型轉(zhuǎn)化dog ->animal
        Cat cat1 = (Cat) animal;  // 雖然不報錯,但是錯誤。  轉(zhuǎn)化關(guān)系相當于dog->cat

通過instanceof 關(guān)鍵字判斷是否包含,從而決定是否可以轉(zhuǎn)化。所以在使用強制轉(zhuǎn)化時,最好通過instanceof關(guān)鍵字判斷一下。

        if(animal instanceof Cat){
            System.out.printf("animal 對象含有 Cat 類");
        }

接口相關(guān):

匿名內(nèi)部類:

IPlayGame 為接口,接口中的方法只能聲明,無法做具體描述。所以在new對象的時候,需要將抽象方法具體化。

        IPlayGame iPlayGame = new IPlayGame() {
            @Override
            public void PlayGame() {
                System.out.printf("使用匿名內(nèi)部類");
            }
        };
        iPlayGame.PlayGame();

        new IPlayGame(){
            @Override
            public void PlayGame() {
                System.out.println("使用匿名內(nèi)部類2");
            }
        }.PlayGame();

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

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

  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 34,624評論 18 399
  • 一:java概述:1,JDK:Java Development Kit,java的開發(fā)和運行環(huán)境,java的開發(fā)工...
    ZaneInTheSun閱讀 2,800評論 0 11
  • 從三月份找實習到現(xiàn)在,面了一些公司,掛了不少,但最終還是拿到小米、百度、阿里、京東、新浪、CVTE、樂視家的研發(fā)崗...
    時芥藍閱讀 42,755評論 11 349
  • (一)Java部分 1、列舉出JAVA中6個比較常用的包【天威誠信面試題】 【參考答案】 java.lang;ja...
    獨云閱讀 7,241評論 0 62
  • 白衣 我愛看他側(cè)臉的姿勢 憑欄遠眺的似有哀愁 勝過他的背影 因他的背影被落葉淡化 因落葉的低飛猶如靜止 白衣的輪廓...
    羽林郎yll閱讀 212評論 0 1

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