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 );
    }
}

猜你喜欢

转载自blog.csdn.net/android_xpp/article/details/82763235
今日推荐