zoukankan      html  css  js  c++  java
  • 为什么使用static,静态类,方法,变量的特点

    static 静态的
    public class Student {
    String name;
    double java;
    double sql;

    //以下成员不属于任何一个对象,而是属于整个类,随着类的加载而加载
    static double avg_java;
    static double avg_sql;

    public void showInfo() {
    System.out.println(name + "java成绩是" + java + "数据库成绩是" + sql);
    System.out.println("平均分是"+avg_sql);
    }

    public static void main(String[] args) {
    Student.avg_java =0;
    Student st =new Student();
    st.avg_java =0;

    Student st2 =new Student();
    st2.avg_sql =0;

    }
    }

    为什么使用static
    普通成员变量是每个对象都有的自己的属性
    有些变量并不属于对象个体,而是属于整个类,是所有的对象所共享的
    这一类变量我们要声明为static,静态的

    静态变量和实例变量的区别?

    静态变量存储在方法区,属于类所有.实例变量存储在堆当中,其引用存在当前线程栈.属于对象私有。需要注意的是从JDK1.8开始用于实现方法区的PermSpace被MetaSpace取代了.


    特点
    static表示静态的,在类的内部使用,可以修饰变量,方法,内部类
    用static修饰的成员都属于类级别的成员,在类加载期间初始化,随着类的加载而加载,早于对象存在
    静态的成员只有一份,所有对象共享
    静态成员的访问,可以直接使用类名.静态成员的方式访问,也可以使用对象.静态成员的方式访问,访问的都是同一个值
    静态的方法只能访问静态的成员变量,普通方法都可以访问,普通变量和静态变量
    不可以在方法中定义静态变量

    编译时所分配的内存会一直存在(不会被回收),直到程序退出内存才会释放这个空间在类实例化为对象之前静态方法就已经存在于内存,即跟类的对象实例化没什么关系

    当父类引用指向子类对象,只会调用父类的静态方法,此行为并不具有多态性!所以子类重写父类的静态方法,并没有实际意义!

  • 相关阅读:
    python 项目实例
    flash教程
    flask request
    systemd-unit
    kubernets HA集群手动部署
    zookeeper(1)-简单介绍
    apache与nginx原理
    技术文章整理
    CMS垃圾回收器
    Zookeeper
  • 原文地址:https://www.cnblogs.com/longmo666/p/13557238.html
Copyright © 2011-2022 走看看