Java 面向对象进阶 03 static 注意事项、重新认识main方法(黑马)

案例代码如下:

非静态的方法虚拟机会自带一个关键字,如下:

但是不能手动出来,它的类型就是当前类;

通过输出this,得到当前s1,s2 的地址;

所以在输出时会有隐藏的this,所以this所指向的s1 的名字,年龄,和老师年龄。

由于方法里面没有与成员变量重名,所以可以不写this;

如果添加show2 方法,那么在程序运行的时候,this.show2(); 就代表,s1调用show2,和s2 调用show2;

但是在静态方法中添加this关键字会报错:

静态方法中,只能访问静态;静态方法中没有this关键字

Java的非静态方法会自带this关键字,而静态方法没有this关键字是因为它们用于不同的场景。

非静态方法是对象级别的方法,它是通过具体的对象来调用的。由于非静态方法是针对具体对象的行为,因此在方法内部可以使用this关键字来引用当前调用该方法的对象。this关键字代表当前对象的引用,可以用来访问该对象的成员变量和其他方法。

静态方法是类级别的方法,它是通过类名直接调用的。静态方法不依赖于具体的对象,因此在方法内部无法使用this关键字来引用对象,因为在静态方法中无法确定具体是哪个对象在调用该方法。静态方法只能访问静态成员变量和其他静态方法。

非静态方法是针对具体对象的行为,使用this关键字来引用当前对象;而静态方法是类级别的行为,无法使用this关键字来引用对象。

静态方法可以调用静态变量和静态方法。静态变量和静态方法都属于类级别的,可以在静态方法中直接调用,不需要创建类的实例。

静态方法还可以调用非静态方法,但需要通过创建类的实例来调用非静态方法。

不能直接调用,因为非静态方法中就自带this方法,所以调用不了

静态方法不能调用非静态变量,因为非静态变量可以对应很多对象,所以静态方法调用的时候不明确调用的哪个变量,所以不能调用非静态变量;

非静态方法可以访问所有:

非静态方法可以访问所有是指在一个非静态方法中,可以直接访问该类中的所有成员变量和其他非静态方法,而无需通过对象或类名进行访问。这是因为非静态方法是通过对象调用的,每个对象都有自己的一份成员变量和方法,所以可以直接访问。

静态方法则不具备这个特性,它不能直接访问非静态的成员变量和方法,需要通过对象或类名进行调用。

内存分析:

内存分析图1、

  实例变量和对象有关;

在Java中,对象是具体存在的实体,它是根据类定义创建出来的。对象可以具有状态(即实例变量)和行为(即方法)。

实例变量是对象的状态信息,它代表对象的特征或属性。每个对象都有自己的一组实例变量,它们可以具有不同的值。实例变量可以是基本数据类型(如int、float)或引用类型(如String、数组等)。

实例变量的值在对象被创建时分配,并可以在对象的整个生命周期内被访问和修改。每个对象可以独立地拥有自己的实例变量,它们不同对象之间的实例变量是相互独立的。

对象和实例变量之间的关系是:对象是由类创建出来的具体实体,而实例变量是对象的一部分,用于存储对象的状态信息。每个对象都有自己独立的实例变量,不同对象之间的实例变量是相互独立的。

这个时候还没有创建对象,所以不能调用对象里面的实例变量;

内存分析图2、

静态方法如果调用了非静态的成员变量方法,那么这时候并不清楚对象是哪个,所以会报错:

内存分析图3、

重新认识main方法:

数组长度默认为0

对该数组添加元素步骤:

1、

2、

运行结果:

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

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

相关文章

Vue3+Echarts实现实时曲线及开始与暂停功能

最近做电力项目中,遇到这样一个需求: 用户选择设备的属性后(多选情况,可以选择不同设备的属性),然后请求各自的数据,使用折线图的形式实现趋势展示,同时要支持暂停和开始功能&#x…

Redis -- 单线程模型

失败是成功之母 ——法国作家巴尔扎克 目录 单线程模型 Redis为什么这么快 单线程模型 redis只使用一个线程,处理所有的命令请求,不是说redis服务器进场内部真的就只有一个线程,其实也有多个线程,那就是处理网络和io的线程。 R…

MBR分区转换为GPT分区

这里有一个ecs-test用于测试MBR转换为GPT 新增一块数据盘 将数据盘以MBR分区格式分区 将整块磁盘以mbr形式分区 格式化,挂载等 上传文件,方便测试(以便后续转换格式类型,防止文件丢失) 取消挂载 将MBR转换为GPT 需先下载gdisk yum instal…

联盟营销最有效的方法是什么?

联盟营销就是“Affiliate marketing,是一种有效的市场推广策略,通过与其他相关企业或个人建立合作关系,共同推广产品或服务。每带来一次有效交易(如用户购买、注册等),推广者就能获得佣金,将流量…

前端常见的栈溢出报错

什么是栈溢出? 在前端开发中,栈溢出是指JavaScript引擎执行代码时,调用栈(call stack)变得太大,超过了浏览器或JavaScript引擎所分配的栈空间,从而导致栈溢出错误。调用栈是一种数据结构&#x…

element plus dialog滚动条置顶问题

直接上解决方案了 <el-dialog v-model"DialogVisible" :destroy-on-close"true"><el-table :data"" :show-header"false" max-height"350"></el-table> </el-dialog>注意&#xff1a;主要是:destr…

WINHTTP忽略HTTPS证书

