Java連載33-物件的建立和使用、記憶體分析
一、建立一個學生類
每個學生都有學號資訊,但是每一個學生的學號都是不同的,所以要訪問這個學號必須先建立物件,通過物件去訪問學號資訊,學號資訊不能直接通過“類”去訪問,所以這種成員變數又被稱為“例項變數”
注意:
(1)物件又被稱為例項,例項變數又被稱為物件變數(物件級別的變數)
(2)不建立物件,這個Number的記憶體空間是不存在的,只有建立了物件,這個number變數記憶體才會被建立
(3)通過一個類可以例項化多個物件
(4)例項化物件的語法
new 類名();
(5)new是java語言中的一個運算子
(6)new運算子的作用:建立物件,在JVM堆記憶體中開闢新的二記憶體空間
(7)方法區記憶體:在類載入的時候,class位元組碼程式碼片段被載入在該記憶體空間之中
(8)棧記憶體(區域性變數):方法程式碼片段被執行的時候,會給該方法分配記憶體空間,在棧記憶體中,進行壓棧
(9)堆記憶體:new的物件在堆記憶體中被儲存;
(10)D32_student是一個引用資料型別,s是一個變數名,new D32_student()是一個學生物件,s是一個區域性變數(在棧記憶體中儲存)
(11)什麼是物件?new運算子在堆記憶體中開闢的記憶體空間稱為物件
(12)什麼是引用?引用是一個變數,只不過這個變數中儲存了另一個java物件的記憶體地址
(13)java語言中,不能直接操作堆記憶體,java中沒有指標,不想C語言
(14)java語言中,只能通過“引用”去訪問堆記憶體中的物件內部的例項變數
(15)訪問例項變數的語法格式:
讀取資料:引用.變數名 修改資料:引用.變數名 = 值
舉例:
public class D33_student2_test { public static void main(String[] args) { D32_student s = new D32_student(); System.out.println("jfahsf "); s.no = 154; s.address = "jafalj "; System.out.println(s.no); D32_student s2 = new D32_student(); System.out.println(s2.no); //以下程式報錯,因為no這個例項變數不能直接採用“類名”的方式訪問 //因為no是例項變數,物件級別的變數,變數儲存在java物件的內部,必須先有物件,因為物件才能訪問no這個例項變數 //不能直接通過“類名”來訪問 //System.out.println(D32_student().no); } } class D32_student { //public static main(Sting[] args) { int no;//學號 String name;//姓名 int age;//年齡 boolean sex;//性別 String address;//地址 //方法是描述物件的動作資訊,當前例子就不描述方法了,只描述資訊屬性 //} }
二、原始碼:
D33_student2_test.java
地址:
https://github.com/ruigege66/Java/blob/master/D33_student2_test.java
2.CSDN:https://blog.csdn.net/weixin_44630050(心悅君兮君不知-睿)
3.部落格園:https://www.cnblogs.com/ruigege0000/
4.歡迎關注微信公眾號:傅立葉變換,個人公眾號,僅用於學習交流,後臺回覆”禮包“,獲取大資料學習資料
&n