• 关于Java中static关键字的用法以及从内存角度解析


    在Java中,static可以用来修饰成员变量和成员方法。

    修饰成员变量,称为静态成员方法

    修饰静态方法,称为静态成员方法

    搞清楚用法和区别之前,先搞清static声明的变量和普通非静态变量在内存的分布是怎样的,这样的话,理解起来会事半功倍的。

    代码测试如下:

    public class Person {
        static String firstName;
        String lastName;
    
        public void showName(){
            System.out.println(firstName+lastName);
        }
    
       public static void viewName(){
          System.out.println(firstName);
      }
    
    }
    public static void main(String[] args) {
        Person p =new Person();
        //p.firstName="张";
        Person.firstName = "张";
        p.lastName="三";
        p.showName();
        Person p2 =new Person();
        //p2.firstName="王";
        Person.firstName="王";
        p2.lastName="隔壁";
        p2.showName();
    }

    运行结果:

    张三       王隔壁

    在内存的结果分析如下:

    静态成员变量加载在方法区,声明一次,即可被所有类对象所使用

    非静态成员变量加载在堆内存,是每个对象内部维护的独立变量,互相之间没有影响

    具体测试如下:

    用法一:Static修饰成员变量

    (1)修饰成员变量,叫做静态成员变量

    作用:静态成员变量被当前所有类对象所共享

    内存:存储在方法区内

    调用:A:类名.静态成员变量     推荐使用

             B:对象.静态成员变量      不正规

    public static void main(String[] args) {
        Person p =new Person();
        //p.firstName="张";
        Person.firstName = "张";
        p.lastName="三";
        p.showName();
        Person p2 =new Person();
        //p2.firstName="王";
        Person.firstName="王";
        p2.lastName="隔壁";
        p2.showName();
    }
    运行结果:
    张三       王隔壁

    (2)修饰成员方法,叫做静态成员方法

    作用:静态成员方法中只能直接的使用静态成员方法和调用其他静态成员方法

    调用:A:类名.静态方法   推荐使用

              B:对象.静态方法     不正规

    public static void main(String[] args) {
        Person p =new Person();
        //p.firstName="张";
        Person.firstName = "张";
        p.lastName="三";
        p.showName();
        Person p2 =new Person();
        //p2.firstName="王";
        Person.firstName="王";
        p2.lastName="隔壁";
        Person.viewName();
    }
    运行结果:
    张三
    王

    区别:非static修饰的成员变量和成员方法

    (1)非static修饰的成员变量      也称实例变量

    作用:是每个对象内部维护的独立变量,互相之间没有影响

    内存:存储在堆内存中

    调用:对象.成员变量          唯一方式

    (2)非static修饰的成员方法      也称实例方法

    作用:方法中可以使用静态和非静态的成员方法和成员变量

    调用:对象.成员方法

  • 相关阅读:
    图片轮播切换
    php用get_meta_tags轻松获取网页的meta信息
    PHP创建桌面快捷方式实例
    php 获取网站根目录的写法
    php mkdir 创建多级目录实例代码
    php计算剩余时间的自定义函数
    php实现获取汉字的首字母实例
    PDO封装函数
    Struts动态表单(DynamicForm)
    [WPF]静态资源(StaticResource)和动态资源(DynamicResource)
  • 原文地址:https://www.cnblogs.com/ncl-960301-success/p/10596857.html
Copyright © 2020-2023  润新知