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

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

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

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

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

代码测试如下:

public classPerson {staticString firstName;

String lastName;public voidshowName(){

System.out.println(firstName+lastName);

}public static voidviewName(){

System.out.println(firstName);

}

}

public static voidmain(String[] args) {

Person p=newPerson();//p.firstName="张";

Person.firstName = "张";

p.lastName="三";

p.showName();

Person p2=newPerson();//p2.firstName="王";

Person.firstName="王";

p2.lastName="隔壁";

p2.showName();

}

运行结果:

张三       王隔壁

在内存的结果分析如下:

30038ac6c9e5dcd535615b037df094da.png

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

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

具体测试如下:

用法一:Static修饰成员变量

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

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

内存:存储在方法区内

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

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

public static voidmain(String[] args) {

Person p=newPerson();//p.firstName="张";

Person.firstName = "张";

p.lastName="三";

p.showName();

Person p2=newPerson();//p2.firstName="王";

Person.firstName="王";

p2.lastName="隔壁";

p2.showName();

}

运行结果:

张三 王隔壁

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

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

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

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

public static voidmain(String[] args) {

Person p=newPerson();//p.firstName="张";

Person.firstName = "张";

p.lastName="三";

p.showName();

Person p2=newPerson();//p2.firstName="王";

Person.firstName="王";

p2.lastName="隔壁";

Person.viewName();

}

运行结果:

张三

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

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

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

内存:存储在堆内存中

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

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

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

调用:对象.成员方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值