java 函数调用关系_【Java基础】函数的调用时的内存关系

【Java基础】函数的调用时的内存关系

【Java基础】函数的调用时的内存关系

main函数调用sum函数没计算1、2的和,从栈的角度分析

Public Class Sum{

public static int sum(int a. int b){

int c = a + b;

return c;

}

public static void main(String[] args){

int d = Sum.sum(1, 2);

System.out.println(d);

}

}

首先,栈中存放两个变量 ,args和d。

执行Sum.sum函数

a和b入栈,如图2,

然后将返回地址入栈(main函数中调用函数结束后要执行的指令地址)

进入Sum.sum函数内部,为局部变量c分配地址。

调用return后,程序会跳转到栈中保存的返回值地址(main的下一条指令地址。)sum函数相关数据出栈。

main的下一条指令是根据函数返回值给变量d赋值,返回值从专门的返回值存储器中获得。

b9efa621be6f68b3700f90312728e631.png

db84e9d5cc901c5961684492fbb87bbd.png

数组和对象的内存分配

public class ArrayMax {

public static int max(int min, int[] arr){

int max = min;

for (int a : arr){

if (a > max){

max = a;

}

}

return max;

}

public static void main(String[] args) {

int[] arr = new int[]{2, 3, 4};

int ret = max(0, arr);

System.out.println(ret);

}

}

栈中存放数组/对象在堆中的地址。

在main函数执行结束后,没有指向堆中的引用,则堆中的值获取会被GC回收

c326c0a8162a78969c282cf494a9bfb1.png

【Java基础】函数的调用时的内存关系相关教程

初学者总结—JAVA的数据类型总结

初学者总结—JAVA的数据类型总结 JAVA的数据类型学习 int——整型(占用4个字节) 定义数字整型,例如1、2、1000、50 short——短整型(占用2个字节) 定义数字短整型,与int相比,它定义的数字占字节数更短 long——长整形(占用8个字节) 定义数字长整型,

Java 阻塞队列实现 生产者 消费者 模式 实例教程(强烈推荐)

Java 阻塞队列实现 生产者 消费者 模式 实例教程(强烈推荐) 话不多说,直接上代码: github代码地址 生产者 package com.pattern.productorconsumer.blockingqueue;import java.util.concurrent.BlockingQueue;/** * 生产者 */@SuppressWarnings(rawtypes)p

幂函数

幂函数 上文简单介绍了一下基本初等函数的范围,分别是反对幂三指,本文说一下幂函数。 幂函数的格式: y=x^μ (μ∈R) R是所有实数的集合 该式子说明,所有实数都可以作为幂。 函数具有单调性 ,但不是所有的函数都具有单调性,单调性必须是连续的函数,什么

Memcached-Java-Client API 应用示例

Memcached-Java-Client API 应用示例 ??Memcached-Java-Client项目已于2012年停止更新,但使用其进行应用并没有太大问题,本文演示如何使用Memcached-Java-Client连接Memcached服务。 ?? JAR 下载 ??Github地址:https://github.com/gwhalin/Memcached-Java-C

#Java教程:Objects类、System类、StringBuilder类、包装类 @FDD

#Java教程:Objects类、System类、StringBuilder类、包装类 @FDDLC 一、Objects类中的常用方法: Objects: 1、equals方法: 源码: public static boolean equals(Object a, Object b) { return (a == b) || (a != null a.equals(b));} 使用示例: Car car1=

快递鸟API单号查询接口Java开发调用源码

快递鸟API单号查询接口Java开发调用源码 快递鸟是专业的第三方物流数据服务商,国家高新技术企业,已先后完成四轮融资,一直专注于企业级物流API技术研发和打通物流各节点信息服务,致力于成为全球最大的物流信息枢纽中心,为零售电商企业级提供标准的物流接

五千字长文-css3选择器基础最详解(讲述其核心特点)(下次更新

五千字长文-css3选择器基础最详解(讲述其核心特点)(下次更新的是选择器高级) 标签选择器: !DOCTYPE htmlhtml lang=enhead meta charset=UTF-8 title08-标签选择器/title style p{ color: red; } h1{ color: blue; } /style/head bodyp我是段落/pp我是段

Java基础一:Java 基本功

Java基础一:Java 基本功 目录 1. Java 基本功 1.1. Java 入门(基础概念与常识) 1.2. Java 语法 1.3. 基本数据类型 1.4. 方法(函数) 1.1. Java 入门(基础概念与常识) 1.1.1. Java 语言有哪些特点? 简单易学; 面向对象(封装,继承,多态); 平台无关

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值