首先可以明确地说出一个Java类中大体分为两大块
1.变量
2.方法
但是方法与变量又有不同的类型
总体来说,方法与变量的种类是能对应起来的。
3 -> 2
即3种变量类型-----2种方法类型
分类 | 变量 | 方法 |
---|---|---|
静态(static) | 静态变量 | 静态方法 |
成员 | 成员变量 | 成员方法 |
局部 | 局部变量 | 无 |
以上我们就可以较为直观的感受到变量与方法的分类
变量与方法存在的意义就是被使用,那我们该如何使用这些变量,或是方法呢?
很关键!!需要注意!
1.静态方法和静态变量会随着类的定义而被分配和载入内存中。
2.成员方法和成员变量只有在类实例化后new出来的的那个对象的内存空间中才有成员方法与成员变量的代码片段。
根据上面的特点以及我们的测试,可以得知:
1.静态方法可以访问静态变量以及其他的静态方法。
2.成员方法可以访问成员变量,成员方法,静态变量和静态方法。
之所以会形成以上这样一种模式成员方法可以访问各种静态代码,而反过来静态方法不能访问各种成员代码段
的原因是,静态方法静态属性在类 被定义的时候就已经载入内存了,而此时成员方法与成员变量并没有在内存中,如果在静态方法中访问成员变量/方法就会报如下错误
形成这种模式(套路)的原因是由JVM决定的。
所以在开发中我们需要记得,静态只能访问静态(包括静态之间的赋值),而成员方法能访问静态与成员。总体来说,静态方法的范围更大,类与类所实例化出来的任意一个对象都可以进行访问。而成员方法只能实例化的那个对象访问属于他自己的成员方法/变量。
- 在方法中还有一个比较特殊的方法
构造方法记住一点,一般方法一定要写请出返回值类型(包括getter与setter---具体类型与void)
但是构造方法无需写出返回值类型
(也可以反推,在类中如果一个方法没有写返回值类型,那么他就是一个构造方法---构造方法连void都不用写,很特殊),
在实例化对象的时候,new 关键字其实就是调用了构造方法。
构造方法是实例化对象时进行初始化的。