Java基础——自学习使用(static关键字)

news2024/12/31 3:33:59

一、static关键字是什么?

static修饰的代码属于类,定义的变量存储在方法区的静态常量池当中

二、static可以修饰什么

1.static修饰变量

static修饰的变量叫做类变量,被所有该类产生的对象所共享,存储在方法区的静态常量池中

2.static修饰方法

static修饰是的方法属于静态方法,static修饰的方法才能调用static修饰的方法

3.static修饰代码块

static修饰的代码块在main方法运行之前运行,其目的是优化程序

三、java为什么设计static关键字

因为要方法类去使用自己的方法和变量

1.假设不使用static关键字

   则如果方法和变量属于非静态,只有在对象当中才会被分配内存空间,也就是说只能由对象调用。如下:

2.使用static关键字

    对于static修饰的变量或者方法,我们建议使用类去调用,虽然对象也可以做到,但是不推荐。

    而从上一张图可以看出如果没有static关键字,那么类是不可以调用自己的属性和方法的,只能用对象去调用

 四、static关键字修饰方法具体用法

1.static修饰的方法无法调用到非静态方法

2.在非静态方法当中可以调用到静态方法

为什么在非静态方法中可以调用静态方法?

        因为hhh被static修饰属于类变量,存储在方法区的静态常量池当中,被所有对象所共享。然而 fff()方法想要表达的时候就已经创建好了对象,那么静态方法一定是存在的。

五、 非运行状态输出代码结果

一套基本的流程:

示例代码1:

代码流程介绍:

程序执行先去找main()方法启动程序

1.首先先去扫描Test类,返现Test类有父类Base类,先去扫描父类,发现Base类没有父类

2.将Base.class加载进方法区,此时Base类当中的static代码块执行

3.将Test.class加载进方法区,此时Test类当在的static代码块执行

4.main方法入栈---->执行new Test();去创建Test类的对象

5.创建子类对象之前先创建父类对象,所以先执行Base()构造器,在执行Test()构造器! |

示例代码2:

输出:

代码流程介绍:

1.main方法在哪里我们就先去扫描那个类--->首先去扫描Test类,发现没有父类,也没有static修饰的代码,那么编译Test类,并且将main方法入栈

2.执行new Demo("----");在执行之前扫描Demo类,发现没有父类,所以编译Demo类,在编译的过程中static代码块按顺序优先执行

3.首先输出的是11

4.执行 public static Demo demo = new Demo("+++" );此时会涉及到调用Demo构造方法,所以输出===+++

5.输出22

6.编译完毕,回到main方法当中继续执行new Demo(" ---");现在可以创建对象了,也就是进行到了运行阶段

7.通过调佣构造器创建对象:===---

六、Java的值传递

首先静态常量池中有一个变量a,a的默认值为0,main执行,调用modify(a)方法入栈,注意方法的变量是局部变量,只在该方法中起作用。java进行值传递,此时执行a++,然后出栈,局部变量也就没用了,最后输出a的值,此时的a是静态常量池中的变量a,值为0。

 

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

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

相关文章

Java巅峰之路---进阶篇---面向对象(二)

Java巅峰之路---进阶篇---面向对象(二) 多态介绍多态调用成员的特点多态的优势、弊端以及解决方案综合练习 包和final包的介绍使用其他类的规则(导包)final关键字final的用途常量 权限修饰符和代码块权限修饰符的介绍四个权限修饰…

给跨行或同行转岗产品经理的几点建议

转岗不但要勇气还需要方法。现在,从其他职位转岗成为产品经理并不罕见。交互设计师,UI设计师,测试,开发,运营和用户研究都有大量转岗到产品经理的事例,甚至还有客户服务,销售转岗产品的。 一方面…

关于智能编码助手【通义灵码】,开发者们这么说...

自通义灵码发布以来,不停地有开发者朋友为我们送上通义灵码的测评反馈。 关于通义灵码,开发者这样说 墨问西东 CEO 池建强&墨问研发团队 “通义灵码有一个强大的功能就是企业知识库检索增强,我们只需要上传团队的代码规范,…

TS之 对象可能为“未定义”,不能将类型“ XXXX | undefined “分配给类型{ xxxx }

1、Vue3 结合 TS 获取 HTMLElement 时报“未定义” 简单粗暴的处理就是在后面加一个【 ! 】感叹号,告诉 TS 引擎此元素存在,有点类似于 as xxx 的意思! 2、使用声明的可选属性时,报“未定义” 使用 TS 我们经常会声明一些泛型&a…

AI学习记录 - 如何快速构造一个简单的token词汇表

