Java基础——static修饰符

static

static在多种计算机语言在常有用到
static在java语言中作为修饰符也有着重要的地位

引入

  • static修饰属性,可生成静态属性
  • static修饰方法,可生成静态方法
  • static修饰代码块,可生成静态代码块
  • static修饰类,可生成静态类

静态属性

//权限修饰符 static 数据类型 名称;
public static int num;

各个对象数据进行沟通,实现数据的共享

特点

  • static声明的属性为类属性
  • 创建对象时,不产生static属性的拷贝
  • 类所有实例共享一个static属性
  • 类装载时,只分配一块存储空间,所以类的对象进行操作
  • 静态属性值一旦改变,所有类的对象均共享改变

访问方式

由特点可知:

  1. 静态属性不属于任何实例,属于类对象
  2. 所以该类的实例都可进行操作静态属性
  • 类名.公有静态属性名
  • 对象名.公有静态属性名
//Demo为含有公有静态属性num的类
Demo d = new Demo();
//第一种方法
Demo.num = 1;
//第二种方法
d.num = 2;

静态方法

//权限修饰符 static 返回值类型 方法名(参数){
//      方法体;
//}
private static int num = 1;
public static int getNum(){
      return num;
}

java的三大特性之一:封装
为了体现java的特性,所有类的属性一般设为私有(private),
为了访问私有的静态成员,需要静态方法来实现该功能。

特点

  • 不调用不执行。
  • static方法独立于任何实例,因此static方法必须被实现,而不能是抽象的(abstract)

访问方式

  • 类名.公有静态方法名(参数);
  • 对象名.公有静态方法名(参数);
//Demo为含有私有静态属性num、公有静态方法getNum的类
Demo d = new Demo();
//第一种方法,用的最多
Demo.getNum();
//第二种方法
d.getNum();

使用规则

  1. 在静态方法中,只能直接调用其他static类型的方法
  2. 在静态方法中,只能直接访问static类型的属性
  3. 在静态方法中,不能使用thissuper

静态代码块

静态代码块主要是初始化类中的静态变量。

static{
      //代码块
}

特点

仅在类被加载时执行一次。

继承顺序

//父类
public class Parent{
      static{
            //代码块1
      }
      Parent(){
            //代码2
      }
}

//子类
public class Son extends Parent{
      static{
            //代码块3
      }
      Son(){
            //代码4
      }
}
//执行顺序
//代码1
//代码3
//代码2
//代码4

当一个类继承父类,父类和该类中有静态代码块
在该类加载时,代码的执行顺序为:

  1. 父类的静态代码块
  2. 子类的静态代码块
  3. 父类的构造方法
  4. 子类的构造方法

静态与非静态顺序

  1. 静态属性/静态代码块
  2. 非静态属性/非静态代码块
  3. 构造方法

静态类

普通类不允许声明为静态,内部类可以
声明为静态的内部类可以直接作为一个普通类来使用,而不需实例化一个外部类。

final

final和static一起使用,修饰成员变量和方法,可作为全局常量

  • static final 常量,一旦赋值不可修改,可通过类名访问

  • static final 方法, 不可覆盖,可通过类名访问


博客相关java项目:查看Github项目

对应github项目:Static

导入项目的方法: Java基础——Java如何导入本地项目

猜你喜欢

转载自www.cnblogs.com/occlive/p/13366650.html