# Java內存機制 #
java把內存分爲兩種,一種是堆內存一種是棧內存。
棧內存存放的是基本數據類型變量和引用數據類型變量。
堆內存存放的是new建立的對象和數組。在堆分配的的內存,由java中的垃圾回收器來自動回收。
java中只存在值傳遞,基本數據類型的傳遞是基本數據類型的值,引用數據類型傳遞的是地址。一個棧只能指向一個堆,可是一個堆能夠被多個棧引用。
**注意**
棧: 自動分配連續的空間,後進先出。放置的是局部變量,線程不共享。
堆: 放置的是new出來的對象。
方法區:又叫靜態存儲區,存放的是類的代碼信息,靜態static變量 以及常量值。線程共享
public class Student {
String name; //名字
int age; //年齡
Computer com; //電腦對象,也是做爲屬性存在
public void study(){
System.out.println(this.name+"在學習!");
}
public void sayHello(String name){
System.out.println(this.name+"對"+name+"說:hello");
}
}
public class Computer {
String brand;//品牌
int cpuSpeed; //運行速度
}
package com.yunsi.storeause6.d0314;
public class TestStudent {
public static void main(String[] args) {
Student stu = new Student();
stu.name="張三";
stu.age=10;
//調用方法
stu.study();
stu.sayHello("李四");
Computer computer = new Computer();
computer.brand="聯想";
computer.cpuSpeed=100;
//將computer賦值給stu的屬性 com
stu.com=computer;
System.out.println("****"+stu.com+"-----"+stu.com.brand);
}
}
## 構造方法##
**構造方法的做用**:爲了方便參數的傳遞,容許在新建對象的時候,同時對這個對象的一些屬性進行初始化。
**構造方法分爲兩種:**
(1) 無參構造方法
public 類名(){
(2) 有參構造方法
public 類名(參數類型1 參數名稱1,參數類型2 參數名稱2){}
**構造方法如何修飾?**
(1)容許沒有修飾
(2)訪問的修飾: public, protected, private
(3)不能有如下非訪問性質的修飾: abstract, final, native, static
**注意:**
(1)每一個類都必須有構造方法,若是你不寫任何構造方法,則系統會默認提供一個無參構造方法。你也能夠本身寫構造方法。
(2)構造方法調用必須經過new語法,構造函數在建立對象的時候自動調用。
(3)若是類中已經定義了有參構造方法,則系統不會默認分配無參方法,若是須要調用無參構造,則必須顯式定義。
(4)一個類能夠有多個構造函數,構造方法不能被繼承
java