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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

目前只给类的代码 注释如下:
//其中num 为非静态变量 num2为该类中的静态变量
        public static void method() {
                //以下连续三行运行时均会显示 无法从静态上下文中引用非静态变量 num
                //System.out.println(num);
                //System.out.println(this.num);
                // System.out.println(this.num2);(在静态方法中是没有this关键字的如何理解呢?
                                静态是随着类的加载而加载,this是随着对象的创建而存在。
                                静态比对象先存在。)
                System.out.println(num2);
               
        }

评分

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

查看全部评分

3 个回复

倒序浏览
静态变量是可以直接通过类名调用的(类加载的时候,静态变量就随之存在方法区里,也就是优先于对象),也就是说不用创建对象,非静态变量,需要创建对象,对象来调用的,this关键字是指的哪个对象调用方法,就指的是那个对象。
回复 使用道具 举报
静态变量又叫类变量,因为它属于类,在对象还没创建时只要类加载了,在内存中就存在了。成员变量是属于对象的,只有在创建对象时,成员变量才会在堆空间中分配空间,并完成初始化。
类加载是不一定有对象,这时候使用静态方法访问成员变量是办不到的。这是一种错误的请求,是不被允许的。
但是创建对象时,静态是一定存在的,因为创建对象之前JVM会先加载类,因此在非静态方法中访问静态是可以完成的。这种请求是合理的,是被允许的。


回复 使用道具 举报
感谢各位积极的回复!能不能尽量结合实际语句来讲解列!谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马