【java面向对象编程】第七弹----Object类、类变量与类方法
笔上得来终觉浅,绝知此事要躬行
🔥 个人主页:星云爱编程
🔥 所属专栏:javase
🌷追光的人,终会万丈光芒
🎉欢迎大家点赞👍评论📝收藏⭐文章
![]()
目录
一、Object类
1.1equals方法
1.1.1==号
1.1.2equals方法
1.1.3如何重写equals方法?
1.2hashCode方法
1.2.1基本介绍
1.2.2hashCode小结
1.3toString方法
1.3.1基本介绍
1.3.2重写toString
1.4finalize方法
二、类变量(静态变量)
2.1类变量引入
2.2基本介绍
2.3内存图
2.4基本语法
2.5注意事项及使用细节
三、类方法(静态方法)
3.1基本介绍
3.2使用场景
3.3注意事项和使用细节
结语
一、Object类
1.1equals方法
1.1.1==号
==是一个比较运算符:
①即可以判断基本类型,又可以判断引用类型
②如果判断基本类型,判断的是值是否相等
③如果判断引用类型,判断的是地址是否相同,即判定是不是同一个对象
1.1.2equals方法
①equals是Object类中的方法,只能判断引用类型;
②默认判断的是地址是否相等,子类中往往重写该方法,用于判断内容是否相同。
1.1.3如何重写equals方法?
应用实例: 判断两个Person对象的内容是否相等,如果两个Person对象的各个属性值都一样,则返回true,反之false。
方法:
(1)判断两个Person对象的内容是否相等
(2)如果两个Person对象的各个属性值都一样,则返回true,反之false
class Person{private String name;private int age;public Person(String name, int age) {this.name = name;this.age = age;}@Overridepublic boolean equals(Object obj) {if(obj==this){//判断是不是同一个对象return true;}if(!(obj instanceof Person)){//判断是不是同类return false;}return ((Person) obj).age == age && ((Person) obj).name.equals(name);//判断各属性}
}
1.2hashCode方法
1.2.1基本介绍
使用例子:
public class Test7 {public static void main(String[] args) {AA aa=new AA();AA aa2=new AA();AA aa3=aa;System.out.println("aa.hashCode()="+aa.hashCode());System.out.println("aa2.hashCode()="+aa2.hashCode());System.out.println("aa3.hashCode()="+aa3.hashCode());}
}
class AA{}
1.2.2hashCode小结
①提高具有哈希结构的容器效率
②两个引用,如果指向的是同一个对象,则哈希值相同。
③两个引用,如果指向的不是同一个对象,则哈希值不同。
④哈希值主要根据地址号来的,不能完全将哈希值等价于地址
1.3toString方法
1.3.1基本介绍
默认返回:全类名+@+哈希值的十六进制表示 。
子类往往重写toString方法,用于返回对象的属性信息。
1.3.2重写toString
(1)重写toString方法,打印对象或拼接对象时,都会自动调用该对象的toString形式。
例如:
public class Test6 {public static void main(String[] args) {Person person = new Person("李白",19);System.out.println(person);System.out.println(person.toString());}
}class Person{private String name;private int age;public Person(String name, int age) {this.name = name;this.age = age;}@Overridepublic String toString() {return "Person{" +"name='" + name + '\'' +", age=" + age +'}';}
}
(2)当直接输出一个对象时,toString 方法会被默认的调用。如上方代码中System.out.println(person); 就会默认调用 person.toString(),所以我们运行后看到两句结果输出是一样的。
1.4finalize方法
(1)当对象被回收时,系统自动调用该对象的finalize方法。子类可以重写该方法,做一些释放资源的操作
(2)什么时候被回收:当某个对象没有任何引用时,则jvm就认为这个对象是一个垃圾对象,就会使用垃圾回收机制来 销毁该对象,在销毁该对象前,会先调用finalize方法。
(3)垃圾回收机制的调用,是由系统来决定(即有自己的GC算法),也可以通过System.gc()主动触发垃圾回收机制。
二、类变量(静态变量)
2.1类变量引入
问题:有一群小羊在河边喝水,不断有新的小羊加入或退出,请问如何知道现在共有多少羊在喝水?编写程序解决。
传统方法:定义个变量count记录小羊个数,加入就coun++,退出就count--。
不过count独立于对象,无法实时记录小羊个数,并且不好访问counr;
这时就引入了类变量/静态变量。
2.2基本介绍
类变量也叫静态变量/静态属性,是该类的所有对象共享的变量,任何一个该类的对象去访问它时,取到的都是相同的值,同样任何一个该类的对象去修改它时,修改的也是同一个对象。
2.3内存图
特点:
(1)static变量是同一个类所有对象共享;
(2)static变量在类加载的时候就生成了
2.4基本语法
如何定义类变量:
①访问修饰符 static 数据类型 变量名;(推荐)
②static 访问修饰符 数据类型 变量名;
如何访问类变量:
①类名.类变量名(推荐)
②对象名.类变量名
注:静态变量的访问修饰符的访问权限和范围同普通属性;
2.5注意事项及使用细节
(1)什么时候需要使用类变量
当我们需要所有的对象都共享一个变量时,就可以考虑使用类变量。
(2)类变量和普通变量有什么区别?
类变量是该类中所有对象的共享的,普通变量是每个对象独享的。
(3)加上static修饰就成为类变量,否则为普通变量/普通属性。
(4)类变量可以通过 类名.类变量名 或者 对象名.类变量名来访问,但java设计者推荐我们使用 类名.类变量名访问
(5)实例变量/普通变量/普通属性不能通过 类名.类变量名方式访问。
(6)类变量在类加载时就创建了,也就是说,即使你没有创建对象,只要类加载了,就能访问类变量。
(7)类变量的生命周期是随类的加载开始,随着类的消亡而销毁。
三、类方法(静态方法)
3.1基本介绍
类方法也叫静态方法
语法:
(1)定义:
①访问修饰符 static 数据返回类型 方法名(){}(推荐)
②static 访问修饰符 数据返回类型 方法名(){}
(2)调用:
①类名.类方法名(推荐)
②对象名.类方法名
3.2使用场景
当方法中不涉及任何与对象相关的成员时,则可将方法设计成静态方法,提高开发效率。
3.3注意事项和使用细节
(1)类方法和普通方法都是随着类的加载而加载,将结构信息存储在方法区;
注:①类方法中无this的参数;
②普通方法中隐含着this的参数。
(2)类方法可以通过类名调用,也可以通过对象名调用。
(3)普通方法和对象有关,需要通过对象名调用。
(4)类方法中不允许使用和对象有关的关键字,比如this和super;普通方法中可以使用。
(5)类方法(静态方法)中,只能访问静态变量或静态方法。
(6)普通成员方法,即可访问普通变量/方法,又可以访问静态变量/方法。
小结:①静态方法只能访问静态的成员;
②非静态方法可以访问静态成员和非静态成员。
结语
感谢您的耐心阅读,希望这篇博客能够为您带来新的视角和启发。如果您觉得内容有价值,不妨动动手指,给个赞👍,让更多的朋友看到。同时,点击关注🔔,不错过我们的每一次精彩分享。若想随时回顾这些知识点,别忘了收藏⭐,让知识触手可及。您的支持是我们前进的动力,期待与您在下一次分享中相遇!
路漫漫其修远兮,吾将上下而求索。
相关文章:
【java面向对象编程】第七弹----Object类、类变量与类方法
笔上得来终觉浅,绝知此事要躬行 🔥 个人主页:星云爱编程 🔥 所属专栏:javase 🌷追光的人,终会万丈光芒 🎉欢迎大家点赞👍评论📝收藏⭐文章 目录 一、Object类 1.1equa…...
大模型微调---Prompt-tuning微调
目录 一、前言二、Prompt-tuning实战2.1、下载模型到本地2.2、加载模型与数据集2.3、处理数据2.4、Prompt-tuning微调2.5、训练参数配置2.6、开始训练 三、模型评估四、完整训练代码 一、前言 Prompt-tuning通过修改输入文本的提示(Prompt)来引导模型生…...
Connecting to Oracle 11g Database in Python
# encoding: utf-8 # 版权所有 2024 涂聚文有限公司 # 许可信息查看:言語成了邀功盡責的功臣,還需要行爲每日來值班嗎 # 描述:python -m pip install oracledb # python -m pip install cx_Oracle --upgrade # pip install cx_Oracle # Autho…...
16.2、网络安全风险评估技术与攻击
目录 网络安全风险评估技术方法与工具 网络安全风险评估技术方法与工具 资产信息收集,可以通过调查表的形式把我们各类的资产信息进行一个统计和收集,掌握被评估对象的重要资产分布,进而分析这些资产关联的业务面临的安全威胁以及存在的安全…...
Windows脚本清理C盘缓存
方法一:使用power文件.ps1的文件 脚本功能 清理临时文件夹: 当前用户的临时文件夹(%Temp%)。系统临时文件夹(C:\Windows\Temp)。 清理 Windows 更新缓存: 删除 Windows 更新下载缓存࿰…...
ChromeOS 131 版本更新
ChromeOS 131 版本更新 1. ChromeOS Flex 自动注册 在 ChromeOS 131 中,ChromeOS Flex 的自动注册功能现已允许大规模部署 ChromeOS Flex 设备。与 ChromeOS 零接触注册类似,自动注册将通过组织管理员创建的注册令牌嵌入到 ChromeOS Flex 镜像中。这将…...
PDF24 Creator免费版
PDF点击上方"蓝字"关注我们 01、前言 >>> 官网:https://tools.pdf24.org/zh/creator PDF24 Creator完全免费,没有任何限制。企业也能免费用。 不可以,PDF24 Creator只能装在Windows系统上。目前不支持Linux和Mac。 PDF24…...
网络安全之访问控制
简介 同一分布式环境下,同一用户可能具有多个应用服务器的访问授权,同一应用服务器也有多个授权访问的用户,同一用户在一次事务中可能需要访问多个授权访问的应用服务器,应用服务器可能还需要对访问用户进行身份鉴别。为了实现这…...
vtie项目中使用到了TailwindCSS,如何打包成一个单独的CSS文件(优化、压缩)
在不依赖 Vite 或其他构建工具的情况下,使用 TailwindCSS CLI 快速生成独立的 CSS 文件是一种简单高效的方法,适合需要纯样式文件的场景。 这个项目中,使用到了tailwindCss, 需要把里面的样式打包出来,给其他项目用。 使用命令生…...
前端登录注册页面springboot+vue2全开发!
需求目标: 有“登录界面”和“注册界面”以及“功能操作界面”: 我们打开程序会自动进入“登录界面”,如果密码输入正确则直接进入“功能操作界面”,在“登录界面”我们可以点击注册进入“注册页面”,注册好了可以再跳…...
批量提取zotero的论文构建知识库做问答的大模型(可选)——含转存PDF-分割统计PDF等
文章目录 提取zotero的PDF上传到AI平台保留文件名代码分成20个PDF视频讲解 提取zotero的PDF 右键查看目录 发现目录为 C:\Users\89735\Zotero\storage 写代码: 扫描路径‘C:\Users\89735\Zotero\storage’下面的所有PDF文件,全部复制一份汇总到"C:\Users\89735\Downl…...
3 JDK 常见的包和BIO,NIO,AIO
JDK常见的包 java.lang:系统基础类 java.io:文件操作相关类,比如文件操作 java.nio:为了完善io包中的功能,提高io性能而写的一个新包 java.net:网络相关的包 java.util:java辅助类,特别是集合类 java.sql:数据库操作类 IO流 按照流的流向分…...
解决Apache/2.4.39 (Win64) PHP/7.2.18 Server at localhost Port 80问题
配置一下apache里面的配置文件:httpd.conf 和 httpd.vhosts.conf httpd.conf httpd-vhosts.conf 重启服务 展示: 浏览器中中文乱码问题:...
带有 Elasticsearch 和 Langchain 的 Agentic RAG
作者:来自 Elastic Han Xiang Choong 讨论并实现 Elastic RAG 的代理流程,其中 LLM 选择调用 Elastic KB。 更多阅读:Elasticsearch:基于 Langchain 的 Elasticsearch Agent 对文档的搜索。 简介 代理是将 LLM 应用于实际用例的…...
【数据结构与算法】深度优先搜索:树与图的路径探寻之道
一、引言 在计算机科学领域,树与图的路径搜索是一个基础且重要的问题,而深度优先搜索算法(Depth First Search,简称 DFS)则是解决此类问题的经典算法之一。深度优先搜索算法通过从起始节点开始,沿着一条路径…...
vue3项目结合Echarts实现甘特图(可拖拽、选中等操作)
效果图: 图一:选中操作 图二:上下左右拖拽操作 本案例在echarts示例机场航班甘特图的基础上修改 封装ganttEcharts组件,测试数据 airport-schedule.jsonganttEcharts代码: 直接复制粘贴可测…...
【EXCEL 逻辑函数】AND、OR、XOR、NOT、IF、IFS、IFERROR、IFNA、SWITCH
目录 AND:当所有条件都为真时返回 TRUE,否则返回 FALSE OR:当任一条件为真时返回 TRUE,否则返回 FALSE XOR:当奇数个条件为真时返回 TRUE,否则返回 FALSE NOT :反转逻辑值 IF:根…...
单片机长耗时前后台任务优化
代码: void Task_10ms(void) {... }//改 void Task_2ms(void) {static uint8_t s_state 0switch(s_state){case 0:....s_state 1;break;case 1:....s_state 2;break;case 3:....s_state 1;break;default: //此段可以去除s_state 0;break; } } 参考链接 MCU长…...
java引入jedis并且关于开放redis端口问题
博主主页: 码农派大星. 数据结构专栏:Java数据结构 数据库专栏:数据库 JavaEE专栏:JavaEE 软件测试专栏:软件测试 关注博主带你了解更多知识 目录 1. 引入jedis 编辑 2. 关于java客户端开放redis端口问题 3. 连接redis服务器 redis服务器在官网公开了使用的协议: resp…...
测试电脑是否真实多核CPU
测试电脑是否真实多核CPU 在CPU的描述上现在多数看到的是多核心/多内核,看上去就像是多CPU的样子。但核心是有分真实核心和虚拟核心。如果是真实的多核心,多线程是能够并行。如果不是多核心,多线程就只能够并发。 这里就直接采用多线程的应用…...
Ubuntu 安装实时内核指南
在运行需要高精度和低延迟响应的机器人驱动程序时,安装一个具备实时内核(Real-Time Kernel)的 Ubuntu 系统是至关重要的。若缺乏实时系统的支持,高频率的控制指令可能会导致机器人运动轨迹不流畅,甚至产生抖动现象。以…...
LeetCode:1387. 将整数按权重排序(记忆化搜索 Java)
目录 1387. 将整数按权重排序 题目描述: 实现代码与解析: 记忆化搜索 原理思路: 1387. 将整数按权重排序 题目描述: 我们将整数 x 的 权重 定义为按照下述规则将 x 变成 1 所需要的步数: 如果 x 是偶数ÿ…...
某音最新滑块3.5.68(Web/App皆可支持)
某音滑块核心是 captchaBody 参数 难度较大 h5_sdk_version - 代表验证码的版本 如何代表通过验证了呢? 1.web端 fp参数 - verify_m4zafhzb_yARRD6RZ_YwNj_4gjp_AdsL_yxw0thiqv0ub 2.移动端 did参数 - 1997744780462444 当该接口返回如下数据即通过验证码 该设…...
FFmpeg 框架简介和文件解复用
文章目录 ffmpeg框架简介libavformat库libavcodec库libavdevice库 复用(muxers)和解复用(demuxers)容器格式FLVScript Tag Data结构(脚本类型、帧类型)Audio Tag Data结构(音频Tag)V…...
观察者模式(sigslot in C++)
大家,我是东风,今天抽点时间整理一下我很久前关注的一个不错的库,可以支持我们在使用标准C的时候使用信号槽机制进行观察者模式设计,sigslot 官网: http://sigslot.sourceforge.net/ 本文较为详尽探讨了一种观察者模…...
git企业开发的相关理论(二)
目录 git企业开发的相关理论(一) 八.修改文件 九.版本回退 十.撤销修改 情况一(还没有add) 情况二(add后还没有commit) 情况三(commit后还没有push) 十一.删除本地仓库中的文件 方法一 方法二 十二.理解分支 1.常见的分支工作流程 2.合并冲…...
力扣-图论-70【算法学习day.70】
前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向和记录学习过程(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非…...
jmeter中的prev对象
在jmeter中通过beanshell、JSR223的各种处理器编写脚本时,都会看到页面上有这样的说明 这些ctx、vars、props、OUT、sampler、prev等等都是可以直接在脚本中使用的对象,由jmeter抛出 今天主要讲一下prev的使用 SampleResult prev jmctx.getPreviousRe…...
机器学习中的密度聚类算法:深入解析与应用
在机器学习的广阔领域中,聚类算法作为一种无监督学习方法,扮演着至关重要的角色。其中,密度聚类算法以其独特的优势,在数据挖掘、图像分割、市场细分等多个领域得到了广泛应用。 一、密度聚类算法的基本原理 密度聚类算法是一种…...
简单分析一下 a,b,c=a+1,a+1,b+1 执行原理
在 Go 语言中,赋值表达式 a, b, c x, y, z 是同时进行的,但是其计算顺序是从左到右依次进行的。即在 a, b, c 被赋值之前,先计算 x, y, z 的值,并依次将它们赋值给 a, b, c。 例如:a, b, c a1, a1, b1,其…...
2025年前端面试热门题目——HTML|CSS|Javascript|TS知识
以下是对这些 HTML 面试问题的详细解答: 1. HTML 的 src 和 href 属性有什么区别? src (Source) 属性: 用于嵌入资源,例如图像、脚本或 iframe。加载资源时,当前页面的加载会暂停,直到资源加载完成。常用于 <img&g…...
将4G太阳能无线监控的视频接入电子监控大屏,要考虑哪些方面?
随着科技的飞速发展,4G太阳能无线监控系统以其独特的优势在远程监控领域脱颖而出。这种系统结合了太阳能供电的环保特性和4G无线传输的便捷性,为各种环境尤其是无电或电网不稳定的地区提供了一种高效、可靠的视频监控解决方案。将这些视频流接入大屏显示…...
【102. 二叉树的层序遍历 中等】
题目: 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:[[3],[9,20],[15,7]] 示例…...
文件包含tomato靶机通关
靶机地址:192.168.152.152 注:靶机打开后在 kali 中扫描一下就能得到 打开网站 第一步信息收集 将网址放到 dirb 中扫描一下 得到了三个目录 我们挨个访问一下 第一个是主目录 第二个是主页面 第三个报错 第二步 我们在主目录页面继续访问 我们进行…...
oracle dblink 的创建及使用
Oracle Database Link(DB Link)是Oracle提供的一种功能,允许你在一个数据库中直接访问另一个远程或本地数据库的对象(如表、视图、序列等)。DB Link的设置简化了跨数据库操作,使得数据的集成和同步变得更加…...
java开发入门学习五-流程控制
流程控制语句 if, if...else, if..else if..else 与前端相同 略 switch case 与前端不同的是case不能使用表达式,使用表达式会报错 class TestSwitch {public static void main(String[] args) {// switch 表达式只能是特定的数据类型…...
【蓝桥杯——物联网设计与开发】拓展模块3 - 温度传感器模块
一、温度传感器模块 (1)资源介绍 🔅原理图 蓝桥杯物联网竞赛实训平台提供了一个拓展接口 CN2,所有拓展模块均可直接安装在 Lora 终端上使用; 图1 拓展接口 温度传感器模块电路原理图如下所示: 图2 …...
Zookeeper 底层原理解析
一、引言 在分布式系统的浩瀚星空中,Zookeeper 宛如一颗最为闪耀的导航星,为众多分布式应用指引方向、保驾护航。无论是大名鼎鼎的 Hadoop、HBase,还是其他各类复杂的分布式架构,Zookeeper 都扮演着不可或缺的关键角色。它如同一…...
面试题整理9----谈谈对k8s的理解1
谈谈对k8s的理解 1. Kubernetes 概念 1.1 Kubernetes是什么 Kubernetes 是一个可移植、可扩展的开源平台,用于管理容器化的工作负载和服务,方便进行声明式配置和自动化。Kubernetes 拥有一个庞大且快速增长的生态系统,其服务、支持和工具的…...
PromptGIP:Unifying lmage Processing as Visual Prompting Question Answering
“Unifying Image Processing as Visual Prompting Question Answering” 文章提出了一种名为 PromptGIP 的通用模型,将图像处理任务统一为视觉提示问答范式,在多个图像处理任务上展现出良好性能,为通用图像处理提供了新的思路和方法。 confe…...
chart文件结构
在 Helm 中,Chart 是一个用于定义、安装和升级 Kubernetes 应用程序的包。Chart 文件结构遵循一定的目录和文件组织方式,以下是典型的 Helm Chart 文件结构: 1. Chart 文件结构示例 mychart/ ├── Chart.yaml # 描述 Chart 的基…...
SQL优化
SQL优化 插入数据 insert优化 批量插入 insert into tb_test 2values(1, Tom), (2, Cat), (3, jerry); 手动提交事务 start transaction; insert into test1 values(4, Tom), (5, Cat), (6, jerry); insert into test1 values(7, Tom), (8, Cat), (9, jerry); insert int…...
输出1-100之间的随机数,控制输出格式,每行10个(注释有详解)
C 随机数生成与格式化输出 在编程中,随机数的生成是一个常见的需求,尤其是在游戏开发、模拟实验和数据分析等领域。本文将通过一个简单的 C 程序来演示如何生成随机数并进行格式化输出。我们将逐步解析代码,并讨论其工作原理及应用场景。 代…...
【数字化】华为数字化转型架构蓝图-2
目录 1、客户联结的架构思路 1.1 ROADS体验设计 1.2 具体应用场景 1.3 统一的数据底座 1.4 案例与成效 2、一线作战平台的架构思路 2.1 核心要素 2.2 关键功能 2.3 实施路径 2.4 案例与成效 3、能力数字化的架构思路 3.1 能力数字化的核心目标 3.2 能力数字化的实…...
MyBatis是什么?为什么有全自动ORM框架还是MyBatis比较受欢迎?
MyBatis是什么? MyBatis是一个半自动的ORM持久层框架,内部封装了JDBC,mybatis是通过XML或注解的方式将需要执行的statement配置,支持定制化sql,存储过程以及高级映射。 解释 所谓的半自动ORM意思就是将JDBC的工作交…...
基础元器件的学习
1、二极管 1.1二极管的符号 ZD是稳压二极管 VD、V、D是普通二极管的符号。 1.2二极管的反向恢复时间 首先交流电为上正下负,然后下正上负。当二极管接到反向电压,二极管存在寄生电容,电压不能立刻突变,当输入频率变高时&#…...
GTID下复制问题和解决
环境介绍 数据库1主2从,mysql版本是v5.19 表结构 一、主库新增记录,从库提示主键冲突 模拟故障 1, master上关闭 sql_log_bin,删除id 103 后打开 2, 确认此时从库有id103,主库没有 3, master insert id103 主从异常…...
Linux 下的 GPT 和 MBR 分区表详解
文章目录 Linux 下的 GPT 和 MBR 分区表详解一、分区表的作用二、MBR(Master Boot Record)1. **特点**2. **优点**3. **缺点**4. **适用场景** 三、GPT(GUID Partition Table)1. **特点**2. **优点**3. **缺点**4. **适用场景** 四…...
mysql的事务控制和数据库的备份和恢复
事务控制语句 行锁和死锁 行锁 两个客户端同时对同一索引行进行操作 客户端1正常运行 客户端2想修改,被锁行 除非将事务提交才能继续运行 死锁 客户端1删除第5行 客户端2设置第1行为排他锁 客户端1删除行1被锁 客户端2更新行5被锁 如何避免死锁 mysql的备份和还…...
2014年IMO第4题
△ A B C \triangle ABC △ABC 中, B C BC BC 上有一点 P P P 满足 ∠ B A P = ∠ A C B \angle BAP=\angle ACB ∠BAP=∠ACB, 还有一点 Q Q Q 满足 ∠ A = Q A C = ∠ A B C \angle A=QAC=\angle ABC ∠A=QAC=∠ABC. 分别延长 A P AP AP, A Q AQ AQ 一倍至 M M M, N …...