为什么它的结果一个为60一个为3呢,请帮忙解释一下

关于static关键字问题

 

关于static关键字问题

 

关于static关键字问题

 

i是类的静态成员变量,属于整个类所有。一个对象改 了i的值后,其他对象的里i的值也会跟着改变。注意for循环里的i,不是int i。而是直接用的静态变量i。所以t1.call完了后i=3。所以t2.i=3。

你看的这书不好。我以前看过。很多低级错误,而且知识点讲解也不全面,很多都没讲到。

楼上推荐一本书
Effective Java

记住一句话就可以了, 静态变量(static variable) 属于这个类,可以被类的任何一个实例看到和改变。
所以一般的静态变量都会被声明为常量。private static final TYPE VARIABLE_NAME

那t2.i调用的时候为什么结果是3呢?有些不明白,你下面说的那本书是我这种刚入门看的吗?

所以t1.call完了后i=3。所以t2.i=3。

Java的成员变量分为两大类:类变量、实例变量。
在类中方法外定义的变量就是成员变量;被static修饰符修饰的成员变量就是类变量,因此
资源代下载也称为静态变量。实例变量不能被static修饰符修饰。
类变量与实例变量的区别可以参看:
Java的一些基本概念和它们之间的关系
类变量与对象没关系,不会因为对象的创建而产生,所以类变量对于所有对象其值都是一样的。类变量没有被final修饰就是变量,其值可以重新赋值,也可以通过方法改变。
在你给出的例子里,i是类变量,它开始被赋值为60(不论哪个对象引用都无所谓),所以第一次输出结果为60,然后通过t1.call()执行 call()里面的for语句结束后它的值就被改变为3,这时候不管哪个对象引用它(或者类名引用)它的值就是3,所以第二次输出的结果是3。

 

 

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-12-24
  • 2021-07-09
猜你喜欢
  • 2022-12-23
  • 2021-09-01
  • 2022-01-17
  • 2021-08-15
  • 2021-08-08
  • 2022-03-03
  • 2021-06-12
相关资源
相似解决方案