3.7 static 关键字

static 关键字是静态的意思,是Java中的一个修饰符,可以修饰成员方法,成员变量

被static修饰的成员变量,一般叫做静态变量

被static修饰的成员方法,一般叫做静态方法

被static 修饰的成员,会该类的所有对象所(共享)

被static 修饰的成员,会随着类的加载而加载,优于对象存在

多了一种调用方式,可以通过类名.进行调用

static 修饰的特点

被类的所有对象共享

是我们判断是否使用静态关键字的条件

随着类的加载而加载,优先于对象存在

对象需要类被加载后,才能创建

可以通过类名调用

也可以通过对象名调用

推荐使用类名调用

静态随着类的加载而加载,优先于对象存在

非静态需要在创建对象之后,才可以进行使用

1.静态方法中,只能访问静态成员(成员变量,成员方法)

2.非静态方法中,可以使用静态成员,也可以使用非静态成员

  1. 静态方法中,没有this关健宁 this:当前对象的引用

this需要在创建对象之后,才会存在,静态存在的时候,对象可能还没有被创建

用static 标识符修饰的变量,它们在类被载入时创建,只要类存在,static 变量就存在。由于静态成员变量能被各实例对象所共享,所以我们可以用它来实现一些特殊效果,如我们想统计在程序中一共产生了多少某个类的实例对象

类的静态成员经常被称作“类成员”(class members),对于静态成员变量,我们叫叫类属性(class attributes),对于静态成员方法,我们叫类方法(class methods)。采用static关键字说明类的属性和方法不属于类的某个实例对象,在前面的多个例子程序中反复用到的System.out.println0语句,其中,System 是一个类名,out是 System 类的一个静态成员变量,println0)方法则是out 所引用的对象的方法。System.gc()语句中的gc()也是 System类的一个静态方法。

在使用类的静态方法时,要注意以下几点:

(1)在静态方法里只能直接调用同类中其他的静态成员(包括变量和方法),而不能直接访问类中的非静态成员。这是因为,对于非静态的方法和变量,需要先创建类的实例对象后才可使用,而静态方法在使用前不用创建任何对象。

(2)静态方法不能以任何方式引用 this 和 super 关键字super 关键字在第4 章讲解)与上面的道理一样,因为静态方法在使用前不用创建任何实例对象,当静态方法被调用时this 所引用的对象根本就没有产生。

(3)main0)方法是静态的,因此JVM 在执行main 方法时不创建 main方法所在的类的实例对象,因而在 mmain0方法中,不能直接访问该类中的非静态成员,必须创建该类的一个实例对象后,才能通过这个对象去访问类中的非静态成员,这种情况,在以后的例子中会多次碰到。

一个类中可以使用不包含在任何方法体中的静态代码块(static block),当类被载入时静态代码块被执行,且只被执行一次,静态块经常用来进行类属性的初始化。

所谓类的单态设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值