java入門【八】類與物件
阿新 • • 發佈:2018-12-23
類 共性的一個集合
物件 某一個性的產物 物件也是類的一個例項
class組成
- Field (成員,變數 ,屬性)變數的集合用來描述類
- Method(方法)由物件呼叫
定義物件
- 宣告並例項化物件
類名稱 物件名稱 = new 類名稱();
- 分佈完成
1.宣告物件 類名稱 物件名稱 = null;
2.例項化物件 物件名稱 = new 類名稱();
關於new:我們引用資料型別需要開闢新的記憶體
//定義類 class Book{ String title;//Field double price;//Field public void getInfo(){ System.out.println("圖書名稱:"+title+"圖書價格:"+price); }//Method } public class HelloWorld{ public static void main(String args[]){ Book bk = new Book(); bk.title = "小王子"; bk.price = 18.8; bk.getInfo(); } }
下面我們來看java與c的一個區別就是會預設賦予變數初值
//定義類 class Book{ String title;//Field double price;//Field public void getInfo(){ System.out.println("圖書名稱:"+title+"圖書價格:"+price); }//Method } public class HelloWorld{ public static void main(String args[]){ Book bk = new Book(); //bk.title = "小王子"; //bk.price = 18.8; bk.getInfo(); } }
java對於記憶體的操作
如果我們使用分佈去定義類
//定義類 class Book{ String title;//Field double price;//Field public void getInfo(){ System.out.println("圖書名稱:"+title+"圖書價格:"+price); }//Method } public class HelloWorld{ public static void main(String args[]){ Book bk = null;//在棧上宣告 bk = new Book();//在堆上開闢記憶體 bk.title = "小王子"; bk.price = 18.8; bk.getInfo(); } }
假如我們不去堆上開闢記憶體
假如不去宣告
引用傳遞
//定義類
class Book{
String title;//Field
double price;//Field
public void getInfo(){
System.out.println("圖書名稱:"+title+"圖書價格:"+price);
}//Method
}
public class HelloWorld{
public static void main(String args[]){
Book bk1 = null;//在棧上宣告
Book bk2 = null;
bk1 = new Book();//在堆上開闢記憶體
bk1.title = "小王子";
bk1.price = 18.8;
bk2 = bk1;
bk2.price = 16;
bk1.getInfo();
}
}
說明多個棧記憶體可以同時操作一個堆記憶體,但是一個棧記憶體只能儲存一個堆記憶體的地址
//定義類
class Book{
String title;//Field
double price;//Field
public void getInfo(){
System.out.println("圖書名稱:"+title+"圖書價格:"+price);
}//Method
}
public class HelloWorld{
public static void main(String args[]){
Book bk1 = null;//在棧上宣告
Book bk2 = null;
bk1 = new Book();//在堆上開闢記憶體
bk2 = new Book();
bk1.title = "小王子";
bk1.price = 18.8;
bk2.title = "安徒生童話";
bk2.price = 89.9;
bk2 = bk1;
bk2.price = 16.6;
bk1.getInfo();
bk2.getInfo();
}
}
但是我們可以看到一塊沒有被棧指向的記憶體,也就是相當於c中沒有指標的記憶體 我們無法操作 成為垃圾
但是java中沒有free(),而是引入了GC將垃圾回收,釋放記憶體。就不用像c一樣被操作記憶體所困擾