创作不易,有用的话点个赞 先直接贴代码,我们再慢慢分析,代码来自openai的图像分类模型的一小段 def bytes_to_unicode():"""Returns list of utf-8 byte and a corresponding list of unicode strings.The reversible bpe c…

clip-path实现图片边角的裁剪

img {clip-path: polygon(0 7px,7px 0,calc(100% - 20px) 0,100% 20px,100% 100%,16px 100%,0 calc(100% - 16px));}每一个逗号隔开的就是路径坐标 左上角的两个点 0 7px ,7px 0 右上角 calc(100% - 20px) 0,100% 20px 相当于通过这些点练成的线的圈起来的部分就是剩…

SpringBoot集成AI服务

背景 在当今这个日新月异的时代,人工智能(AI)正以雷霆万钧之势席卷全球,从学术研究到商业应用,从日常生活到社会管理,无一不在经历着AI革命的洗礼。AI技术的飞速发展,不仅改变了我们的生活方式&…

数据库E-R 图

基础概念 E-R图 (Entity Relationship Diagram),也称实体关系图。提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。其中各个实体(数据模型中的对象)可以有属性。 图形含义 1、实体 实体就是现实中存在的东…

博客园-awescnb插件-geek皮肤优化--公众号卡片

简介 博客园-awescnb插件-geek皮肤暂不支持配置展示公众号二维码,此文章目的使用手动注入方式自定义实现公众号卡片效果 效果展示 公众号卡片 动态效果 鼠标移入前为公众号指引页 鼠标移入后显示公众号二维码 切换动画为动态反转 首页展示 实现 在博客日历元…

ES存量数据迁移优化措施

在将存量数据迁移到 Elasticsearch (ES) 时,可以采取多种优化措施,以提高迁移效率、减少对来源系统和目标系统的影响,并确保数据的完整性。以下是一些建议和优化措施: 1. 批量操作 使用 Bulk API:Elasticsearch 提供…

Linux虚拟机磁盘管理-新分区磁盘挂载

挂载mount 注意:挂载前一定要对磁盘进行文件系统创建,否则无法挂载磁盘 比如mkfs.ext4系统文件 磁盘挂载前和挂载后: linux系统重启后磁盘挂载没有了怎么办(不建议,哪怕输错一个字系统起不来,自己操作的时候出现过起不…

Flat Ads:全球金融应用的营销投放洞察

随着移动互联网的普及,金融应用在全球范围内迅速崛起。无论是移动银行、支付服务,还是理财工具,金融类应用已经成为现代生活中不可或缺的一部分。根据最新的行业报告,全球金融应用的下载量和用户活跃度在过去几年里持续增长,尤其是在新兴市场,用户对数字金融服务的需求不断攀升…

远程供水无障碍,管线车助力全面消防防护_鼎跃安全

夏季是各类自然灾害的高发季节,其中森林火灾尤为频繁。这一时期的气候特征是干旱少雨,伴随着高温和强风,使得森林火灾的发生频率大幅增加。由于夏季空气湿度低,植被含水量减少,一旦出现火源,火势极易蔓延。…

Win11搭建Angular开发环境

作为一名后端程序员,无论当前的工作是否需要,会一点点前端无疑对自己是有帮助的。今天就来介绍一下如何搭建Angular的开发环境。我也是摸着石头过河,所以很多东西也不熟悉,先按照Angular官网的介绍来配置吧。 这个是Angular最新版…

科技在日常生活中的革新

在科技日新月异的今天,‌我们的生活正经历着前所未有的变革。‌从智能家居到可穿戴设备,‌科技已经渗透到我们生活的每一个角落,‌深刻地影响着我们的生活方式和社会经济的发展。‌ 智能家居系统的出现,‌无疑是科技改变生活的典…

新手如何找到正确入行 Web3 路径?揭开职业启航新篇章

🏄 Web3 新晋开发者如何找到心仪的工作?除了加强自身技术本领,开发创新优质项目以外,拓展社会人脉、接触行业资源同样重要。与此同时,风云变幻的 Web3 行业环境中,我们又该如何寻找优质潜力的项目生态实现深…

【本地网页控制远程开发板】使用Python的Paramiko库通过SSH连接开发板进行通信

最近想要在本地用flask框架创建网页,在网页端与远程开发板进行交互,里面有一项需求就是当我点击网页端的按钮时,开发板会执行相应的脚本文件进行预警。以下演示如何使用Python的Paramiko库来通过SSH连接开发板实现上述功能。 主要的代码思路如…

SSL/TLS协议信息泄露漏洞修复

概述:CVE-2016-2183 是一个涉及 SSL/TLS 协议信息泄露的漏洞,也被称为 "SWEET32" 攻击。该漏洞利用了某些对称加密算法(如 3DES)的弱点,攻击者可以通过捕获和分析大量的加密流量,可能会恢复明文数…

MySQL 配置免密码登陆(mysql_config_editor Configuration)

当使用mysql, mysqldump, mysqladmin等客户端连接MySQL数据库服务器时,需要提供用户凭证信息。你可以在每次连接时都输入连接信息(用户名/密码/地址/端口等)或者将用户信息保存在my.cnf配置文件的[client]模块。 第一种方式每次都输入用户密…

JWT 基础知识

目录 什么是JWT JWT 的原理 JWT 的数据结构 Header Payload Signature 参考链接 什么是JWT Json Web Token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准(RFC 7519。 该token被设计为紧凑且安全的,特别适用于分布式站…