static关键字

在这里插入图片描述

作者简介: zoro-1,目前大一,正在学习Java,数据结构等
作者主页: zoro-1的主页
欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖

被static修饰意味什么

在Java中,被static修饰的成员,称之为静态成员,也可以称为类成员,其不属于某个具体的对
象,是所有对象所共享的。

static修饰成员变量

  1. 不属于某个具体的对象,是类的属性,所有对象共享的,不存储在某个对象的空间中

  2. 既可以通过对象访问,也可以通过类名访问,但一般更推荐使用类名访问,本类中直接调用

  3. 类变量存储在方法区当中

  4. 生命周期伴随类的一生(即:随类的加载而创建,随类的卸载而销毁)

static修饰成员方法

  1. 不属于某个具体的对象,是类方法

  2. 可以通过对象调用,也可以通过类名.静态方法名(…)方式调用,更推荐使用后者

  3. 不能在静态方法中访问任何非静态成员变量和非静态方法(没有this参数,除非在方法中实例化对象,才被调用)

代码块调用顺序

Java代码块的执行顺序如下:

  1. 静态代码块:当类被加载时,静态代码块会被执行,且只会被执行一次。

  2. 实例代码块:每次创建类的实例时,实例代码块都会被执行,并且在构造方法之前执行。

  3. 构造方法:在实例代码块执行之后,构造方法会被执行。

  4. 普通代码块:在方法中定义的普通代码块会在方法调用时被执行。

代码例子

