首页 > 系统相关 >Java的重载和主要内存区

Java的重载和主要内存区

时间:2024-10-19 22:49:20浏览次数:15  
标签:return true 内存 func 重载 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));           // 输出 true
				System.out.println(func((byte) 5, (byte) 5)); // 输出 true
				System.out.println(func((short) 5, (short) 5)); // 输出 true
				System.out.println(func(5L, 5L));         // 输出 true
		
	}

}

Java的主要内存区

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

1. 栈区(Stack)

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

2. 堆区(Heap)

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

3. 方法区(Method Area)

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

总结

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

标签:return,true,内存,func,重载,Java,方法
From: https://blog.csdn.net/2302_81034736/article/details/143085910

相关文章

  • 【Java】Java面向对象与方法
    1.基本方法1.1.基本定义在Java中,方法即为函数,Java中的方法定义遵循下面的通用格式修饰符返回值方法名(形参列表){方法体}对于基本方法的定义,遵循下面的结构publicstatic返回类型方法名(形参列表){方法体}是否需要返回类型和形参列表需要看该......
  • Java21虚拟线程:我的锁去哪儿了?
    0前言最近的文章中,我们详细介绍了当我们迁移到Java21并将代际ZGC作为默认垃圾收集器时,我们的工作负载是如何受益的。虚拟线程是我们在这次迁移中兴奋采用的另一个特性。对虚拟线程新手,它们被描述为“轻量级线程,大大减少编写、维护和观察高吞吐量并发应用程序的工作量。”......
  • 奇怪的错误:关于函数重载,头文件使用和新手避坑的小科普
    奇怪的错误:关于函数重载,头文件使用和新手避坑的小科普题目描述        个小球排成一排,现在有种不同颜色的油漆,给每个小球都涂色。如果相邻两个小球的颜色必须不同,那么共有多少种涂法?输入        一行,两个整数,。输出        一行,一个整数,为满......
  • 【Java基础】物理内存&虚拟内存
    前言在Java程序运行过程中,操作系统为其分配了物理内存和虚拟内存。理解这两者的概念有助于明晰内存管理和性能优化。一、物理内存物理内存是指计算机的实际RAM(随机存取存储器)。Java进程在运行时需要向操作系统请求内存资源,操作系统通过分配物理内存来满足Java进程的内存......
  • java锁的问题速通
     1.syncronized底层原理——悲观锁synchronized有对象锁和类锁两种,多个线程中只有一个线程可以获取对象锁,其他线程都会处于阻塞状态synchronized是底层是基于monitor实现的。monitor是C++编写的jvm对象,主要分为owner(这个只会存一个线程的信息,记录当前锁被哪个线程获取了)、ent......
  • java反射机制
    什么是java反射呢,先来看Oracle官方的解释:“ReflectionenablesJavacodetodiscoverinformationaboutthefields,methodsandconstructorsofloadedclasses,andtousereflectedfields,methods,andconstructorstooperateontheirunderlyingcounterparts,......
  • [Java基础] 异常处理机制
    往期回顾[Java基础]基本数据类型[Java基础]运算符[Java基础]流程控制[Java基础]面向对象编程[Java基础]集合框架[Java基础]输入输出流[Java基础]异常处理机制[Java基础]Lambda表达式目录什么是异常处理?异常分类检查型异常非检查型异常(UncheckedExcepti......
  • java计算机毕业设计springboot+vue小区物业管理系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景随着城市化进程的加速,住宅小区的规模不断扩大,小区内的管理事务日益繁杂。传统的物业管理方式依赖人工操作,效率低下且容易出错。在信息技术飞速发......
  • java计算机毕业设计广告系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景随着互联网的迅猛发展,广告行业发生了翻天覆地的变化。广告形式和载体日益多样化,从传统的报纸、杂志、电视到如今无处不在的互联网广告等1。海量......
  • java基于springboot的在线教学平台(源码+vue+部署文档+前后端分离等)
    收藏关注不迷路!!......