java基礎之---面向對象

前言

最近又閒下來了,無意間在其他博客看見幾篇java基礎的文章,發現自己好多都忘記了。趁有時間就自己再回顧複習一下,所以接下來的文章都是基於前輩們的博客加上自己的思路進行整理記錄,有問題歡迎指正。

正文

面向對象是java的最大特徵之一,接下來主要從以下幾個方面進行介紹:

  • java類的定義
  • 成員變量
  • 引用
  • 構造方法

一,java類的定義

//用class關鍵字定義一個類
class Student{ 
//定義成員變量
private String name;
private int age;
//定義方法
public void setName(String name){this.name=name}
public void setAge(int age){this.age=age}
public String getName(){return name;}
public int getAge(){return age;}

}

JAVA裏面有class關鍵字定義一個類,後面加上類名。上面定義了一個student類,然後定義這個類應該具有的成員變量(即屬性)和方法,上面定義了的String name和int age這個兩個成員變量,或者叫屬性。這樣就在student這個類裏面定義了兩個應該有的屬性,還定義了幾個方法分別setName(String name)、setAge(int age)和getName()、getAge(),分別用來設置和獲取學生的姓名和年齡。

二,成員變量

在JAVA裏面的任何變量首先應該要聲明,然後再賦值,然後再使用。成員變量和局部變量有一個重要區別:成員變量在類裏面聲明時如果不進行初始化,那麼JAVA會默認給它初始化,而局部變量JAVA不會默認給它初始化,所以在方法裏面聲明一個局部變量如果不給它初始化時就會出錯。默認初始化大多數都是0,boolean類型的爲false,引用類型的爲null,也可以直接打印成員變量看默認初始化的值。

三,引用

Java語言除了基本類型之外的變量類型都稱之爲引用類型,java中的對象是通過引用對其操作的。Java的基本數據類型包括整數型、浮動型、布爾型、字符型這四類。
具體過程看下圖:


  • 如何在內存中區分類和對象
    1.類是靜態的概念,在代碼區中
    2.對象是new 出來的,位於堆內存中
    因爲堆內存是用來動態分配內存的,只有在運行當中才會new一個對象放堆內存裏面,對象有多大,你不知道,所以你沒有辦法提前分配內存給這個對象,只有在運行期間,才能夠明白這個對象到底要分配多大的空間給它,所以把它放在堆內存裏面,堆內存比較大,動態分配內存用它。如果對象不用了,當垃圾回收,釋放掉佔用的內存。
    記住,以後一提到引用,腦子裏馬上浮現引用那就是一小塊內存指向一大塊內存。即棧內存指向堆內存。

  • 引用類型和基本類型有着巨大的區別:
    當聲明一個int age=0時,系統會馬上給這個age分配一個內存空間(在棧內存裏面分配一小塊區域用來裝數字0),裏面裝着一個值爲0,以後使用age這個名字馬上就可以訪問這個內存空間裏面的值,這就是基本數據類型,所以基礎類型就只佔一塊內存。基礎類型之外的類型全都叫引用類型,我們定義一個String s,這個s就是一個引用類型的數據,而引用類型佔2塊內存(原來的s在棧內存中,new之後在堆內存中)。需要使用new關鍵字把這個類的對象實例化出來,才能使用這個對象。

四,構造方法

構造方法用來創建一個新的對象,和new組合使用。New一個對象的時候實際上調用了構造方法,構造一個新的對象的方法叫構造方法。構造方法的名字和類名一模一樣,沒有返回值,沒有修飾符。如下所示:

//用class關鍵字定義一個類
class Student{ 
//定義成員變量
private String name;
private int age;
//定義一個構造方法
public Student(String name,int age){
    this.name=name;
    this.age=age;
}
//main函數中結合new調用構造方法
public static void main(String args[]){

      Student a = new Student('tom',22);
    }

}

下面是在main方法裏面調用構造方法時的內存分析情況:

當方法調用完成之後,棧裏面爲它分配的空間全部都要消失,即把這個方法調用時分配給它的內存空間釋放出來,所以這個構造方法student調用完成之後,棧內存裏面分配的兩小塊內存name和age就釋放出來了,而new出來的對a象則永遠留在了堆內存裏面。

在平時的開發中我們發現我們new對象的時候,比如Student s = new Student()發現系統並沒有給我們提供構造方法這是因爲:聲明一個類,若沒有在類中指定其構造方法,編譯器會爲這個類自動添加一個空的構造方法。一旦給這個類裏面指定了構造方法,那麼系統就不會再給這個類添加構造方法了

原創作者:凌小樣
作品鏈接:https://www.jianshu.com/p/a4820eefa075
【原創不易,轉載請註明出處,感謝理解】
一位愛生活,愛創作,愛分享,愛自己的90後女程序員一枚,記錄工作中的點點滴滴,一起學習,共同進步,期待能和優秀的您交上朋友

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章