【Java开发指南 | 第七篇】静态变量生命周期、初始化时机及静态变量相关性质

读者可订阅专栏:Java开发指南 |【CSDN@秋说】

在这里插入图片描述

文章目录

    • 生命周期
    • 初始化时机
    • 常量和静态变量的区别
    • 静态变量相关性质
      • 静态变量的访问修饰符
      • 静态变量的线程安全性
      • 静态变量的命名规范

生命周期

生命周期(Lifecycle)是指一个对象从创建到销毁的整个过程。

静态变量的生命周期与程序的生命周期一样长,即它们在类加载时被创建,在整个程序运行期间都存在,直到程序结束才会被销毁。因此,静态变量可以用来存储整个程序都需要使用的数据,如配置信息、全局变量等。

初始化时机

静态变量在类加载时被初始化,其初始化顺序与定义顺序有关。

如果一个静态变量依赖于另一个静态变量,那么它必须在后面定义。

public class MyClass {public static int count1 = 0;public static int count2 = count1 + 1;// 其他成员变量和方法
}

举例:

public class ice {static int b=1;static int a = b+1;public static void printValues() {System.out.println("a = " + a);System.out.println("b = " + b);}public static void main(String[] args) {printValues();}
}

在这里插入图片描述

a依赖于b,但a在b前定义,导致编译错误:

在这里插入图片描述

常量和静态变量的区别

常量也是与类相关的,但它是用 final 关键字修饰的变量,一旦被赋值就不能再修改。与静态变量不同的是,常量在编译时就已经确定了它的值,而静态变量的值可以在运行时改变。

另外,常量通常用于存储一些固定的值,如数学常数、配置信息等,而静态变量通常用于存储可变的数据,如计数器、全局状态等。

静态变量相关性质

静态变量的访问修饰符

静态变量的访问修饰符可以是 public、protected、private 或者默认的访问修饰符(即不写访问修饰符)。

需要注意的是,静态变量的访问权限与实例变量不同,因为静态变量是与类相关的,不依赖于任何实例。

静态变量的线程安全性

Java 中的静态变量是属于类的,而不是对象的实例。因此,当多个线程同时访问一个包含静态变量的类时,需要考虑其线程安全性。

静态变量的命名规范

静态变量(也称为类变量)的命名规范通常遵循驼峰命名法,并且通常使用全大写字母,单词之间用下划线分隔,并且要用 static 关键字明确标识。

1、使用驼峰命名法: 静态变量的命名应该使用驼峰命名法,即首字母小写,后续每个单词的首字母大写。例如:myStaticVariable

2、全大写字母: 静态变量通常使用全大写字母,单词之间用下划线分隔。这被称为"大写蛇形命名法"(Upper Snake Case)。例如:MY_STATIC_VARIABLE

3、描述性: 变量名应该是有意义的,能够清晰地表达该变量的用途。避免使用单个字符或不具有明确含义的缩写。

4、避免使用缩写: 尽量避免使用缩写,以提高代码的可读性。如果使用缩写是必要的,确保广泛理解,并在注释中进行解释。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/819141.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

光电传感器的工作原理简介

光电传感器是一种利用光电效应将光信号转换为电信号的传感器。 工作原理 光照射:光电传感器通过光源(如LED或激光)照射在其表面。 光电转换:光线与传感器材料发生光电反应,产生电信号。这种转换过程涉及到光子与电子的…

Albumentations库:为自定义数据进行数据增强

点击下方卡片,关注“小白玩转Python”公众号 为什么在深度学习中使用增强? 深度学习和计算机视觉中的增强已经成为至关重要的几个原因。首先,它丰富了训练数据集,使模型能够从更多样化的示例中学习,这在标记数据有限时…

C++修炼之路之list--C++中的双向循环链表

目录 前言 一:正式之前先回顾数据结构中的双向循环链表 二:list的简介 三:STL中list常用接口函数的介绍及使用 1.构造函数接口 2.list迭代器 范围for 3.数据的修改接口函数 4.list容量操作函数 5.list的迭代器失效 6.演示代码和测…

【深度剖析】曾经让人无法理解的事件循环,前端学习路线

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7 深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞…

Mybatispuls-自动填充

