JAVA學習筆記——JAVA基礎文法(二)

來源:互聯網
上載者:User

一、物件導向和面向過程的區別

  面向過程:它所考慮的是過程和步驟,比如說開車去深圳我們要考慮的是怎麼去也就是說:what  to do

  物件導向:它所考慮的是有幾個對象,比如開車去深圳我們要考慮的就是有幾個對象,也就是說:how to do

二、類

  概念:是對象的模板,它是具有相同屬性和行為(方法)的一組對象的集合

  對象和類的區別:類是抽象的,而對象是具體存在的

    知識擴充:同一個檔案夾中只能有一個類是public的,而且main()方法絕對是包含在public類當中

三、構造方法(構造器、建構函式)

  作用:1、主要是用來建立對象    2、初始化成員變數 

  特點:1、必須與類名相同   2、沒有傳回值類型,void也沒有  3、每一個類都會有一個隱式的構造方法,沒有參數和方法體  4、手動添加顯式的構造方法那麼隱式的構造方法自動消失

  

    知識擴充:物件導向編程思維步驟:1、考慮有幾個對象  2、通過對象確定有幾個類  3、找出每一個類中存在的方法  4、調用相應的方法實現功能

例如這個簡單的例子:public class test{
          public static void main(String[] args){
              Mouse mouse = new Mouse();
              mouse.name = "mick";
        
              Cat cat = new Cat();
              cat.name = "Tom";
        
              cat.Catch(mouse);
        }
      }

      class Cat{
          String name;
    
          public void Catch(Mouse mouse){
              mouse.cry();
          }
      }

      class Mouse{
          String name;
    
          public void cry(){
              System.out.println(name + "  is crying");
          }
      }

            思維方式:找出有兩個對象tom貓和mick老鼠。進而找出有兩個類一個是貓類一個是老鼠類,然後確定兩個對象內部分別包含兩個方法一個是屬於tom對象的catch()方法一個是屬於mick 對象的cry()方法

 

    專家模式:一個方法改變的是那個對象的狀態(屬性),那麼該方法就屬於誰

四、JVM(JAVA虛擬機器)的四個地區

  1、代碼區(code segment):存放的是位元組碼

  2、堆區(heap segment):存放的是對象

  3、棧區(Stack segment):存放的是局部變數

  4、棧區的一塊特殊地區(static segment):存放字串常量和靜態變數

    堆和棧的區別:堆可以儲存大的資料類型運行速度慢;棧只可以儲存小的資料內容但是運行速度快

    局部變數和成員變數重名的問題解決辦法

         辦法:該情況下使用this指標,因為每一個對象都有一個this指標,相當於當前對象的引用。原理如所示:

                        圖  1

 

五、成員變數初始化

  1、JAVA當中,成員變數會預設初始化

      數實值型別:預設為0     布爾類型(boolean):預設為false      字元類型(char):預設是空   引用資料類型:預設是NULL

  null值的含義:表示一個引用沒有指向任何一個對象,也就是誰棧中的一個引用沒有指向任何一個棧中的記憶體位址,如所示形象來說就是“引用”的那個箭頭沒有

  2、JAVA中的記憶體回收機制(GC)

    如果一個對象沒有指向任何一個引用,那麼這個對象就是JAVA中的垃圾,JAVA會自動調用GC自動收回

      知識延伸:如果說在JAVA中需要一個對象使用完後就被GC收回,最好的變法就是把指向這個對象的引用設定為NULL

 

六、Static關鍵字

  1、加上static的成員變數稱之為靜態變數(類變數)

    static segment中的資料不能重複,所有對象共用其資料,其中一個對象對其進行修改之後那麼其他的對象的值也隨之改變

    因為所有對象共用它,跟對象沒有任何關係,所以也就稱之為類變數;可以使用  類名.變數名  來調用

    如所示邏輯:

    

                    圖  2

    堆裡面的兩個對象共用 Static segment裡面的靜態變數Corcol;如果要改變其值只需使用  Person.Corcol  即可改變其值

  2、加上static的方法稱之為靜態方法(類方法)

    類方法不需要建立對象來調用,可以直接是用  類名.方法名  調用

    注意:(1)、靜態方法只能訪問靜態成員變數

       (2)、非靜態方法既可以訪問靜態成員變數也可以訪問非靜態成員變數

      知識延伸:為什麼main()方法是static的?

            因為main()方法是程式的入口,在使用main()方法之前不允許有任何的對象被調用,所以說main()方法務必是static的

 

以上知識均為本人學習總結所得、如有錯誤請加以批評指正

    

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.