Java语言中,变量的类型及作用域

变量的类型:成员变量、静态变量、局部变量;

成员变量:
类的成员变量的作用范围与类的实例化对象的作用范围相同,当类被实例化时,成员变量就会在内存中分配空间并初始化,知直到这个被实例化对象的生命周期结束时,成员变量的生命周期才结束。成员变量有默认值。

静态变量:
被static修饰的成员变量被称为静态变量或全局变量,与成员变量不同的是,静态变量不依赖于特定的实例,而是被所有实例所共享。也就是说,只要一个类被加载,JVM就会给类的静态分配存储空间(静态变量存储在方法区的静态区域中,成员变量存储在堆内存中)。因此,可以通过类名和变量名来访问静态变量。

局部变量:
局部变量是定义在方法中的变量。局部变量的作用域与可见性为它所在的花括号内。局部变量没有默认值。如果在使用局部变量时不为其赋值,那么在编译的时候就会出现错误。

注意:
如果方法中的局部变量的名字和成员变量的名字相同,那么方法就会隐藏成员变量,在方法进行操作时采用局部变量。而如果想使用隐藏的成员变量值,那么只需添加this.成员变量即可实现其值调用。

此外,成员变量也有四种作用域:

作用域与可见性 当 前 类 同一个package 子 类 其他package
public y y y y
protected y y y n
default y y n n
private y n n n

public:表明该成员变量或方法对所有类或对象都是可见的,所有类或对象都可以直接访问。

protected:表明成员变量或方法对该类自身,与它在同一个包中的其他类,在其他包中的该类的子类是可见的。

default:表明该成员变量或方法只有自己和与其位于同一个包内的类可见。若父类与子类位于同一个包内,则子类对父类的default成员变量或方法都有访问权限;若父类与子类位于不同的包内,则没有访问权限。

private:表明成员变量或方法是私有的,只有当前类对其具有访问权限,除此之外的其他类或对象都是没有访问权限。

注意
这些修饰符只能修饰成员变量,不能用来修饰局部变量。
private与protected不能用来修饰外部类(只有public、abstract或final能用来修饰外部类),但这些修饰符都可以用来修饰内部类。

发布了18 篇原创文章 · 获赞 6 · 访问量 532

猜你喜欢

转载自blog.csdn.net/weixin_41143657/article/details/105472212