Java中静态成员变量与非静态成员变量的区别

前两天朋友问我成员变量前边加static和不加static有什么区别,我把书给她看,书上是这么解释静态成员变量的:

如果我们在成员变量前边加上static关键字,这个变量就成为静态成员变量,我们又把这种变量叫做“类变量”,因为这样的变量在这个类的所有对象里只有一个,这个类的所有对象“共享”同一个类变量。因此,一旦通过某个对象修改了静态变量的值,这个类的所有其他对象里面,这个静态变量的值就跟着变了。

书上已经说得很清楚了,但为了方便理解,我写了两段简单的代码来帮助更好理解静态成员变量和非静态成员变量的区别。

package test2;

public class Test_Static {

 private static int i = 100;

 public int getI() {
  return i;
 }
 public void setI(int i) {
  this.i = i;
 }
 public void setI(int j, int k) {
  Test_Static m = new Test_Static();
  m.setI(j);
  i = m.getI() + k;
 }
 public static void main(String[] args) {
  Test_Static a = new Test_Static();
  a.setI(200);
  Test_Static b = new Test_Static();
  b.setI(b.getI(), 100);
  System.out.println(b.getI());
 }
}

控制台输出结果如下:
在这里插入图片描述

package test2;

public class Test_NoStatic {

 private int i = 100;

 public int getI() {
  return i;
 }
 public void setI(int i) {
  this.i = i;
 }
 public void setI(int j, int k) {
  Test_NoStatic m = new Test_NoStatic();
     m.setI(j);
  i = m.getI() + k;
 }
 public static void main(String[] args) {
  Test_NoStatic a = new Test_NoStatic();
  a.setI(200);
  Test_NoStatic b = new Test_NoStatic();
  b.setI(b.getI(), 100);
  System.out.println(b.getI());
 }
}

控制台输出结果如下:
在这里插入图片描述
可以简单地说:成员变量 i 前边加了static,就可以理解为这个类里只有这一个变量,所以任意一个对象修改它的值它的值都会改变;成员变量 i 前边不加static,每个对象都有自己的 i ,修改自己的 i 不会改变另一个对象的 i 的值。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值