1. 程式人生 > >JAVA物件與記憶體控制

JAVA物件與記憶體控制

例項變數與類變數

例項變數 :也叫非靜態變數,在定義該變數時未使用static修飾
類變數: 也叫靜態變數,在定義時使用static修飾
對於static關鍵字而言,表面上他只是靜態的意思,但在java的角度看,它是將例項成員轉化成類成員。他只能修飾在類中定義的成員部分,包括成員變數,方法,內部類,初始化塊,內部列舉類
JAVA要求定義成員變數時必須採用合理的前向引用

public class ErrorDef
{
	int num1 = num2 + 20 ;
	int num2 = 10 ;
	//此時程式碼將提示非法向前引用
}

public class ErrorDef2
{
	static int num1 = num2 + 20 ;
	static int num2 = 10 ;
	//此時程式碼將提示非法向前引用
}
public class RightDef
{
	 int num1 = num2 + 20 ;
	 static int num2 = 10 ;
	//此程式碼就正常多啦
}

例項變數與類變數的屬性
例項變數屬於類的例項;對於例項變數而言,該類每創立一個例項,就要為例項變數分配 一次空間
類變數屬於類的本身;只需要一塊記憶體空間

public class person
{
   String name;
   int age;
   static int eyeNum;
   public void info(){
       System.out.println( "我的名字是"  + ", 我的年齡是" + age);
   }
}
 public static void main(String[] args)
    {
        person.eyeNum = 2;
        System.out.println( "Persion的eye屬性" + person.eyeNum );
        person P = new person();
        P.name = "豬八戒";
        P.age = 300;
        System.out.println( "通過p訪問eye" + P.eyeNum );
        P.info();
        person p2 = new person();
        p2.age = 200;
        p2.name = "空空";
        p2.info();
        p2.eyeNum = 3;
        System.out.println( "P變數訪問eyeNum類變數" + P.eyeNum );
        System.out.println( "P2變數訪問eyeNum類變數" + p2.eyeNum );
        System.out.println( "P變數訪問eyeNum類變數" + person.eyeNum );
    }
}