1、static关键字

static关键字,用于修饰类,字段,属性,方法,构造方法等。

被static修饰的类称之为“静态类”;

被static修饰的成员称之为“静态成员”;

被修饰过的成员分别称为:静态字段,静态属性,静态方法,静态构造方法。

2、静态字段

被static关键字修饰的字段,叫做“静态字段”。

静态字段不属于任何对象,只属于类,必须要用 类名.静态字段名 进行访问,

反过来通过 对象名.静态字段名

静态字段赋值java 静态字段有什么特点_静态方法

静态字段是可以重新赋值的,类名.静志字段名=新的值;

静态字段存储的数据在内存中只有一份;

实例(对象)字段在内存中会有N份,有多少对象就会有多少实例字段;

3、静态属性

被static关键字修饰的属性,叫做“静态属性”。

静态属性用于对静态字段进行封装,并保证静态字段值的合法性;

静态属性使用类名.静态属性名进行访问; 

静态字段赋值java 静态字段有什么特点_静态方法_02

静态属性不能用于封装非静态字段,因为静态的类成员是先于非静态的类成员存在的。在还没有对象之前,静态类成员就已经存在了。

4、静态方法

普通静态方法:

被static修饰的方法,叫做静态方法。

直接使用类名静态方法名进行访问

注意事项:

控制台程序的Program入口类中的Main函数就是一个静态方法 ;

在静态方法中不能调用非静态方法。

public void P1
{
    P2();//没有问题,可以访问到
    Console.WriteLine("我是静态方法");
}

public void P1
{
    P1();//出错,不能访问非静态的成员
    Console.WriteLine("我是静态方法");
}

静态的构造方法:

静态构造方法的作用是用于初始化静态成员。

一个类只能有一个静态构造方法,该静专方法没有任何访问修饰符,也没有参数。

可以定义在静态类中,也可以定义在非静态类中。

注意事项:

静态构造方法会在程序创建第一个实例, 或者引用任何静态成员之前,完成类中静态成员的初始化。

静态字段赋值java 静态字段有什么特点_字段_03

5、静态类

当类中的成员全部是静态成员的时候,可以把这个类声明为静态类。

声明静态来需要在class关键字前加静态关键字static。

注意事项

静态类中不能存在非静态(实例)成员;

静态类不能实例化对象。

6、单例设计模式

设计模式

在程序开发过程中经常会遇到一些典型的问题,在对这些问题进行处理解决的过程中,慢慢的整理出来了一套系统的解决方案,这套方案称之为“设计模式”。类似于Boss的攻略,通过这些攻略可以很方便的通过这些副本和Boss。

大多数情况下,我们只需要把前人总结好的设计模式学会即可。并不需要自己去研究去创造新的模式。代表性的有《GoF23种设计模式》。

单例设计模式

设计一个类的时候,需要保证整个程序在运行期间只存在一个实例对象。

解决这个问题,我们就需要用到“单例(模式)”。

单例设计模式是用于非静态类中的,在静态类中写单例无意义。

单例代码步骤

<1>声明一个静态且私有的这么一个当前类类型的字段;

private static ClassName instance;

<2>创建私有无参构造方法,保证外部无法实例化这个类;

private ClassName(){}

<3>创建一个静态方法,用于创建此类的唯一对象。

public static ClassName Instance( ){
  if (instance == null)
  {
    instance = new ClassName();
  }
  return instance;
}