老师讲:当两类变量同名时,方法会优先使用局部变量。也称之为“就近原则”。那么问题来了,这里讲的“优先使用”是说方法会优先使用局部变量但是还是会出现使用成员变量的情况,还是说方法在任何情况下都只会使用局部变量呢?如果是前面那种意思,那在什么情况会使用成员变量而不是局部变量呢?
1、局部变量和成员变量的作用域不同;局部变量在方法内部(方法开始到结束);成员变量作用域是整个类(从类开始到结束);
2、成员变量有默认值,(被final修饰且没有static的必须显式赋值),局部变量不会自动赋值
3、成员变量可以被public、protected、default、private、static、final修饰符修饰,局部变量只能被final修饰符修饰。
4、成员变量在堆里进行创建,局部变量在栈里进行创建。
当方法中存在一个局部变量和成员变量同名时,使用的都是局部的变量,不会使用成员变量。