1. 程式人生 > 實用技巧 >java基礎---類和物件(1)

java基礎---類和物件(1)

一、 類和物件

  面向物件:以屬性和行為的觀點去分析現實生活中的事物,將功能封裝進物件,強調具備了功能的物件,以類/物件為最小單位,考慮誰來做

  面向過程:強調的是功能行為,以函式為最小單位,考慮怎麼做

  類:是對具有相同特徵和行為的多個物件共性的抽象描述,在Java語言中體現為一種引用資料型別,裡面包含了描述特徵/屬性的成員變數以及描述行為的成員方法,用於構建物件的模板,物件的資料結構由定義它的類來決定

  物件:實際存在的該類事物的每個個體, 是類的例項

  • 類的定義

  類主要包括成員變數和成員方法,程式碼塊,構造器,內部類

修飾符  class 類名{
       成員變數宣告;  //可以在宣告的同時進行初始化,否則賦予預設初始化值
       {程式碼塊}
        構造器
        內部類
      成員方法宣告;      
}
  • 物件的建立和使用
    • 使用new建立物件: 類名 物件名= new 類名();
    • 使用物件名.變數或者物件名.方法的方式訪問物件成員(包括變數和方法)
    • 如果建立了一個類的多個物件,對於類中定義的非靜態屬性,每個物件都擁有各自的物件成員,互不干擾
  • 類的訪問機制
    • 在一個類中,類中的方法可以訪問該類的成員和方法
    • 在不同類中,需要建立類的物件通過物件名.變數或者物件名.方法的方式訪問物件成員
  • 物件記憶體解析: 引用型別的變數只可能儲存null值或者指向堆空間的地址值
    • 堆(Heap):存放new出來的物件例項,所有的物件例項和陣列都在這裡分配記憶體
    • 棧(stack):通常指虛擬機器棧,用於存放區域性變數等,區域性變量表存放了編譯期間可知長度的各種基本資料型別(boolean,byte,char,short,int,long,float,double)、物件引用(reference型別,是物件在堆記憶體的首地址),當方法執行完後,該區域性變數自動釋放
    • 方法區(method):用於儲存已經被虛擬機器載入的類資訊、常量、靜態變數、即時編譯器編譯後的程式碼等資料

一個物件的建立記憶體解析

  • 匿名物件: 沒有顯式的給建立的物件賦予物件名,匿名物件只能呼叫一次,通常將匿名物件作為實參傳遞給一個方法呼叫

二、 成員變數

  • 語法格式: 修飾符 資料型別 變數名 =初始化值;
  • 成員變數的預設初始化值
    • 整型(byte、short、int、long):0
    • 浮點型(float、double):0.0
    • 字元型(char):0 (或'\u0000')
    • 布林型(boolean):false
    • 引用資料型別(類、陣列、介面):null
  • 變數的分類
    • 在方法體外,類體內宣告的變數為成員變數
    • 在方法體內,方法形參等宣告的變數為區域性變數
  • 屬性(成員變數) vs 區域性變數
    • 相同點:定義格式:資料型別 變數名 = 變數值;需要先宣告,後使用;都有其對應的作用域
    • 不同點
      • 在類中宣告的位置的不同:屬性直接定義在類的一對{}內;區域性變數宣告在方法內、方法形參、程式碼塊內、構造器形參、構造器內部的變數
      • 關於許可權修飾符的不同:屬性:可以在宣告屬性時,指明其許可權,使用許可權修飾符;區域性變數不可以有許可權修飾符
      • 預設初始化值的情況:屬性,類的屬性,根據其型別,都有預設初始化值;區域性變數沒有預設初始化值,在呼叫區域性變數之前,一定要顯式賦值,區域性變數作為形參在呼叫時,我們賦值即可
      • 在記憶體中載入的位置:屬性載入到堆空間中 (非static);區域性變數:載入到棧空間