static关键字

举报
@小红花 发表于 2022/02/25 12:52:50 2022/02/25
【摘要】 static的特点:static翻译为静态的所有static关键字修饰的都是类相关的,类级别的。所有static修饰的,都是采用类名.的方式访问。static修饰的变量:静态变量static修饰的方法:静态方法 静态都是类相关的,访问时采用类名.的方式访问,不需要new对象不需要对象的参与即可访问,没有空指针异常的发生。静态变量在类加载器时初始化,不需要new对象,静态变量的空间就开出来了。...
      • static的特点:
        • static翻译为静态的
        • 所有static关键字修饰的都是类相关的,类级别的。
        • 所有static修饰的,都是采用类名.的方式访问。
        • static修饰的变量:静态变量
        • static修饰的方法:静态方法

 

      • 静态都是类相关的,访问时采用类名.的方式访问,不需要new对象
      • 不需要对象的参与即可访问,没有空指针异常的发生。
      • 静态变量在类加载器时初始化,不需要new对象,静态变量的空间就开出来了。

 

      • java中有三个变量,必须掌握:
        • 静态变量存储在方法区。
        • 实例变量存储在堆。
        • 局部变量存储在栈stack

 

      • 什么时候使用实例变量,什么时候使用静态变量?
        • 如果这个类型的所有对象的某个属性值都是一样的。不建议定义为实例变量,浪费内存空间,建议定义为类级别特征,定义为静态变量,在方法区中中保留一份,节省内存开销。
        • 一个对象一份的是实例变量。
        • 所有对象一份的是静态变量。

 

实例的:一定要使用引用.来访问

静态的:建议使用类名.来访问,但使用引用.也行(不建议使用引用.

静态的如果使用引用.来访问会让程序员产生疑惑:程序员以为是实例的呢。

 

空指针异常只有在什么情况下才会发生呢?

只有在空引用访问实例相关的,都会出现空指针异常。

 

      • 关于方法来说,什么时候定义为实例方法?什么时候定义为静态方法?
      • 此方法一般都是描述一个行为,如果说该行为必须由对象去触发。那么该方法定义为实例方法。
      • 参考标准:
        • 当这个方法体当中,直接访问了实例变量,这个方法一定是实例方法。
        • 我们以后开发中,大部分情况下,如果是工具类的话,工具类当中的方法一般都是静态的。(静态方法有一个优点,是不需要new对象,直接采用类名调用,及其方便。工具类就是为了方便,所以工具类中的方法一般都是static的)

 

使用static关键字可以定义:静态代码块

语法:

static{

java语句;

}

类加载时执行,并且只执行一次。

注意:静态代码块在类加载时执行,并且在main方法执行之前执行。

静态代码块不是那么常用。(不是每一个类当中都要写的东西)。

静态代码块这中语法机制实际上是SUN公司给我们java程序员的一个特殊的时机。

这个时机叫做:类加载时机

 

使用静态代码块的具体业务:

项目经理说了:大家注意了,所有我们编写的程序中,只要是类加载了,请记录一下类加载的日志信息(在哪年哪月那日几时几分几秒,那个类加载到JVM当中了)。

 

除了静态代码块之外,还有一种语句叫做:实例语句块

实例语句在类加载时并没有执行。

语法:

{

java语句;

}

 

实例语句块在什么是执行?

只要是构造方法执行,必然在构造方法执行之前,自动执行实例语句块中的代码,

实际上这也是SUN公司为JAVA程序员准备一个特殊的时机,叫做对象构建的时机。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。