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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 愚翁 中级黑马   /  2015-7-12 15:42  /  775 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  类变量的访问方法为:“类名.类变量”;实例变量的访问方法为:“实例名.实例变量”。类变量也能以“实例名.类变量”进行访问,但这样的访问方式会让人产生误解,容易与“实例名.实例变量”产生混淆,请看如下代码:
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允许通过对象名.类变量来调用类变量,对象名.类变量=类名.类变量。所以无论是对象调用类变量还是类名调用类变量,都是内存中的同一个类变量。为了阅读方便,建议大家以后在调用类变量时,最好用类名.类变量进行调用,而不用对象名.类变量(避免和对象名.实例变量相混淆)。

1 个回复

倒序浏览
很好很好
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马