1.概念区分
成员变量和成员方法是范围最大的定义,提到成员变量就可以理解成你所定义在一个类体中的各类变量的统称,成员方法亦如是。java类的成员变量包括实例变量和类变量,成员方法包括实例方法和类方法。
那么,什么是实例变量和类变量呢?
实例变量,是新建了实例后才能用的变量。
类变量,是不用新建实例,直接通过类来调用的变量。特点是用static修饰。所以它们还有个响当当的名字,叫静态变量,静态方法。
总之:成员变量最大,包括实例变量和类变量,类变量=静态变量。
2.实例变量与类变量不同
实例变量是类实例化后,系统为其创建的一个类的实例变量的拷贝,即一个实例拥有一个实例变量。
类变量则是用static声明,系统为每个类变量分配一次存储空间。即所有的实例共享一个类变量。
3.使用方法
(1)实例方法可以直接访问实例变量,调用实例方法;
(2) 实例方法可以直接访问类变量,调用类方法。但不推荐这么做,原因是不清晰,容易把类变量误认为是实例变量,把类方法误认为是实例方法(借助IDE,它会给出警告信息。);
(3)类方法可以直接调用类变量和类方法;
(4)类方法不能直接调用实例变量和实例方法;
(5)类方法里面不能使用“this”关键字,因为没有实例存在,“this”不知道引用哪个实例。
原文:https://blog.youkuaiyun.com/youyaecho/article/details/51188392
最后:
this主要要三种用法:
1、表示对当前对象的引用
2、表示用类的成员变量,而非函数参数
3、用于在构造方法中引用满足指定参数类型的构造器(其实也就是构造方法)。
this.类变量(静态变量)用法可以归为第二种,但是注意this不能用在static 方法中。
不会报错但是会有警告The static field StaticTest. value should be accessed in a static way.
可参考下面问答,上面是里面的结论:
https://ask.youkuaiyun.com/questions/649226?sort=comments_count