标签:
一、实例变量和类变量的定义
Java程序的变量可分为成员变量和局部变量。
注意:static的作用将实例成员变为类成员,只能修饰类里的成员。
public class ErrorDef{ //下面代码将提示:非法前向引用 int num1 = num2 + 2; int num2 = 20; } public class ErrorDef2{ //下面代码将提示:非法向前引用 static int num1 = num2 + 2; static int num2 = 20; } public class RightDef{ //下面代码完全正常 int num1 = num2 + 2; static int num2 = 20; }
二、实例变量和类变量的属性
在同一个JVM内,每个类只对应一个Class对象,但每个类可以创建多个Java对象。由于 每个类只对应一个Class对象,所以同一个JVM内的一个类的变量只需要一块内存空间;对于实例变量,该类每创建一次实例,就需要为实例变量分配一块内存空间。
class Person{ String name; int age; static int eyeNum; } public class FieldTest{ public static void main(String[] args){ Person.eyeNum = 2; //------(1) System.out.println(Person.eyeNum); Person p = new Person(); p.name = "猪八戒"; p.age = 300; System.out.println(p.eyeNum);//----(2) Person p2 = new Person(); p2.name = "孙悟空"; p2.age = 500; p2.eyeNum = 3; //------(3) System.out.println(p.eyeNum); System.out.println(p2.eyeNum); System.out.println(Person.eyeNum); } }
上面代码的内存分配过程如下所示:
标签:
原文地址:http://www.cnblogs.com/wangqi327/p/4484284.html