A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© RichardKing 中级黑马   /  2016-6-6 19:43  /  457 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


  1. public class CopyOfTransferProperty {
  2. // 定义静态成员变量
  3. static int i = 47;

  4. // 定义成员方法
  5. public void call() {
  6. System.out.println("调用call()方法");
  7. for (i = 0; i < 3; i++) {
  8. System.out.print(i + "");
  9. if (i == 2) {
  10. System.out.println("\n");
  11. }
  12. }
  13. }

  14. public CopyOfTransferProperty() {
  15. // 定义构造方法
  16. }

  17. // 定义主方法
  18. public static void main(String[] args) {
  19. CopyOfTransferProperty t1 = new CopyOfTransferProperty(); // 创建一个对象
  20. CopyOfTransferProperty t2 = new CopyOfTransferProperty(); // 创建另一个对象
  21. t2.i = 60; // 将类成员变量赋值为60
  22. // 使用第一个对象调用类成员变量
  23. System.out.println("第一个实例对象调用变量i的结果:" + t1.i++);
  24. t1.call(); // 使用第一个对象调用类成员方法
  25. // 使用第二个对象调用类成员变量
  26. System.out.println("第二个实例对象调用变量i的结果:" + t2.i);
  27. t2.call();
  28. }
  29. }
复制代码


问题:为什么第一个实例对象调用变量i的结果为60而第二个实例对象调用变量i的结果为3.

3 个回复

倒序浏览

public class Demo{
   
    public static String s="aaa";
   
    public static void main(String[] args){
            Demo a = new a();
            Demo b = new b();
            System.out.println(a.s);
            System.out.println(b.s);
    }
}
class a extends Demo{
    public static String s = "sdad";
}
class b extends Demo{
    public static String s = "sdkkk";
}
还有这样的一个多态的静态成员变量问题,输出结果都是aaa,为什么?

回复 使用道具 举报
static修饰的是静态变量,在第一个变量输出i=60之后,i++会将i赋值为61,但在call()方法后,i赋值为3
原理的问题让大神来告诉你吧
第二题就不太清楚了
回复 使用道具 举报
只用到主方法的静态变量
和后面那两个类无关吧?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马