Java培訓(xùn)班哪個實力強?直接看教授的技術(shù)內(nèi)容就可以了!對我們來說,學(xué)到前沿的java技術(shù),找到一份體面的工作才是重要的。在決定之初,多多比較各大培訓(xùn)機構(gòu)的大綱,結(jié)合現(xiàn)在企業(yè)對技術(shù)人才的要求,篩選出一個理想的培訓(xùn)班!
以上是個人經(jīng)驗分享,下面是學(xué)習(xí)技術(shù)分享!(當(dāng)做分割線吧)
綜合考慮下,我是在千鋒學(xué)習(xí)的java,個人選擇,僅供參考。下面是自己總結(jié)的技術(shù)點:java面向?qū)ο笾械膶ο髣?chuàng)建與使用。也就是說我們程序員如何new出無數(shù)個對象!
接下來演示如何用類創(chuàng)建對象,創(chuàng)建對象之前,必須先聲明對象,其語法格式如下:
類名 對象名;
類是自定義類型,也是一種引用類型,因此該對象名是一個引用變量,默認值為null,表示不指向任何堆內(nèi)存空間。接下來需要對該變量進行初始化,Java使用new關(guān)鍵字來創(chuàng)建對象,也稱實例化對象,其語法格式如下:
對象名 = new 類名();
上述示例中,使用new關(guān)鍵字在堆內(nèi)存中創(chuàng)建類的對象,對象名引用此對象。聲明和實例化對象的過程可以簡化,其語法格式如下:
類名 對象名 = new 類名();
接下來演示創(chuàng)建Person類的實例對象,具體示例如下:
Person p = new Person();
上述示例中,“Person p”聲明了一個Person類型的引用變量,“new Person()”為對象在堆中分配內(nèi)存空間,最終返回對象的引用并賦值給變量p,如圖所示:
對象實例化后,就可以訪問對象的成員變量和成員方法,其語法格式如下:
對象名.成員變量;
對象名.成員方法();
接下來通過一個案例來學(xué)習(xí)訪問對象的成員變量和調(diào)用對象的成員方法,如例4-1所示。
例4-1 TestPersonDemo.java
1 class Person {
2 String name; // 聲明姓名屬性
3 int age; // 聲明年齡屬性
4 public void say() { // 定義顯示信息的方法
5 System.out.println("姓名:"+name+",年齡:"+age);
6 }
7 }
8 public class TestPersonDemo {
9 public static void main(String[] args) {
10 Person p1 = new Person(); // 實例化第一個Person對象
11 Person p2 = new Person(); // 實例化第二個Person對象
12 p1.name = "張三"; // 為name屬性賦值
13 p1.age = 18; // 為age屬性賦值
14 p1.say(); // 調(diào)用對象的方法
15 p2.say();
16 }
17 }
程序的運行結(jié)果如圖所示。
例4-1中,實例化了兩個Person對象,并通過“對象.屬性”的方式為成員變量賦值,通過“對象.方法”的方式調(diào)用成員方法。從運行結(jié)果可發(fā)現(xiàn),變量p1、p2引用的對象同時調(diào)用了say()方法,但輸出結(jié)果卻不相同。這是因為用new創(chuàng)建對象時,會為每個對象開辟獨立的堆內(nèi)存空間,用于保存對象成員變量的值。因此,對變量p1引用的對象屬性賦值并不會影響變量p2引用對象屬性的值。為了更好地理解,變量p1、p2引用對象的內(nèi)存狀態(tài)如圖所示。
例4-1中沒有為p2對象的成員變量賦值,但從圖中可發(fā)現(xiàn),p2對象的name值為null,age值為0。這是因為在實例化對象時,Java虛擬機會自動為成員變量進行初始化,根據(jù)成員變量的類型賦相對應(yīng)的初始值。
另外,需要注意的是,一個對象能被多個變量所引用,當(dāng)對象不被任何變量所引用時,該對象就會成為垃圾,不能再被使用。接下來演示垃圾是如何產(chǎn)生的,如例4-2所示。
例4-2 TestObjectRef.java
1 class Person {
2 String name; // 聲明姓名屬性
3 int age; // 聲明年齡屬性
4 public void say() { // 定義顯示信息的方法
5 System.out.println("姓名:"+name+",年齡:"+age);
6 }
7 }
8 public class TestObjectRef {
9 public static void main(String[] args) {
10 Person p1 = new Person(); // 實例化第一個Person對象
11 Person p2 = new Person(); // 實例化第二個Person對象
12 p1.name = "張三"; // 為p1對象name屬性賦值
13 p1.age = 18; // 為p1對象age屬性賦值
14 p2.name = "李四"; // 為p2對象name屬性賦值
15 p2.age = 28; // 為p2對象age屬性賦值
16 p2 = p1; // 將p1對象傳遞給p2對象
17 p1.say(); // 調(diào)用對象的方法
18 p2.say();
19 }
20 }
程序的運行結(jié)果如圖所示。
例4-3中,第16行代碼p2被賦值為p1后,會斷開原有引用的對象,而和p1引用同一對象。因此打印如圖4.6所示結(jié)果。此時,p2原有引用的對象不再被任何變量所引用,就成了垃圾對象,不能再被使用,只等待垃圾回收機制進行回收。垃圾產(chǎn)生的過程,如圖所示。
圖中,首先實例化兩個對象p1和p2,其次分別為p1和p2的屬性賦值,最后將p2從新賦值為p1,p2將斷開原有引用,此時被斷開引用的對象,也不被其他引用變量所引用,就成為垃圾空間,等待被回收。
以上是自己在千鋒java培訓(xùn)學(xué)習(xí)時的筆記,個人覺得千鋒java培訓(xùn)課程還是值得推薦的,感興趣的可以先試聽一下!