Java的重载和主要内存区

JAVA的重载

​ 在Java中,重载(Overloading)是指在同一个类中可以定义多个同名的方法,但它们的参数列表必须不同。重载可以通过改变参数的数量、类型或者顺序来实现。重载提高了代码的可读性和灵活性。

JAVA重载要满足的条件:

  • 在同一个类下:java的重载必须在同一个类之下
  • 方法名相同:重载的方法必须具有相同的名称。
  • 参数不同:重载的方法必须具有不同的参数列表(参数类型、数量或顺序)。
  • 返回类型可以相同或不同:重载方法的返回类型可以相同,也可以不同,但仅凭返回类型不能区分重载,也就是返回值是无关因素

例题:

​ 需求:使用方法重载的思想,设计比较两个整数是否相等的方法

​ 要求:兼容全整数类型(byte,short,int,long

public class 重载 {public static boolean func(int a, int b) {if(a == b) {return true;}else {return false;}}public static boolean func(byte a, byte b) {if(a == b) {return true;}else {return false;}}public static boolean func(short a, short b) {if(a == b) {return true;}else {return false;}}public static boolean func(long a, long b) {if(a == b) {return true;}else {return false;}}public static void main(String[] args) {// 示例调用System.out.println(func(5, 5));           // 输出 trueSystem.out.println(func((byte) 5, (byte) 5)); // 输出 trueSystem.out.println(func((short) 5, (short) 5)); // 输出 trueSystem.out.println(func(5L, 5L));         // 输出 true}}

Java的主要内存区

​ 在Java中,内存通常分为几个主要区域,包括栈区、堆区和方法区(也称为非堆区)。以下是对这几种内存区域的详细说明:

1. 栈区(Stack)

  • 存储内容
    • 局部变量:方法内部定义的变量(包括基本数据类型和对象的引用)。
    • 方法调用的上下文:每次调用方法时,都会在栈上创建一个新的帧(frame),用于存储该方法的局部变量和参数。
    • 返回地址:当方法执行完成后,返回地址也会存储在栈中,以便返回到正确的调用位置。
  • 特点
    • 快速分配和释放:栈区的内存分配和释放非常迅速,因为只需移动栈指针。
    • 后进先出(LIFO):栈的管理遵循后进先出原则,最后压入栈的内容最先被弹出。
    • 生命周期短:栈区的变量在方法结束时会自动释放。

2. 堆区(Heap)

  • 存储内容
    • 对象实例:所有通过 new 关键字创建的对象,包括字符串数组和自定义类的实例
    • 动态分配的内存:所有动态分配的内存块。
  • 特点
    • 灵活性高:堆区的内存可以动态分配和释放,适合存储大小不定的对象。
    • 管理复杂:由于对象的生命周期不受方法调用的影响,堆区的内存管理需要垃圾回收机制来清理不再使用的对象。

3. 方法区(Method Area)

  • 存储内容
    • 类的结构信息:包括类的元数据(如类名称、字段、方法、常量池等)。
    • 静态变量:所有类的静态变量和常量。
    • 方法的字节码:编译后的方法代码。
  • 特点
    • 共享性:方法区的内容在同一个类加载器中是共享的,因此多个对象可以共享类的静态信息。
    • 大小限制:方法区的大小通常是有限的,超出限制时可能会抛出 OutOfMemoryError

总结

  • 栈区用于存储局部变量和方法调用的上下文,生命周期短,管理简单。
  • 堆区用于存储动态分配的对象,灵活性高,但管理复杂。
  • 方法区用于存储类的结构信息和静态变量,内容在同一类加载器中共享。

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

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

相关文章

面经整理 八股 虾皮购物 Java后端开发 上

目录 1.java中的锁机制 什么是可重入锁 锁机制 可重入锁(Reentrant Lock) 特点: 示例代码: 总结 2.可重入锁的使用场景 1. 递归调用 2. 多线程资源共享 3. 复杂对象的状态管理 4. 保证顺序执行 总结 3.讲一下AQS AQ…

Lua表(Table)

软考鸭微信小程序 过软考,来软考鸭! 提供软考免费软考讲解视频、题库、软考试题、软考模考、软考查分、软考咨询等服务 Lua中的表(table)是一种核心数据结构,它既是数组也是字典,能够存储多种类型的数据,包括数字、字符…

0x3D service

0x3D service 1. 概念2. Request message 数据格式3. Respone message 数据格式3.1 正响应格式3.2 negative respone codes(NRC)4. 示例4.1 正响应示例:4.2 NRC 示例1. 概念 UDS(统一诊断服务)中的0x3D服务,即Write Memory By Address(按地址写内存)服务,允许客户端向服…

Javaweb基础-axios

Axios 是一个基于 Promise 的 HTTP 库,可以用在浏览器和 node.js 中。 GET方法 get请求第一种写法 //后端 Slf4j RestController RequestMapping("/demo") public class DemoController {RequestMapping("/getTest")// 被RequestParam标记的参数…

mysql数据量分库分表

一、分库分表参考阈值 分库分表是解决大规模数据和高并发访问问题的常用策略。虽然没有绝对的阈值来决定何时进行分库分表,但以下是一些参考阈值和考虑因素,可以帮助你做出决策: 1.1 数据量阈值 单表数据行数:当单表的数据行数…

2024年中国工业大模型行业发展研究报告|附43页PDF文件下载

工业大模型伴随着大模型技术的发展,逐渐渗透至工业,处于萌芽阶段。 就大模型的本质而言,是由一系列参数化的数学函数组成的计算系统,且是一个概率模型,其工作机制是基于概率和统计推动进行的,而非真正的理解…

.NET 6 API + Middleware + Audit rail

Request相关的参数。 需要在Program.cs 注入IHttpContextAccessor //Below services used to get tokenservices.AddHttpContextAccessor();services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>(); public string GetClientIpAddress(){var clientIp _ht…

实现对redis过期键监听案例

开发背景 为了实现当经纪人A提交分佣后如果三天后其他经纪人没有确认分佣就自动确认分佣&#xff0c;如果经纪人A修改分佣后再次提交分佣&#xff0c;时间重置为三天 实现方式 第一步&#xff1a;引入依赖 <dependency> <groupId>redis.clients</groupId> …

aardio 中最重要的控件:自定义控件使用指南

aardio虽然是个小众编程语言&#xff0c;但其在windows下做个小软件生成exe文件&#xff0c;确实方便。只是这个编程语言的生态圈小&#xff0c;文档的详细程度也完全无法和大的编程语言相提并论。今天介绍一下&#xff0c;aardio中的自定义控件如何使用。 这里我们只介绍如何做…

华为高频手撕冲刺

简单题 两数之和 方法一&#xff0c;暴力破解&#xff0c;时间复杂度O(n^2)&#xff0c;空间复杂度O(1) class Solution:def twoSum(self, nums: List[int], target: int) -> List[int]:nlen(nums)for i in range(n):for j in range(i1,n):if nums[i]nums[j]target:retur…

python 作业1

任务1: python为主的工作是很少的 学习的python的优势在于制作工具&#xff0c;制作合适的工具可以提高我们在工作中的工作效率的工具 提高我们的竞争优势。 任务2: 不换行 换行 任务3: 安装pycharm 进入相应网站Download PyCharm: The Python IDE for data science and we…

AnaTraf | TCP重传的工作原理与优化方法

目录 什么是TCP重传&#xff1f; TCP重传的常见触发原因 TCP重传对网络性能的影响 1. 高延迟与重传 2. 吞吐量的下降 如何优化和减少TCP重传 1. 优化网络设备配置 2. 优化网络链路 3. 网络带宽的合理规划 4. 部署CDN和缓存策略 结语 AnaTraf 网络性能监控系统NPM | …

餐饮店怎么标注地图位置信息?

随着市场竞争的日益激烈&#xff0c;商家若想在竞争中脱颖而出&#xff0c;就必须想方设法去提高自身的曝光度和知名度&#xff0c;为店铺带来更多的客流量。其中&#xff0c;地图标注便是一种简单却极为有效的方法。通过在地图平台上添加店铺位置信息&#xff0c;不仅可以方便…

Unity3D 框架如何实现道路引导 UV 动画详解

Unity3D 是一款功能强大的游戏引擎&#xff0c;能够实现各种各样的游戏效果。在游戏开发中&#xff0c;道路引导是一个常见的需求&#xff0c;可以用来指引玩家前进的方向。而为了增加游戏的真实感和视觉效果&#xff0c;我们可以使用道路引导 UV 动画来模拟道路的移动效果。本…

Qt-系统文件相关介绍使用(61)

目录 描述 输⼊输出设备类 打开/读/写/关闭 使用 先初始化&#xff0c;创建出大致的样貌 输入框设置 绑定槽函数 保存文件 打开文件 提取文件属性 描述 在C/C Linux 中我们都接触过关于文件的操作&#xff0c;当然 Qt 也会有对应的文件操作的 ⽂件操作是应⽤程序必不…

两阶段提交(2PC)如何保证一致性

事务的两阶段提交&#xff08;2PC, Two-Phase Commit&#xff09;是一种分布式事务协议&#xff0c;用于确保多个参与者&#xff08;例如多个数据库或服务&#xff09;在分布式系统中一致地提交或回滚事务。它分为两个阶段&#xff1a;准备阶段&#xff08;Prepare Phase&#…

思科网络设备命令

一、交换机巡检命令 接口和流量状态 show interface stats&#xff1a;查看所有接口当前流量。show interface summary&#xff1a;查看所有接口当前状态和流量。show interface status&#xff1a;查看接口状态及可能的错误。show interface | include errors | FastEthernet …

【C语言】文件操作(1)(文件打开关闭和顺序读写函数的万字笔记)

文章目录 一、什么是文件1.程序文件2.数据文件 二、数据文件1.文件名2.数据文件的分类文本文件二进制文件 三、文件的打开和关闭1.流和标准流流标准流 2.文件指针3.文件的打开和关闭文件的打开文件的关闭 四、文件的顺序读写1.fgetc函数2.fputc函数3.fgets函数4.fputs函数5.fsc…

微信小程序上传组件封装uploadHelper2.0使用整理

一、uploadHelper2.0使用步骤说明 uploadHelper.js ---上传代码封装库 cos-wx-sdk-v5.min.js---腾讯云&#xff0c;对象存储封装库 第一步&#xff0c;下载组件代码&#xff0c;放置到自己的小程序项目中 第二步、 创建上传对象&#xff0c;执行选择图片/视频 var _this th…

npm install进度卡在 idealTree:node_global: sill idealTree buildDeps

ping一下源&#xff1a;ping http://registry.npm.taobao.org/ ping不通&#xff0c;原因&#xff1a;原淘宝npm永久停止服务&#xff0c;已更新新域名~~震惊&#xff01;&#xff01;&#xff01; 重新安装&#xff1a;npm config set registry https://registry.npmmirror.c…