1.就是上面new A()的getName(),取实例变量name值
2.a1和a2是一样的,都是指向new A()分配的堆上
3.指向同一址空间,操作起来是一样的效果a1.getName()结果为"ss"  static A a1=null;
  static A a2=null;
是迷惑性的东西,在里面没有用到在方法changeValue()方法中的a1,a2一直是操作的new A()实例
在changeValue引用类的静态变量应该要用
B.a1;
B.a2;注意作用域就行了。

解决方案 »

  1.   

    ss
    地址
    a1,a2指向同一地址空间
      

  2.   

    1.a1.getName()当然是ss了
    2.是地址传递,此时a1,a2都是指向同一个实例.跟是否静态无关.
    3.是指向同一地址空间
      

  3.   

    a1.getName 的值是"ss";
    a2 = a1; 是值传递,Java中无论是什么值都是"pass by value"的
    当a2 = a1之后,a1和a2就指向了同一地址空间。
    static关键字的作用是声明一个变量或者是一个方法为静态的。当一个变量为静态变量时那么它就不依赖于对象而存在了。例如:Math类中的静态常量PI,你如果要使用这个量,那么你不必创建Math类的对象,可以直接通过Math.PI来使用。静态方法也是一样,它不依赖于对象,所以在静态方法中不能使用this,super关键字。