JAVA物件與記憶體控制
阿新 • • 發佈:2018-11-17
例項變數與類變數
例項變數 :也叫非靜態變數,在定義該變數時未使用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 ); } }