文章目录 WINHTTP忽略HTTPS证书WINHTTP使用TLS协议版本 WINHTTP忽略HTTPS证书 发布了Wininet库忽略Https证书文章之后有朋友问我如果使用WINHTTP发起忽略证书的方法, 下列粘出代码可以看到跟Wininet是一样的不在过多赘述&#xff0c;不懂的朋友可以看我发的链接说明。C发起Htt…

Spring-集成Web

一、引子 前面我们在Spring集成Junit中为读者引出了Spring善于集成其它框架的优势&#xff0c;而Spring项目不可能仅限于小范围的某个方法的测试&#xff0c;终究会落脚于Web项目上。于是&#xff0c;我们就从这里正式进入Spring集成Web的话题。由于笔者会从原生的Java Web开发…

@Test Annotation属性- dependsOnMethods属性

目录 语法 如果test1&#xff08;&#xff09;失败了怎么办&#xff1f;test2&#xff08;&#xff09;测试会发生什么&#xff0c;因为它依赖于test1&#xff1f; 如果我们在test1&#xff08;&#xff09;方法上不使用Test注释&#xff0c;但在test 2&#xff08;&#xf…

【产业实践】使用YOLO V5 训练自有数据集,并且在C# Winform上通过onnx模块进行预测全流程打通

使用YOLO V5 训练自有数据集,并且在C# Winform上通过onnx模块进行预测全流程打通 效果图 背景介绍 当谈到目标检测算法时,YOLO(You Only Look Once)系列算法是一个备受关注的领域。YOLO通过将目标检测任务转化为一个回归问题,实现了快速且准确的目标检测。以下是YOLO的基…

每日打卡 力扣2808 使循环数组所有元素相等的最少秒数

2808. 使循环数组所有元素相等的最少秒数 题目描述&#xff1a; 给你一个下标从 0 开始长度为 n 的数组 nums 。 每一秒&#xff0c;你可以对数组执行以下操作&#xff1a; 对于范围在 [0, n - 1] 内的每一个下标 i &#xff0c;将 nums[i] 替换成 nums[i] &#xff0c;num…

【centos系统ddos攻击】

centos系统ddos攻击&#xff0c;使用hping3和ab测试攻击模拟攻击 hping3工具 hping3 是一个命令行下使用的 TCP/IP 数据包组装/分析工具&#xff0c;通常 web 服务会用来做压力测试使 用&#xff0c;也可以进行 DOS 攻击的实验。同样 hping3 每次只能扫描一个目标。 安装hpin…

B2119 删除单词后缀

网址如下&#xff1a; B2119 删除单词后缀 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 算是找了个操作字符串的题来做 可以说C的string类确实是好用&#xff0c;但是还是不够熟悉&#xff0c;我不清楚怎么删去string类的后面几个字符 用C的常规做法是在相应地点设\0&…

2401cmake,学习cmake4

步10:增加生成式 生成器式是在构建系统生成时,执行的用来生成特定配置专有信息的工具. 可在诸如LINK_LIBRARIES,INCLUDE_DIRECTORIES,COMPILE_DEFINITIONS等许多目标属性内容中使用生成式. 也可在如target_link_libraries(),target_include_directories(),target_compile_de…

校园二手交易小程序|基于微信小程序的闲置物品交易平台设计与实现(源码+数据库+文档)

校园二手交易小程序目录 目录 基于微信小程序的闲置物品交易平台设计与实现 一、前言 二、系统功能设计 三、系统实现 1、用户信息管理 2、商品信息管理 3、公告信息管理 4、论坛信息管理 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕…

Vue之前端Broadcast Channel API的简单使用

前端Broadcast Channel API的简单使用 Broadcast Channel API 是一个用于在不同窗口或标签页之间进行通信的 API。它允许一个页面向另一个页面发送消息&#xff0c;这些页面可以在同一浏览器实例中打开&#xff0c;或者在不同的浏览器实例中打开。 以下是 Broadcast Channel …

R语言基础学习-02 (此语言用途小众 用于数学 生物领域 基因分析)

变量 R 语言的有效的变量名称由字母&#xff0c;数字以及点号 . 或下划线 _ 组成。 变量名称以字母或点开头。 变量名是否正确原因var_name2.正确字符开头&#xff0c;并由字母、数字、下划线和点号组成var_name%错误% 是非法字符2var_name错误不能数字开头 .var_name, var.…

蓝桥杯备战——11.NE555测频

1.分析原理图 我们可以看到&#xff0c;上图就是一个NE555构建的方波发生电路&#xff0c;输出方波频率1.44/2(R8Rb3)C,如果有不懂NE555内部结构&#xff0c;工作原理的&#xff0c;可以到B站学习。实在不懂仿真也行&#xff0c;比如我下面就是仿真结果&#xff1a; 然后就是下…

与数组相关经典面试题

&#x1d649;&#x1d65e;&#x1d658;&#x1d65a;!!&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦ &#x1f44f;&#x1f3fb;‧✧̣̥̇:Solitary-walk ⸝⋆ ━━━┓ - 个性标签 - &#xff1a;来于“云”的“羽球人”。…

su导入3d模型为什么不圆滑---模大狮模型网

在将SU(SketchUp)模型导入到其他3D软件中时&#xff0c;可能会遇到模型没有圆滑的情况。这可能是由于以下原因&#xff1a; 模型导出设置不正确&#xff1a;在导出SU模型时&#xff0c;需要确保正确选择导出设置。例如&#xff0c;在导出为.obj格式时&#xff0c;需要选择正确的…