java中类变量和实例变量区别(数值的改变)

publicclassA{     staticinta=0;     ... public class A{      static int a = 0;      int b = 0;} public class B{      public static void main(String [] args){            A a1 = new A();            A a2 = new A();           a1.a = 3;           a1.b = 4;           System.out.println(a2.a);           System.out.println(a2.b);      }}  为什么:a2.a = 3           而              a2.b = 0(没有改变呢?) 展开
 我来答
zpzzj2012
2012-02-16
知道答主
回答量:6
采纳率:0%
帮助的人:3.7万
展开全部
类变量(即静态变量)是全局变量,所有的实例(如你提到的a1、a2)共享的变量。如果你在一个实例中改变了其值,那么所有的实例的这个变量的都会改变,例如 a1.a=10,那么你打印a2.a的值时也是10。而实例变量是每个实例自己独有的变量,互不干扰。就像你上面提到的,如果a1.b=4,打印a2.b还是0,那就说明a2实例中的b还是默认赋值0,并没有赋值4.
左手编码
2012-02-20 · TA获得超过756个赞
知道小有建树答主
回答量:421
采纳率:0%
帮助的人:351万
展开全部
这好比你住的地方有两个厕所,一个是公共的,一个是你自己私有的。类变量就是公共厕所,大家共享。所以,只要公共厕所装修了,其他成员都能知道(有权力去的人都可能知道)。而你自己的厕所发生变化了,其他人是没法知道的。所以当别人装修了自己的厕所,你肯定不会知道。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
怪小马
2012-02-22
知道答主
回答量:2
采纳率:0%
帮助的人:3280
展开全部
简而言之,类共享类变量,所以a2.a=3操作后 class A中a的值就变为3,自然a2.a输出值为3了。而实例变量b在被操作后,只是对于对象a1的变量b,局部的, 而不是整个类。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-02-15
展开全部
一个是类的变量(全局变量),一个是实例变量(局部变量)。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
夏末回捷
2019-07-04
知道答主
回答量:1
采纳率:0%
帮助的人:728
展开全部
怎么会有两个public class?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式