Java零基礎_學Java必備學習筆記(十一)Java對象的建立及使用

這是我參與8月更文挑戰的第2天,活動詳情查看:8月更文挑戰java

✔上一篇Java零基礎系列文章咱們說到了Java中的面向對象,今天這篇文章主要圍繞下邊幾個知識點

  1. Java對象的建立和使用方法
  2. 爲何要畫內存圖?(很是重要)
  3. 程序在什麼狀況下會出現空指針異常呢?
  4. Java方法調用時參數的傳遞問題
  5. 構造方法

🎈一、Java對象的建立和使用方法

這塊咱們主要十理解構造方法以及重載機制,經過構造方法能夠完成對象的建立,而且可以經過引用訪問對象的內存,瞭解Java虛擬機內存管理,可以畫出程序執行過程的內存圖,並瞭解空指針異常是如何發生的,以及方法調用時參數是如何傳遞的。markdown

類定義以後,就可使用類這個「模板」來創造「對象」了,一個類是能夠建立多個對象的哦!怎麼建立呢,語法是什麼?其實語法格式很簡單:new 類名(),這樣就能夠完成對象的建立了。ide

俗話說,你想要什麼java均可以給你,想要啥你就new啥。oop

請看下面代碼:post

public class StudentTest {
	public static void main(String[] args) {
		//建立一個學生對象
		new Student();
		//再建立一個學生對象
		new Student();
	}
}
複製代碼

爲了使用對象更加方便,建議使用變量接收一下?例如如下代碼:spa

public class StudentTest {
	public static void main(String[] args) {
		//建立一個學生對象
		Student s1 = new Student();
		//再建立一個學生對象
		Student s2 = new Student();
		//以上代碼其實和這行代碼差很少
		int i = 10;
	}
}
複製代碼

以上代碼最初接觸的時候,你們確定會感受很是陌生,這也是正常的,Student s1 = new Student()實際上和int i = 10是相似的,對於int i = 10來講,int是一種基本數據類型,i是變量名,10是int類型的字面量。那對於Student s1 = new Student()來講,其中Student是一種引用數據類型,s1是變量名,new Student()執行以後是一個Student類型的對象。指針

你們要注意了,java語言當中凡是使用class關鍵字定義的類都屬於引用數據類型,類名自己就是這種引用數據類型的類型名。建立了對象以後怎麼去訪問這個對象的屬性呢,或者說學生對象如今有了,怎麼去訪問他的學號、姓名、性別、年齡等信息呢。請看如下代碼:調試

public class StudentTest {
	public static void main(String[] args) {
		//建立一個學生對象
		Student s1 = new Student();
		//再建立一個學生對象
		Student s2 = new Student();
		//以上代碼其實和這行代碼差很少
		int i = 10;
		
		int no1 = s1.no;
		System.out.println("學號:" + no1);
		String name1 = s1.name;
		System.out.println("姓名:" + name1);
		int age1 = s1.age;
		System.out.println("年齡:" + age1);
		boolean sex1 = s1.sex;
		System.out.println("性別:" + sex1);
		
		int no2 = s2.no;
		System.out.println("學號:" + no2);
		String name2 = s2.name;
		System.out.println("姓名:" + name2);
		int age2 = s2.age;
		System.out.println("年齡:" + age2);
		boolean sex2 = s2.sex;
		System.out.println("性別:" + sex2);
		
		//固然,也能夠不使用no1,no2這樣的變量接收
		System.out.println("學號 = " + s1.no);
		System.out.println("姓名 = " + s1.name);
		System.out.println("年齡 = " + s1.age);
		System.out.println("性別 = " + s1.sex);
		
		System.out.println("學號 = " + s2.no);
		System.out.println("姓名 = " + s2.name);
		System.out.println("年齡 = " + s2.age);
		System.out.println("性別 = " + s2.sex);
	}
}
複製代碼

運行結果以下圖所示:code

圖1:對象的建立和使用orm

接下來解釋一下以上的輸出結果,經過以上的Student類能夠建立不少學生對象,假設經過Student類實例化了兩個學生對象,那必然會有兩個不一樣的學號,以上程序中並無給學號賦值,可是獲取了到的學號都是0,這是怎麼回事呢?

這是由於在java語言當中,當實例變量沒有手動賦值,在建立對象的時候,也就是說在new的時候,系統會對實例變量默認賦值,它們的默認值請參考下表:

數據類型 默認值
byte 0
short 0
int 0
long 0L
float 0.0f
double 0.0
boolean false
char \u0000
引用類型 null

🎆二、畫內存圖注意事項:

第一:你們在內存圖上不要體現出代碼。內存上應該主要體現「數據」。

第二:你們畫圖的時候,圖上的圖形應該有前後順序,先畫什麼,再畫什麼,必須是有順序的,而不是想起來這個畫這個,想起來那個畫那個。

程序代碼是有執行順序的,程序執行到哪裏你就畫哪裏就好了。

✨爲何要畫內存圖?(很是重要)

第一:有了內存圖,程序不運行,我也知道結果。(能夠推算出結果)

第二:有了內存圖,有助於你調試程序。

畫內存圖是對Java運行機制的一種理解。不知道運行機制,之後複雜的程序出現錯誤以後你是不會調試的,調不明白。

🎉三、程序在什麼狀況下會出現空指針異常呢?

空引用 訪問 "對象相關"的數據時,會出現空指針異常。

垃圾回收器主要針對堆內存。

🎊四、方法在調用的時候參數是如何傳遞的?

實際上,在java語言中,方法調用時參數傳遞,和類型無關,都是將變量中保存的那個「值」傳過去,這個「值」多是一個數字100,也多是一個java對象的內存地址:0x1234

記住這句話:不論是哪種數據類型的傳遞,都是將「變量中保存的那個值複製一份傳遞過去。」

🎃五、構造方法

5.一、當一個類中沒有提供任何構造方法,系統默認提供一個無參數的構造方法。

這個無參數的構造方法叫作缺省構造器。

5.二、當一個類中手動的提供了構造方法,那麼系統將再也不默認提供無參數構造方法。

建議將無參數構造方法手動的寫出來,這樣必定不會出問題。

5.三、無參數構造方法和有參數的構造方法均可以調用。

Student x = new Student();
Student y = new Student(123);
複製代碼

5.四、構造方法支持方法重載嗎?

構造方法是支持方法重載的。

在一個類當中構造方法能夠有多個。

而且全部的構造方法名字都是同樣的。

方法重載特色:

在同一個類中,方法名相同,參數列表不一樣。

5.五、對於實例變量來講,只要你在構造方法中沒有手動給它賦值,統一都會默認賦值。默認賦系統值。

構造方法須要掌握的知識點:

1.構造方法有什麼做用?

2.構造方法怎麼定義,語法是什麼?

3.構造方法怎麼調用,使用哪一個運算符?

4.什麼是缺省構造器?

5.怎麼防止缺省構造器丟失?

6.實例變量在類加載是初始化嗎?實例變量在何時初始化?

相關文章
相關標籤/搜索