zoukankan      html  css  js  c++  java
  • (二十八)static关键字

    /*
    *    static 静态的
    *    static修饰的成员变量的特点
    *    1.static修饰的成员变量是该类的所有对象共享
    *    2.static修饰的成员变量是随着类的加载就在静态区中开辟内存了,所以有限与非静态成员开辟内存
    *    3.static修饰的成员变量可以通过类名直接访问
    *    静态成员变量和非静态成员变量的区别?
    *    1.存储的数据
    *    静态成员变量存储的是所有对象共享的数据
    *    非静态成员变量存储的是每个对象特有的数据
    *    存储的位置
    *    静态成员便令是随着类的加载在方法区中的静态区开辟内存
    *    非静态成员变量是随着对象的创建,在堆中开辟内存
    *    调用方式
    *    静态成员变量可以通过类名访问,也可以通过对象访问
    *    非静态成员变量可以通过对象访问
    *    生命周期
    *    静态成员变量随着类的加载就在方法区中的静态区出现,整个程序执行玩消失。
    *    非静态成员变量随着对象的创建在堆中出现,随着对象被垃圾回收机制回收,而消失。
    */
    总结:拥有static的静态成员会在程序的执行的时候优先开始执行,且会在程序执行结束后消失,拥有全局都可以访问到的特性。可以直接通过类名调用,也可以通过对象调用。静态资源中无法访问非静态资源,因为在程序的加载顺序中,静态资源优于非静态资源加载,在静态资源中引用非静态资源时,非静态资源不存在,或报错,静态资源无法从上下文中引入非静态 变量 name,但是可以引用静态成员的变量。
     
    什么时候把成员变量修饰为static?
    当成员变量需要被类的所有对象访问时
    什么时候把成员函数修饰为static?
    当成员函数中没有用到所属类中的任何的非静态成员时
    class Student {
        String name;//实例成员变量
        static String country = "CN";//类变量
        public void show() {//实例成员函数
            System.out.println(name + " " + country);
        }
    }    
    class Demo9 {
        public static void main(String[] args) {
            Student stu = new Student();
            stu.name = "Jack";
            stu.show();
            Student stu2 = new Student();
            stu2.name = "Tom";
            stu2.show();
            System.out.println(Student.country);
        }
    }
  • 相关阅读:
    json_encode([0])
    try catch throw
    如何 lookback
    协程||进程
    客户错了?
    循环 php 变量会影响到传入的参数
    csv变成xls, csv乱码
    虚拟机不能git push
    数组下标大小写
    php 静态方法
  • 原文地址:https://www.cnblogs.com/bgwhite/p/9375504.html
Copyright © 2011-2022 走看看