我的编程空间,编程开发者的网络收藏夹
学习永远不晚

详解Java的static关键字

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

详解Java的static关键字

文章目录

  • 🎄静态方法
  • 🌺静态方法和非静态方法对比
    • 🛸静态方法实例
    • 🛸非静态方法实例
  • 🌹static关键字
    • ⭐static变量
    • ⭐static代码块

在这里插入图片描述

🎄静态方法

  • 不依赖于对象实例:静态方法不需要依赖于任何对象实例,因为它们与具体的对象实例无关联。这意味着在没有创建对象实例的情况下,就可以直接通过类名访问或调用静态方法。
  • 可以访问静态成员:静态方法可以访问类的静态成员(静态字段和静态方法),但不能访问非静态成员(实例字段和实例方法)。这是因为静态方法在被调用时,可能还没有任何对象实例被创建,因此无法访问依赖于对象实例的非静态成员。
  • 类级别的操作:静态方法通常用于表示类级别的操作,例如工具方法、单例模式、工厂方法等。这些操作不依赖于具体的对象实例,而是与整个类相关联。
  • 语法结构:静态方法使用static关键字修饰,并且位于类中的任意位置。它可以通过类名直接访问或调用,而不需要创建对象实例。

🌺静态方法和非静态方法对比

🛸静态方法实例

