黑马程序员技术交流社区

标题: 有关键字static修饰的方法是没有this 几点注解 是否完全正确 [打印本页]

作者: lixunwen    时间: 2015-4-30 20:48
标题: 有关键字static修饰的方法是没有this 几点注解 是否完全正确
目前只给类的代码 注释如下:
//其中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);
               
        }
作者: andre    时间: 2015-4-30 21:30
静态变量是可以直接通过类名调用的(类加载的时候,静态变量就随之存在方法区里,也就是优先于对象),也就是说不用创建对象,非静态变量,需要创建对象,对象来调用的,this关键字是指的哪个对象调用方法,就指的是那个对象。
作者: IDhmpj    时间: 2015-4-30 21:42
静态变量又叫类变量,因为它属于类,在对象还没创建时只要类加载了,在内存中就存在了。成员变量是属于对象的,只有在创建对象时,成员变量才会在堆空间中分配空间,并完成初始化。
类加载是不一定有对象,这时候使用静态方法访问成员变量是办不到的。这是一种错误的请求,是不被允许的。
但是创建对象时,静态是一定存在的,因为创建对象之前JVM会先加载类,因此在非静态方法中访问静态是可以完成的。这种请求是合理的,是被允许的。



作者: lixunwen    时间: 2015-5-1 17:28
感谢各位积极的回复!能不能尽量结合实际语句来讲解列!谢谢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2