一, 创建时间 . 修改时间! 这些个操作都是自动化完成的,我们不希望手动更新! 阿里巴巴开发手册:所有的数据库表:gmt_create .gmt_modified几乎所有的表都要配置上!而且需要自动化! 二,如何实现 1,编写实体类(字段属性上添加注解…

ubuntu 23.10.1 mysql 安装

注:请进入root用户模式下操作,若没有,输入命令前加上sudo 1、更新软件包列表 apt update2、安装最新版的Mysql服务器 apt install mysql-server -y如果不加-y 会在安装过程中,系统将提示你设置MySQL的root密码。确保密码足够强…

基于直方图的图像阈值计算和分割算法FPGA实现,包含tb测试文件和MATLAB辅助验证

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 VIVADO2019.2 matlab2022a 3.部分核心程序 timescale 1ns / 1ps // // Company: // Engineer: // // Design Name: // …

【御控物联】Java JSON结构转换(1):对象To对象——键值互换

文章目录 一、JSON是什么?二、JSON结构转换是什么?三、核心构件之转换映射四、案例之《JSON对象 To JSON对象》五、代码实现六、在线转换工具七、技术资料 一、JSON是什么? Json(JavaScript Object Notation)产生于20…

Leetcode876_链表的中间结点

1.leetcode原题链接:. - 力扣(LeetCode) 2.题目描述 给你单链表的头结点 head ,请你找出并返回链表的中间结点。 如果有两个中间结点,则返回第二个中间结点。 示例 1: 输入:head [1,2,3,4,5…

类与对象(中)

目录 赋值运算符重载 运算符重载 赋值运算符重载 前置和后置重载 日期类的实现(前置后置也在里面) const 成员 ​编辑 取地址及const取地址操作符重载 赋值运算符重载 运算符重载 C为了增强代码的可读性引入了运算符重载,运算符重载…

【python】python天气气候数据抓取分析可视化(源码+数据+可视化+报告)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…

Redis入门到通关之ZSet命令

文章目录 ⛄概述⛄常见命令有⛄RedisTemplate API❄️❄️ 向集合中插入元素,并设置分数❄️❄️向集合中插入多个元素,并设置分数❄️❄️按照排名先后(从小到大)打印指定区间内的元素, -1为打印全部❄️❄️获得指定元素的分数❄️❄️返回集合内的成员个数❄️❄…

汇编基础-----通过x64dbg了解什么是堆栈

汇编基础-----通过x64dbg了解什么是堆栈 什么是堆栈 在汇编语言中,堆栈(stack)是一种用于存储临时数据和执行函数调用的内存结构。堆栈是一种后进先出(Last-In-First-Out, LIFO)的数据结构,通常用于保存函…

【Docker系列】容器访问宿主机的Mysql

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

前端标记语言HTML

HTML(HyperText Markup Language)是一种用于创建网页的标准标记语言。它是构建和设计网页及应用的基础,通过定义各种元素和属性,HTML使得开发者能够组织和格式化文本、图像、链接等内容。 HTML的基本结构 文档类型声明&#xff0…

QT drawPixmap和drawImage处理图片模糊问题

drawPixmap和drawImage显示图片时,如果图片存在缩放时,会出现模糊现象,例如将一个100x100 的图片显示到30x30的区域,这个时候就会出现模糊。如下: 实际图片: 这个问题就是大图显示成小图造成的像素失真。 当…

【笔试】02

TCP TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议 它能够提供以下服务: 可靠传输 通过序列号、确认应答、重传机制等确保数据完整、准确地从发送端传输到接收端。 三次握手: 点对点全双工面向字节流…

1260. 二维网格迁移

1260. 二维网格迁移 原题链接:完成情况:解题思路:参考代码:错误经验吸取 原题链接: 1260. 二维网格迁移 https://leetcode.cn/problems/shift-2d-grid/description/ 完成情况: 解题思路: 这…

使用稳压管和三极管射极输出器电路驱动PMOS

当电源电压大于PMOS 管的最大栅源电源时,不能直接把栅极拉到地,需要一点特殊的电路来限制栅极驱动电压。有的地方是用电阻分压器做的,比如这种: NPN 三极管导通时,MOS 管栅极电压是两个电阻中间的电压。这种设计最大的…

106.从中序与后序遍历构造二叉树

给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。 思路: 中序遍历数组中,找到一个根节点,那么其前为其左子树&a…