变量和方法调用过程中会出现的参数传递

  • 变量对于基本数据类型来说变量名和值同时存储于栈内存里面的一块空间之中
  • 对于引用类型来说则是栈内存里面的变量指向堆里面的实际对象,在栈中的变量来说变量名和指向对象的地址存在同一块内存里面。
  • 方法的参数和基本类型变量都是存储于栈中的
  • 对于方法来说进入方法开辟空间,方法执行完退出则回收内存,很明显方法中的参数,变量的作用域问题
  • 方法的参数又包括基本类型和引用类型,对于两种不同的参数来说在参数的传递过程中是基本类型的值被copy后传进去也即是值传递,
  • 而引用类型来说传递的是引用也就是他的地址,从某方面来说也是进行的值传递只不过这个的值是引用的地址。
  • 在分析变量以及参数的时候从他们的类型和作用域去考虑

原文地址:https://www.cnblogs.com/zrmj/p/11390501.html

时间: 2024-10-09 12:52:27

变量和方法调用过程中会出现的参数传递的相关文章

Hadoop中客户端和服务器端的方法调用过程

Java 动态代理一个简单的demo:(用以对比Hadoop中的动态代理) Hello接口: public interface Hello { void sayHello(String to); void print(String p); } Hello接口的实现类: public class HelloImpl implements Hello { public void sayHello(String to) { System.out.println("Say hello to "

Android Java 与 C++ 调用过程中的常量,路径名、文件名、后缀名最大长度

/**************************************************************************** **************************************************************************** *** ***   This header was automatically generated from a Linux kernel header ***   of the same

函数递归调用过程中的调用堆栈的情况

为了加深对函数递归调用过程中的理解,本Demo程序特意在VS2008 C#控制台程序实现了阶乘的计算功能,用于观察函数递归调用过程中的调用堆栈的情况. 源码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace RecursiveTset { class Program { //阶乘的定义:n!=n*(n-1)!,特别的,1!=1:0!=1 //阶乘的实

扩展jQuery的方法统一处理AJAX调用过程中产生的异常错误信息

由于项目中大量的实用了.post方法,而该方法默认不对请求的异常进行处理,后期又要处理该问题.前期的解决方案是将使用.post请求都改造为$.ajax请求,但由于两个方法的实现(需要的参数)等相差很大,修改起来很麻烦! 期间尝试使用定义"AJAX 请求发生错误时执行函数($(document).ajaxError())" 的方式来解决问题,但影响范围太大,长轮询发生的错误也被捕获,导致页面一打开就弹出系统异常的对话框. 所以这里采用扩展jQuery的方法的技术来解决问题: /* 扩展j

不用static,巧用对象.方法调用java中的函数

先生成一个对象,用"对象.方法()"的方式调用. java中的main方法是静态的,用于程序的入口,在静态方法中无法调用非静态方法,只能调用静态方法.想调用静态方法的话就要先生成该类的一个对象,通过对象调用非静态方法.如:public class SquareIntTest { public static void main(String[] args) {  int result;  SquareIntTest m = new SquareIntTest();  for (int x

https和http 调用过程中请求头 referrer 获取不到的问题

HTTP协议规定: Clients SHOULD NOT include a Referer header field in a (non-secure) HTTP request if the referring page was transferred with a secure protocol. 解决办法: 1.表单添加一个字段referrer,如果头部没有Referer,则获取表单的这个字段, 添加js: <input id="referrer" type="

main方法调用spring中dao service方法

public static void main(String[] args) { ApplicationContext context = new ClassPathXmlApplicationContext("ApplicationContext.xml"); System.out.println("aaa"); // ServiceReportService service = (ServiceReportService)context.getBean(&quo

java实例变量及方法调用顺序

public class Base { private String name="base"; public Base(){ sayHello(); } void sayHello() { System.out.println("Base hello " + name); } } class Derived extends Base { private String name="Derived"; public Derived(){ sayHel

多态方法调用的解析和分派

方法调用并不等同于方法执行,方法调用阶段唯一的任务就是确定被调用方法的版本(即调用哪一个方法),暂时还不涉及方法内部的具体运行过程.在程序运行时,进行方法调用是最普遍.最频繁的操作,Class文件的编译过程中不包含传统编译中的连接步骤,一切方法调用在Class文件里面存储的都只是符号引用,而不是方法在实际运行时内存布局中的入口地址(相当于之前说的直接引用).这个特性给Java带来了更强大的动态扩展能力,但也使得Java方法调用过程变得相对复杂起来,需要在类加载期间,甚至到运行期间才能确定目标方法