打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
关于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修饰的成员方法      也称实例方法

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

调用:对象.成员方法

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
error LNK2001: 无法解析的外部符号 “public: static int Pe...
您不知道的 5 件事……: Java Collections API,第 2 部分
Java中的static关键字解析
PHP static静态变量和函数方法
第十三天 面向对象-final&static&匿名对象&内部类&包&代码块【悟空教程】
xstream两分钟教程
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服