Java实例变量和类变量

546 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路

实例变量和类变量

1.不同对象的实例变量互不相同

2.所有对象共享类变量

3.通过类名直接访问类变量(但java程序执行时,类的字节码文件被加载到内存,如果该类没有创建对象,类中的实际变量就不会被分配内存,但是,类中的类变量,在该类被加载到内存时,就分配了相应的内存,类变量的内存空间直到程序退出运行,才释放所占用的内存。

4.7.3 实例方法和类方法的定义

类中的方法可分为实例方法和类方法(静态方法),方法声明的时候,方法类型前面不加关键字static 修饰的是实例方法,加static关键字修饰的是类方法

实例方法和类方法的区别

1.对象调用实例方法

当类的字节码被加载到内存时,类的实例方法不会被分配入口地址,只有该类创建对象后,类中的实例方法才会分配入口地址,从而实例方法可以被创建的任何对象调用,需要注意的是,当创建对象后,类中的实例方法就分配了入口地址,但再创建新的对象时,不再分配入口地址,也就是说,方法的入口地址被所有的对象共享,当所有的对象不存在的时候,方法的入口才会被取消。

实例方法不仅可以操作实例变量,且可以操作类变量

2.类名调用类方法

对于类中的类方法,在该类被加载到内存时,就分配了相应的入口地址,所以类除了可以被各个对象所调用,还可以通过类名进行调用,实例方法不能通过类名调用,只能通过对象名调用

类方法不可操作实例变量,因为在类创建对象前类中的成员变量还没有分配内存

3.设计类的方法的原则

如果该方法与类中的实例变量没有任何联系,就可以满足要求,将它设为类方法,如Arrays类

4.12访问权限

1.私有变量和私有方法(private)

如果类中的成员变量或方法为private的时候,不同对象之间不可调用,即使是静态变量和静态方法也不可调用。

2.共有变量和共有方法(public)

与私有变量完全相反,若类中的成员变量或方法设为public的时候,不同对象之间可以随便调用,静态变量和静态方法更可以随便调用了

3.友好变量和友好方法

不用public、private、protected修饰符修饰的成员变量和方法被称为友好变量和友好方法

该访问权限是在同一个包下才可以相互访问,不在同一个包下的不能相互访问

4.受保护的成员变量和方法(protected)

同友好变量和方法

public类和友好类

可以在任何一个类中使用public类创建对象

只能在同一个包中用友好类创建对象

一个java文件一般只有一个共有类,即主类

1.不能用protected和private来修饰类

2.访问限制修饰符按访问权限从高到低的排列顺序是public protected 友好的 private