前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Java的static关键字 非常常用的操作

Java的static关键字 非常常用的操作

作者头像
Designer 小郑
发布2023-08-01 11:00:03
发布2023-08-01 11:00:03
15900
代码可运行
举报
文章被收录于专栏:跟着小郑学JAVA跟着小郑学JAVA
运行总次数:0
代码可运行

之前学习了Java的抽象和封装,接下来继续研究Java的高级功能,即面向对象编程的进阶功能。 本文先讲解Java语言基于面向对象原理给出的第一个关键字——static,给之后写Java继承、多态打好基础。

一、static概念

static在英文中是“静态”的意思。

在Java中,将static列为一个关键字,用来修饰类层次的成员,被所有对象共享。

即在装入类之后,可以直接通过类名访问,不需要再new一个对象出来。

static在Java中,主要有这三种用法:

  1. static修饰类的成员变量
  2. static修饰类的成员方法
  3. static修饰某段代码块,初始化类的成员变量

二、类变量

在编写Java程序时,被static修饰的成员变量也叫做静态成员变量。

当JVM虚拟机在加载类中就创建了该变量。该变量在内存中只有一份,被所有对象所共享。

创建一个类,该类中有一个静态变量code,用static关键字修饰


代码语言:javascript
代码运行次数:0
复制
package cn.zwz.entity;

public class ParameterSetting {

    public static String code = "ZWZ";
}

然后创建一个测试类,从中调用该参数


代码语言:javascript
代码运行次数:0
复制
package cn.zwz;

import cn.zwz.entity.ParameterSetting;

public class Main {
    public static void main(String[] args) {
        System.out.println(ParameterSetting.code);
    }
}

输出:


代码语言:javascript
代码运行次数:0
复制
ZWZ

Process finished with exit code 0

即 ParameterSetting 对象中的code变量,被所有对象所共享,不用创建对象,就可以通过类名访问。

而且不能通过this来访问该变量,由此推断出没有this指针。

通常来讲,用static关键字修饰的变量称为静态成员变量,而不用static关键字修饰的变量叫做实例变量。

实例变量需要用户创建对象后再调用。

比如我们创建一个实例变量code:


代码语言:javascript
代码运行次数:0
复制
package cn.zwz.entity;

public class ParameterSetting {

    public String code = "ZWZ";
}

在测试类中,我们需要先创建对象,才能调用


代码语言:javascript
代码运行次数:0
复制
package cn.zwz;

import cn.zwz.entity.ParameterSetting;

public class Main {
    public static void main(String[] args) {
        ParameterSetting parameterSetting = new ParameterSetting();
        System.out.println(parameterSetting.code);
    }
}

Java的实例变量,每创建一次对象,都会新建一份内容,即每个对象都拥有一份内存空间。

类变量必须唯一,而实例变量来说,类所实例化的不同对象,都可以拥有不同的值。


三、类方法

用static关键字修饰的方法称为静态方法。和静态成员变量一样,不能使用this指针,而且不能类的实例变量和实例方法。

比如在类中创建一个add静态方法,可以被静态的main方法所调用。


代码语言:javascript
代码运行次数:0
复制
package cn.zwz;

public class Main {

    public static int add(int a,int b) {
        return a + b;
    }

    public static void main(String[] args) {
        add(1,2);
    }
}

如果add不为静态方法,则不允许,IDE会提示错误信息。

静态方法支持访问类的静态变量和静态方法


代码语言:javascript
代码运行次数:0
复制
package cn.zwz.entity;

public class ParameterSetting {

    public static String code = "ZWZ";

    public static int add(int a,int b) {
        return a + b;
    }
}

测试类

代码语言:javascript
代码运行次数:0
复制
import cn.zwz.entity.ParameterSetting;

public class Main {

    public static void main(String[] args) {
        System.out.println(ParameterSetting.add(1,2));
        System.out.println(ParameterSetting.code);
    }
}

四、static代码块

在Java的类中,支持包含static修饰的代码块。

这段代码块属于公共的部门,不属于任何方法,即静态代码块。

在加载类中,JVM会执行这些静态代码块。

这些代码块会按照代码的顺序依次执行,但只会被执行一次,所以有很多适用的场景。

静态代码块类似静态方法,没有this指针,不能访问类的实例变量和实例方法,必须要先创建对象。

静态代码块最常用的场景,就是初始化类变量


代码语言:javascript
代码运行次数:0
复制
package cn.zwz.entity;

public class ParameterSetting {

    public static String code = "ZWZ";

    static {
        System.out.println("ParameterSetting 类加载了");
    }
}

测试类


代码语言:javascript
代码运行次数:0
复制
package cn.zwz;

import cn.zwz.entity.ParameterSetting;

public class Main {

    public static void main(String[] args) {
        System.out.println(ParameterSetting.code);
    }
}

输出


代码语言:javascript
代码运行次数:0
复制
ParameterSetting 类加载了
3
ZWZ

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-11-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、static概念
  • 二、类变量
  • 三、类方法
  • 四、static代码块
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档