美文网首页
第二十一节课:static

第二十一节课:static

作者: 冰J冰 | 来源:发表于2016-01-12 11:09 被阅读71次
    import static java.lang.Math.random;
    // import  java.lang.Math;
    
    class StaticModifier {
    
        /*
            类中的静态变量和静态方法能够与“类名”一起使用,不需要创建一个类的对象来访问该类的静态成员.
    
        */
        static int i= 10;
        int j;
    
        StaticModifier() {
            j = 20;
    
        }
    
    }
    public class TestStatic {
    
        // 多个实例中的静态变量 um 是共享同一内存空间,t1.um 和 t2.um 其实指向的都是同一个内存空间
        static UserModel um = new UserModel();
        //1.static 修饰符
        public static void main(String args[]) {
            // 类.static 变量
            StaticModifier.i = 20;
            System.out.println("类变量i=" + StaticModifier.i);
    
            // 对象.实体变量
            StaticModifier s = new StaticModifier();
            System.out.println("实例变量j=" + s.j);
    
            /*2.编译器只为整个类创建了一个静态变量的副本,因此它能够用类名进行访问。
            也就是说:一个类中,一个 static 变量只会有一个内存空间,虽然有多个类实例,
            但这些类实例中的这个 static 变量会共享同一个内存空间*/
            TestStatic t1 = new TestStatic();
            t1.um.userName = "张三";
            TestStatic t2 = new TestStatic();
            t2.um.userName = "李四";
            System.out.println("t1.um.userName=="+t1.um.userName);
            System.out.println("t2.um.userName=="+t2.um.userName);
    
            //3. static 方法可以用类名而不是引用来访问
            System.out.println(GeneralFunction.addUp(1,2));
    
            // // 如访问控制权限允许,static 属性和方法可以使用对象名加‘.’方式调用;当然也
            // GeneralFunction a = new GeneralFunction();
            // a.addUp(3,4);
    
            // 4.静态import
            System.out.printf("\n随机数是:%f",random());
    
            /*5.静态初始器(Static Initializer)是一个存在与类中方法外面的静态块。静态初始器仅仅
    
            在类装载的时候(第一次使用类的时候)执行一次。
    
            静态初始器的功能是:往往用来初始化静态的类属性。
    
            */
    
            System.out.println("counter=" + Count.counter);
            new Count().test();
        }
    }
    
    class UserModel{
        public String userName="";
    }
    
    class GeneralFunction {
    
        int temp;
        // static 的基本规则:有关静态变量或方法的一些要点如下:
    
        public int getTemp(){
    
            return temp >0?temp:0;
        }
    
        // 构造方法不允许声明为 static 的
        public   GeneralFunction(){
    
    
        }
        // static 方法可以用类名而不是引用来访问
        public static int addUp(int x, int y) {
            /* 一个类的静态方法只能访问静态属性,否则出错,
            并且静态方法中不存在当前对象,因而不能使用“this”,当然也不能使用”super”;*/
    
            //temp = 10; 
            // 一个类的静态方法不能够直接调用非静态方法,否则出错
            // x = getTemp();
            return x + y;
        }
        
    }
    
    class GeneralFunctionSon  extends GeneralFunction{
        //  静态方法不能被非静态方法覆盖;
        public static int addUp(int x, int y) {
        
            return x+y;
        }
    
    }
    
    class Count {
    
        public static int counter;
        static {//只运行一次
            counter = 123;
            System.out.println("Now in static block.");
        }
        public void test(){
            System.out.println("test method=="+counter);
        }
    }
    
    
    public class People{
        Dog d ;
        public static void main(String[] args) {
            People zhangSan = new People();
            zhangSan.d = new Dog();
            zhangSan.d.nikName = "gouDan";
            System.out.print(zhangSan.d.nikName);
        }
    
    }
    class Dog{
    
        int legs;
        String nikName;
    
    }
    

    相关文章

      网友评论

          本文标题:第二十一节课:static

          本文链接:https://www.haomeiwen.com/subject/qyfckttx.html