Java:static 修饰的字段、方法

  • static 修饰符表示静态的,可修饰字段、方法、内部类,其修饰的成员属于类,也就是说 static 修饰的资源属于类级别,而不是对象级别。

static 的真正作用:

用来区别字段、方法、内部类,初始化代码属于对象还是属于类本身。

static 修饰符的特点:

① static 修饰的成员(字段/方法),随着所在类的加载而加载
当 JVM 把字节码加载金 JVM 的时候,static 修饰的成员已经在内存中了
② 优先于对象的存在
对象是被手动通过 new 关键字创造出来的
③ static 修饰的成员被该类型的所有对象所共享
根据该类创建出来的任何对象,都可以访问 static 成员。
注:表面上通过对象去访问 static 成员,其本质依然使用类名访问,与对象无关,使得 3 并无实际意义
④ 直接使用类名访问 static 成员
因为static修饰的成员直接属于类,不属于对象,所以可以直接使用类名访问static成员。

类成员和实例成员的访问

类中的成员:字段、方法、内部类
类成员:使用static修饰的成员
实例成员:没有使用static修饰的成员

  类成员只能访问类成员,实例成员只能访问实例成员,类成员直接属于类,可以通过类来访问 static 字段和 static 方法

实例成员:

只属于对象,通过对象来访问非 static 字段和非 static 方法(对象其实可以访问类成员,但是底层依然使用类名访问的)

在 static 方法中,只能调用 static 成员
非 static 方法:可以调用静态成员,也可以调用实例成员

如果这个状态/行为属于整个事物(类),就直接使用 static 修饰,则该行为被所有对象所共享。

  在开发中,往往把工具方法使用 static 修饰,如果不使用 static 修饰,则这些方法属于该类的对象,我们得先创建对象再调用方法,而在开发中工具对象只需要一份即可,若不使用 static 修饰,可能会创建 N 个对象,使得系统内存占用增多,性能低下,此时的解决办法汪汪把该类设计为单例的,但依然麻烦,即:在一般开发中,设计工具方法时,为了调用简单,使用 static 修饰。

类成员的使用

利处:对对象的共享数据进行单独空间的存储,节省空间,没有必要每一个对象都存储一份,可以直接被类名调用
弊端:生命周期过长

猜你喜欢

转载自blog.csdn.net/qq_33811662/article/details/80724150