A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 阿牛 中级黑马   /  2012-3-19 13:21  /  1584 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

static可以修饰成员变量和成员函数,被static定义的成员变量和函数随着类的加载而加载。
静态成员变量能够被类直接调用,它能在该类对象创建前被访问,而不用引用任何对象,声明为static的变量实质上就是全局变量。当声明一个对象时,并不产生static变量的拷贝,而是该类所有的实例变量共同拥有一个static变量。
静态函数有以下限制: 它们仅能调用其他的static 方法。它们只能访问static数据。它们不能以任何方式引用this 或super。

另外,关于加载顺序:类,类中静态变量,静态代码块,构造函数

下面例子验证了静态成员变量和函数的用法,注释的都是编译报错的部分。
class staticDemo
{
        static int a=3;       
        static int b=2+a;
        staticDemo(String msg)
        {
                System.out.println(msg);
        }
         void math(int x)
        {
                System.out.println("a "+a);
                System.out.println("b "+b);
                System.out.println("x "+x);
        }
        static
        {               
                System.out.println("b "+b);

                System.out.println("static bloc initialized");

                b=4*a;
        }
}
class staticDemo1
{
        int q=4;
        public void show()
        {
                System.out.println("show run");
        }
       
        public static void main(String [] a)
        {
               
                new staticDemo("constructor initialized").math(20);/*如果math方法是静态的,
                那么可以staticDemo.math(20);*/

                //System.out.println("a "+a);
                System.out.println("a "+staticDemo.a);

                //        System.out.println("q "+q);       
                System.out.println("q "+new staticDemo1().q);

                //show();
                new staticDemo1().show();

        }
       
       
}

2 个回复

倒序浏览
学习了,总结的不错吗,
回复 使用道具 举报
{:soso_e185:}继续努力
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马