静态关键词在java中的作用有哪些

  介绍

这期内容当中小编将会给大家带来有静态关关键词在java中的作用有哪些,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

静态基本规则:

(1)一个类的静态方法只能访问静态属性。

(2)一个类的静态方法不能直接调用非静态方法。

(3)如果访问权限允许,静态属性和方法可以使用对象加& # 39;强生# 39;方式调用,当然也可以使用实例加& # 39;强生# 39;方式调用。

(4)静态方法中不存在当前对象,所以不能使用,当然也不能使用超级。

(5)静态方法不能被非静态方法覆盖。

(6)构造方法不允许被声明为静态的。

静态关键词,可以加在方法上,成员变量上,代码块。类就不要想了。

1。静态的方法

静态方法可以在类没有实例化的情况话直接访问。在静态方法中不能访问类的非静态成员变量和非静态成员方法,因为非静态成员方法/变量都是必须依赖具体的对象才能够被调用。

2。静态变量

静态变量也称作静态变量、静态变量和非静态变量的区别是:静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。

静态成员变量的初始化顺序按照定义的顺序进行初始化。

静态变量只会有一个内存空间,虽然后多个实例,但这些实例中的静态变量会共享同一个内存空间,所以静态变量的值发生变更要格外注意,以免造成不必要的“bug”。

静态变量是在类装载的时候就被初始化的。

3。静态代码块

可以用来初始化一些成员信息。

public  class  testClassA  {   ,public  static  int  val =, 1;   ,static  {   ,System.err.println (“11:“, +, val);=,val  2;   ,System.err.println (“22:“, +, val);   ,}   ,public  static  int  getVal (), {   ,return  val;   ,}   }   System.err.println (testClassA.getVal ());

结果:

第十一章
22:2 2

4。静态的内部类

为何要用内部类?

1)。内部类一般只为其外部类使用;

2)。内部类提供了某种进入外部类的窗户;

3)。也是最吸引人的原因,每个内部类都能独立地继承一个接口,而无论外部类是否已经继承了某个接口,因此,内部类使多重继承的解决方案变得更加完整。

public  class  ClassA  {   ,public  static  String  val =,“1”;   ,   ,public  ClassA (), {   ,}   ,public  static  class  ClassB {//静态内部类   ,public  static  int  bVal =, 2;   ,}   ,   ,public  class  ClassC  {   ,public  ClassC ()   ,{   ,   ,}   ,   ,private  void 名称(),{   ,System.err.println (“abc");   ,}   ,}   }

5。静态静态导入

静态导包是为了简化代码,提高代码的阅读性,但是如果滥用阅读性会很糟糕。

对于静态导入,一定要遵循两个规则(来自下面的资料):

不使用*(星号)通配符,除非是导入静态常量类(只包含常量的类或接口)。
方法名是具有明确,清晰表象意义的工具类。

import  static 有。*;      public  class  testClass  {   ,public  static  void  main (String [], args), {   ,err.println();//这里就不用system.err.println()了。   ,}   }

6。实现单例

public  class  ClassA  {   ,   ,private  static  ClassA  instance =,空;   ,   ,public  static  synchronized  ClassA  getInstance(),{//静态方法生成实例,懒汉模式,用到的时候再实例化   ,if  (instance ==, null), {=,,instance  new  ClassA ();   ,}   ,return 实例;   ,}   ,   ,public  void 测试(),{   ,System.err.println (1);   ,}   } public  class  ClassA  {   ,   ,private  static  ClassA  instance =, new  ClassA();//,饿汉模式,直接生成实例   ,   ,public  static  ClassA  getInstance (), {   ,   ,return 实例;   ,}   ,   ,public  void 测试(),{   ,System.err.println (1);   ,}   }

静态关键词在java中的作用有哪些