类变量的访问方法为:“类名.类变量”;实例变量的访问方法为:“实例名.实例变量”。类变量也能以“实例名.类变量”进行访问,但这样的访问方式会让人产生误解,容易与“实例名.实例变量”产生混淆,请看如下代码:
public class Test
{
public static void main(String[] args)
{
Demo d = new Demo();
Demo.name = "我是程序员";
d.name = "我是黑马程序员";
//打印结果为“我是黑马程序员"
System.out.println(Demo.name);
}
}
//定义一个类
class Demo
{
//定义一个类变量
public static String name;
}
上面的代码显示,改变了对象中的变量同时,居然改变了类变量。实际上,这是java的一个bug,java允许通过对象名.类变量来调用类变量,对象名.类变量=类名.类变量。所以无论是对象调用类变量还是类名调用类变量,都是内存中的同一个类变量。为了阅读方便,建议大家以后在调用类变量时,最好用类名.类变量进行调用,而不用对象名.类变量(避免和对象名.实例变量相混淆)。 |
|