class Parent {static { // 父类静态代码块System.out.println("父类静态代码块");}{       // 父类初始化块System.out.println("父类初始化块");}public Parent() { // 父类构造方法System.out.println("父类构造方法");}
}class Child extends Parent {static { // 子类静态代码块System.out.println("子类静态代码块");}{       // 子类初始化块System.out.println("子类初始化块");}public Child() { // 子类构造方法System.out.println("子类构造方法");}
}public class Test {public static void main(String[] args) {Child child = new Child();}
}

输出结果为:

父类静态代码块
子类静态代码块
父类初始化块
父类构造方法
子类初始化块
子类构造方法

从输出结果可以看出,首先执行父类的静态代码块(因为父类在子类之前加载),然后执行子类的静态代码块,接着执行父类的初始化块和构造方法,最后执行子类的初始化块和构造方法。

小思考

为什么普通成员方法可以直接访问非静态变量,而静态方法不能直接访问非静态变量?

  1. 静态方法和静态变量在类初始化时已经分配内存,已经存在,因此随时可以调用。
  2. 非静态方法和非静态变量在类初始化时不存在,只有类实例化成对象时才分配内存而存在

今天的分享到这里就结束了,感谢大家支持,创作不易,希望大家能给博主个三连,在这里插入图片描述

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

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

相关文章

STM32 CubeMX USB_(HID 鼠标和键盘)

STM32 CubeMX STM32 CubeMX USB_HID(HID 鼠标和键盘) STM32 CubeMX前言 《鼠标》一、STM32 CubeMX 设置USB时钟设置USB使能UBS功能选择 二、代码部分添加代码鼠标发送给PC的数据解析实验效果 《键盘》STM32 CubeMX 设置(同上)代码…

239. 滑动窗口最大值

1 问题描述 2 思路 为了每次元素进出的时候,我们都可以得到该窗口内的最大元素,我们需要自己定义一种队列里面包含方法可以获取最大值怎么才能获取队列里的最大值呢?在队列里排序也可以,这里我们采用单调队列:该队列…

innovus gui界面文字大小和对话框大小调整

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?拾陆楼知识星球入口 uiApp::setfont -dialog

【Docker】Docker容器化技术基础

Docker容器化技术 Docker(软件跨环境迁移)Docker概念:安装Dockerdocker架构配置Docker镜像加速器 一、Docker命令服务daemon相关的命令镜像相关命令Docker容器相关命令 二、Docker容器的数据卷数据卷概念配置数据卷配置数据卷容器 三、Docker…

Windows系统下添加了新环境变量无需重启电脑激活新环境变量的方法

首先WinR,再输入cmd,进入终端,输入以下命令: set Pathc输入完以上命令回车,如下: 关闭终端后再次打开输入cl,如果输出以下类似信息说明新的环境变量已经添加成功,如下: …

flask-script

# django中,有命令 python manage.py runserver python manage.py makemigrations ...自定制命令(django如何自定制命令)... -python manage.py init_db excel文件路径 指定表名 # flask启动项目,像djag…

了解HTTP代理日志:解读请求流量和响应信息

嗨,爬虫程序员们!你们是否在了解爬虫发送的请求流量和接收的响应信息上有过困扰?今天,我们一起来了解一下。 首先,我们需要理解HTTP代理日志的基本结构和内容。HTTP代理日志是对爬虫发送的请求和接收的响应进行记录的文…

C语言假期作业 DAY 15

一、选择题 1、有如下代码,则 *(p[0]1) 所代表的数组元素是( ) int a[3][2] {1, 2, 3, 4, 5, 6}, *p[3]; p[0] a[1]; A: a[0][1] B: a[1][0] C: a[1][1] D: a[1][2] 答案解析 正确答案: C p 是一个指针数组, p[0] a…

SSM项目-博客系统

在线体验项目:登陆页面 项目连接:huhublog_ssm: 个人博客系统 技术栈:SpringBoot、SpringMVC、Mybatis、Redis、JQuery、Ajax、Json (gitee.com) 1.项目技术点分析 SpringBoot、SpringWeb(SpringMVC)、MyBatis、MySQL(8.x)、Redis(存储验…

Java文件操作(遍历目录中的文件,找到并删除有指定关键字的文件)

对于通过java对文件继续读取和写入的操作推荐看读取文件和写入文件操作 题目 扫描指定目录中的文件,并找到名称中包含指定字符的所有普通文件(不包括目录),并后续询问用户是否要删除该文件 题目分析 实际上题目就要求我们对一个…

windows10访问Ubuntu 18.04共享目录(已验证)

1、Ubuntu 18.04安装samba sudo apt-get install samba 2、创建一个共享目录文件夹,并设置777权限 ubt1804是用户名 mkdir/home/ubt1804/lsk sudo chmod 777 /home/ubt1804/lsk 3、添加用户及密码 sudo smbpasswd -a [用户名] 比如用户名为test sudo sm…

HTTPS文件传输

目录 0.https概述1.单钥匙锁2.双钥匙锁 - 防篡改3.双钥匙锁 - 防泄漏4.单双钥匙锁相互配合 0.https概述 HTTPS其实就是HTTP协议加上TLS/SSL,SSL是个加密套件,负责对HTTP的数据进行加密,TLS是SSL的升级版,现在提到HTTPS&#xff0…

外键字段的增删改查、多表查询(子查询和连表查询、正反向、聚合查询、 分组查询、 F与Q查询)、django中如何开启事务

一、 外键字段的增删改查 1.多对多的外键增删改查图书和作者是多对多,借助于第三张表实现的,如果想绑定图书和作者的关系,本质上就是在操作第三方表2.如何操作第三张表问题:让你给图书添加一个作者,他俩的关系可是多对…

怎么才能提升自己工作能力?

表现最好的员工通常是获得加薪和工作晋升的人。您可以采取某些措施来提高您的工作绩效,并帮助您的主管将您视为他们最好的员工之一。在本文中,我们列出了 12 个技巧,可以立即提高您的工作绩效。 什么是工作绩效? 工作绩效是指您…

kubernetes 集群利用 efk 收集容器日志

文章目录 [toc]前情提要制作 centos 基础镜像准备 efk 二进制文件部署 efk 组件配置 namespace配置 gfs 的 endpoints配置 pv 和 pvc部署 elasticsearchefk-cmefk-svcefk-sts 部署 filebeatfilebeat-cmfilebeat-ds 部署 kibanakibana-cmkibana-svckibana-dp使用 nodeport 访问 …

CAPL - XML和TestModule结合实现测试项可选

目录 目的:是否想实现如下面的功能呢? 一、.can和.cin文件中函数开发

Java Selenium WebDriver 网页填报

一、windows环境安装配置 1.安装chrome浏览器 在“关于chrome”界面,查看浏览器版本号 2.下载chromeDriver 在https://registry.npmmirror.com/binary.html?pathchromedriver/下载对应版本的驱动(如果浏览器版本过新,建议下载最接近的版…

STM32基础入门学习笔记:内部高级功能应用

文章目录: 一:低功耗模式 1.睡眠模式测试程序 NVIC.h NVIC.c key.h key.c main.c 2.停机模式测试程序 main.c 3.待机模式测试程序 main.c 二:看门狗 1.独立看门狗测试程序 iwdg.h iwdg.c main.c 2.窗口看门狗测试程序 wwdg…

Linux网络服务之部署yum仓库

yum ? yum ! 一、YUM概述1.1 yum简介1.2 yum工作原理 二、yum 配置文件2.1 yum主配置文件2.2 yum仓库设置文件2.2.1 配置文件主要格式2.2.2 软件仓库的提供方式2.2.3 日志文件 三、yum命令详解3.1 安装和升级3.2 查询3.2.1 显示可用的安装包 ----- yum list3.2.2 显…

Python程序设计基础:函数(一)

文章目录 一、函数的基本概念二、函数的定义和使用1、函数的定义与调用2、函数的参数3、返回多个值 一、函数的基本概念 在使用Python实现某些复杂的功能的时候,容易遇到一些重复率较高的代码,为了代码能够重复使用并提升代码的整洁度,函数这…