【Java】static关键字

一、简介

文章参考 |java static 详解

通常,我们编写一个类并创建对象时,不同对象之间的实例变量互不影响。

但我们有时候希望某些特定的数据在类中可以共享。

例如:所有中国人都属于同一个国家,这时候就希望分配一个共享变量存储国家名称,而不是为每一个中国人的对象单独分配一个代表国家名称的实例变量。

二、作用范围

static关键字通常用来修饰成员变量、方法、代码块。

1.修饰变量

static修饰的变量被称为静态变量、类变量

使用说明:

  1. 静态变量随着类的加载而加载,要早于非静态变量的加载
  2. 静态变量可以通过"类名.静态变量名"或者"对象.静态变量名"进行调用,通常使用前者。
  3. 由于类只会加载一次,则静态变量在内存中也只会存在一份
  4. static不能修饰局部变量

代码如下:

public class Test {
    public static void main(String[] args) {

        Person.nationName="中国";
        Person p1 = new Person();
        p1.name="路人甲";
        Person p2 = new Person();
        p2.name="路人乙";
        System.out.println(p1.nationName);//中国人
        System.out.println(p2.nationName);//中国人
        System.out.println(p1.name);//路人甲
        System.out.println(p2.name);//路人乙

    }
}
class Person {
    public static String nationName;
    public String name;
}

​

2.修饰方法

static修饰的方法被称为静态方法、类方法

使用说明:

  1. 静态方法随着类的加载而加载,可以通过"类名.静态方法"或"对象名.静态方法"调用
  2. 静态方法只能调用静态的方法或变量;非静态方法可以调用所有的方法或变量
  3. 静态方法中,不能使用 this 关键字、super 关键字

代码如下:

public class Test {
    public static void main(String[] args) {
        Person p1 = new Person();
        Person p2 = new Person();
        Person.display();//我是中国人
        p1.display();//我是中国人
        p2.display();//我是中国人

    }
}
class Person {
    public static String nationName;
    public String name;

    public static void display(){
        System.out.println("我是中国人");

    }
}

3.修饰代码块

static修饰的代码块被称为静态代码块

使用说明:

  1. 每个静态代码块只会在类加载的时候执行一次
  2. 静态代码块只能调用静态变量或静态方法
  3. 通常用于一次性操作
public class Test {
    public static void main(String[] args) {
        Person p1 = new Person();
        Person p2 = new Person();
        //我是中国人

    }
}
class Person {
    public static String nationName;
    public String name;
    static {
        System.out.println("我是中国人");
        System.out.println(nationName);
        System.out.println(name);//编译不通过
    }

}

三、总结

本文仅仅简单介绍了static的基本使用,后续将补充static使用注意点。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值