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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. public class Test01 {
  2. static Test01 testA = new Test01(); //注意:在这里不加static下面的System在调用时就会出现运行异常,为什么会这样?
  3. public static void main(String[] args) {
  4. Test01 testA = new Test01();
  5. System.out.println(testA.equals(new Test01().testA));
  6. }
  7. }
复制代码
我被一个引用变量类型的成员变量困扰住了,问题请参见注释

评分

参与人数 1技术分 +1 收起 理由
薛鹏鹏 + 1

查看全部评分

3 个回复

倒序浏览
static静态方法只能访问静态成员,因为main是静态方法,所以只能访问静态的成员

评分

参与人数 1技术分 +1 收起 理由
杨增坤 + 1

查看全部评分

回复 使用道具 举报
这个并不是引用数据类型和基本数据类型的问题。
  1. public class Test{
  2.         int i;
  3.         public static void main(String[] args) {
  4.                 System.out.println(i);
  5.         }
  6. }
复制代码
这样也是会报错的。因为你的main方法是静态的,静态方法不能调用非静态的属性和方法。
因为静态的方法和属性是当类被加载到虚拟机中时就会被分配到内存空间上,可以直接执行的。
但是非静态的属性和方法必须是在创建实例化时才会分配到内存空间的。而如果你没有创建实例化对象的时候就通过静态的方法去调用非静态的属性或者方法,那就是没东西可以调,那明显就是错误的。
所以规定,静态不能调用非静态。

评分

参与人数 1技术分 +1 收起 理由
杨增坤 + 1

查看全部评分

回复 使用道具 举报
楼主 你的问题如果解决了!


请把您的问题的"未解决"更改为"已解决"!


谢谢合作!

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马