public class MyClass {    private static int count = 0;    public static void increment() {        count++;    }    public static int getCount() {        return count;    }    // 其他成员和方法...}

在上面的示例中,我们定义了一个静态方法increment()和一个静态字段count,用于表示某个类的实例数量。静态方法increment()每次被调用时,会将count加1;静态方法getCount()用于获取当前count的值。注意,这两个方法都是静态方法,可以通过类名直接访问或调用,例如MyClass.increment()和MyClass.getCount()

总之,静态方法不依赖于任何对象实例就能进行访问,因为它们与具体的对象实例无关联,而是与整个类相关联。静态方法在内存中只有一份副本,并且在类加载时初始化,因此可以直接通过类名访问或调用。

🛸非静态方法实例

public class MyClass {    private int count = 0;    public void increment() {        count++;    }    public int getCount() {        return count;    }    // 其他成员和方法...}

在上面的示例中,我们定义了一个非静态方法increment()和一个非静态字段count,用于表示某个对象实例的数量。非静态方法increment()每次被调用时,会将当前对象实例的count加1;非静态方法getCount()用于获取当前对象实例的count值。注意,这两个方法都是非静态方法,必须通过对象实例来访问或调用,例如obj.increment()和this.getCount()

总之,非静态方法必须要依赖于对象实例才能进行访问,因为它们与具体的对象实例相关联,并且需要访问依赖于对象实例的实例成员。

🌹static关键字

static方法一般称为静态方法,由于静态方法不依赖于任何对象就能进行访问,因此对于静态方法来说,是没有this关键字的(因为静态方法不依赖于任何对象,既然没有对象,就谈不上this了

为什么静态方法不依赖于任何对象就能进行访问

静态方法不依赖于任何对象就能进行访问,是因为它们与具体的对象实例无关联,而是与整个类相关联(请看上面讲述静态方法实例的代码)。静态方法在内存中只有一份副本,并且在类加载时初始化,因此可以直接通过类名访问或调用。


虽然静态方法中不能访问非静态成员方法和非静态成员变量,但是在非静态成员方法中是可以访问静态成员变量和方法的
我们最常用的static方法就是main方法,因为程序在执行main方法的时候没有创建任何对象,因此只有通过类名来访问

⭐static变量

static变量又称为静态变量,静态变量和非静态变量的全部是
静态变量:被所有的对象所共享,在内存中只有一个副本
非静态变量:是对象所拥有的,在创建对象的过程在被初始化,存在多个副本,各个对象拥有的副本之间互不影响
使用static修饰成员方法最大的作用,就是可以通过类名.方法名的方式调用方法,避免了new出对象的繁琐和资源消耗

⭐static代码块

静态代码块(static code block)是使用static关键字定义的一种特殊代码块,在类加载时执行,并且仅执行一次,通过静态代码块,我们可以在类加载时完成一些必要的初始化工作,确保类的静态成员在后续的使用中具备正确的状态

静态代码块的主要特点如下:

  • 执行时机:静态代码块在类加载过程中被执行,而不是在创建对象实例时执行。它会在类首次被加载时自动执行,并且只执行一次。一般情况下,静态代码块在类加载时的准备阶段执行。
  • 作用范围:静态代码块属于整个类,与具体的对象实例无关。它可以用于初始化静态成员(静态字段)或执行其他一次性的静态操作。
  • 访问权限:静态代码块可以访问类中的静态成员(静态字段、静态方法等),但无法直接访问非静态成员(实例字段、实例方法等),因为非静态成员需要依赖具体的对象实例才能访问。
  • 语法结构:静态代码块使用static关键字修饰,并且位于类中的任意位置,通常紧跟在静态字段的定义之后。它使用一对大括号{}包裹起来,内部可以包含任意的Java代码。

以下是一个静态代码块的示例:

public class MyClass {    static {        // 静态代码块中的代码        System.out.println("Static block executed.");    }    // 其他成员和方法...}

在上面的示例中,当MyClass类被加载时,静态代码块会被执行,并输出"Static block executed."。注意,静态代码块只会执行一次,即使创建多个MyClass对象实例。

静态代码块常用于初始化静态字段或执行其他一次性的静态操作,例如加载配置文件、初始化数据库连接等。它在类加载时自动执行,确保了静态成员的初始化在使用之前完成。

总之,静态代码块是使用static关键字定义的一种特殊代码块,在类加载时执行,并且仅执行一次。它可以用于初始化静态成员或执行其他一次性的静态操作,通常位于类中的任意位置,紧跟在静态字段的定义之后。

希望本文能够为您带来新的思考和启发,也期待与您共同分享更多关于(文章主题)的想法。让我们携手并肩,共同创造美好的未来!

在这里插入图片描述

来源地址:https://blog.csdn.net/m0_72853403/article/details/134550879

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

详解Java的static关键字

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

详解Java的static关键字

文章目录 🎄静态方法🌺静态方法和非静态方法对比🛸静态方法实例🛸非静态方法实例 🌹static关键字⭐static变量⭐static代码块
详解Java的static关键字
2023-12-22

详解Java中static关键字的使用和原理

static可以用来修饰的成员变量和成员方法,被修饰的成员是属于类的,而不是单单是属于某个对象的。本文就来详细说说他的使用和原理,需要的可以参考一下
2022-11-13

Java中的static关键字怎么用

本文小编为大家详细介绍“Java中的static关键字怎么用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java中的static关键字怎么用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一.static关键字
2023-06-29

如何实现Java中的static关键字解析

这期内容当中小编将会给大家带来有关如何实现Java中的static关键字解析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,
2023-06-03

浅析对Java关键字final和static的理解

一、final 根据程序上下文环境,Java关键字final有“这是无法改变的”或者“终态的”含义,它可以修饰非抽象类、非抽象类成员方法和变量。你可能出于两种理解而需要阻止改变:设计或效率。 final类不能被继承,
2023-05-31

深入理解static关键字

在开始讲static之前,我想让各位看一段有意思的代码:public class Test { static{ System.out.println("test static 1"); } static{
深入理解static关键字
2016-12-23

深入浅析Java中的 static关键字

本篇文章为大家展示了深入浅析Java中的 static关键字,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、 static代表着什么 在Java中并不存在全局变量的概念,但是我们可以通过
2023-05-31

Java中static关键字的使用方式

这篇文章主要介绍“Java中static关键字的使用方式”,在日常操作中,相信很多人在Java中static关键字的使用方式问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java中static关键字的使用方式
2023-06-20

Java中static和volatile关键字的区别

Java中static和volatile关键字的区别有:1. 作用范围不同;2. 变量类型不同;3. 内存模型不同;4. 线程安全不同;5. 性能不同。作用不同指的是,static关键字用于声明类级别的变量或方法,所有类的实例共享同一个static变量的副本。volatile关键字用于确保一个变量在多线程环境中的可见性,使所有线程都能看到最新的变量值。
Java中static和volatile关键字的区别
2023-10-29

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录