java中有两个参数,一个是形参,一个是实参

形参:在函数定义中,整个函数体内部都可以使用,离开了该函数就不能继续使用。

实参:出现在主函数中,进入被调函数后,实参变量也就不能继续使用。

 public class Demo {
/*
* (int a,int b) 这里的a b就是形参
*/
public static void exchange(int a,int b) {
int temp=0;
temp=a;
a=b;
b=temp;
System.out.println("a="+a+" "+"b="+b);
} public static void main(String[] args){
int _a=1;
int _b=2;
// _a _b就是实参
exchange(_a,_b);
}
}

按值传递:

 public class Demo {

     public static void transmit(int a) {
a=1234;
System.out.println("a="+a);
} public static void main(String[] args){
int _a=1; /*
12 * transmit(_a) _a是所谓的实参. 调用函数transmit(a)时,a也就是所谓的形参(局部变量)!
13 * 分配给a stack内存中的一块空间,空间名称为a, 值为_a=1; 也就是 a=_a 将_a的值赋予给a --> 所谓的按值传递
14 * 实参传给形参多少 就是 多少
15 */

transmit(_a); System.out.println(_a); //输出1
}
}

内存解析:

int _a=1; 基本变量--> 在stack中占用一块内存(基本变量只占用一块内存);

transmit(_a); 调用方法public static void transmit(int a);

方法transmit中的int a为形参也是局部变量 --> 在stack中也占用一块内存,位于_a的上方;

然后输出a=1234;

在执行完方法时,之前方法中的所有局部变量都要消失,他们所占用的空间也就消失; stack中也就不存在a 的内存;

然后输出主函数的_a=1; 值传递不会改变实参的值,除非方法里面给实参赋予了新的值;

main()也执行完毕,此时_a在stack中所占用的内存也消失;

java 中形参与实参的转换的更多相关文章

  1. 关于Java中形参与实参的理解

    今天阅读了一个写的非常棒的博文,通过此博文再次复习了Java中参数传递的知识(即值传递与引用传递的区别).参考网站http://www.cnblogs.com/binyue/p/3862276.htm ...

  2. 深入理解java的形参和实参

    转载声明:本文转载自公众号「码匠笔记」. 前几天在头条上看到一道经典面试题,引发了一些思考.也是写这篇文章的导火索. 背景 请看题: public    classMain{    publicsta ...

  3. Java中数据类型及其之间的转换

    Java中数据类型及其之间的转换 基本的数据类型 基本类型有以下四种:1)int长度数据类型有:byte(8bits).short(16bits).int(32bits).long(64bits).2 ...

  4. Java中数据类型及其之间的转换(转)

    Java中数据类型及其之间的转换 基本的数据类型 基本类型有以下四种:1)int长度数据类型有:byte(8bits).short(16bits).int(32bits).long(64bits).2 ...

  5. js 函数中形参与实参的关系

    函数中形参与实参的关系 对于形参和实参的定义,在 权威指南中有着明确的定义.但是,我们更在意的是它们之间的关系,到底形参会不会影响到实参? 形参到底会不会影响到实参? 对于这个问题的答案,请先看以下两 ...

  6. 关于==和equals()方法&Java中string与char如何转换&String,StringBuffer

    1.对于基本数据类型,可以直接使用==和!=进行内容比较 如:int x=30;        int y=30;         x==y;  //true 基本数据类型 简单类型(基本类型) bo ...

  7. java的形参与实参的区别以及java的方法

    package com.lv.study; public class Demo05 { public static void main(String[] args) { //我想要用什么分隔符进行分隔 ...

  8. 一段代码了解Java中char和int的转换

    题目要求: 将输入的大写字母转成对应小写的后5个,如A转换后为f:如果转换后大于z则从a重新计,即多出1就转成a,多出2就转成b以此类推. Java代码: ```java private static ...

  9. Java中int和String互相转换的多种方法

    1 如何将字串 String 转换成整数 int? A. 有两个方法: 1). int i = Integer.parseInt([String]); 或 i = Integer.parseInt([ ...

随机推荐

  1. svg文字与图像

    摘要: svg与canvas一样都可以将文本和图像放在画布中,制作出不一样的效果.下面是如何使用svg来渲染文本与图像. 简介: SVG的强大能力之一是它可以将文本控制到标准HTML页面不可能有的程度 ...

  2. C# AES要解密的数据的长度无效

    加密方式  AES-CBC-128 将解密方法改成如下 public string Decrypt(string toDecrypt, string key) { if (string.IsNullO ...

  3. 【Ceisum】Max转GLTF

    参考资料:https://blog.csdn.net/u011394175/article/details/78919281 1.在3DsMax中加入COLLADA插件:COLLADA-MAX-PC_ ...

  4. PHP代码审计笔记--文件包含漏洞

    有限制的本地文件包含: <?php include($_GET['file'].".php"); ?> %00截断: ?file=C://Windows//win.in ...

  5. 如何使Ubuntu Linux12.04 LTS版可以用root用户登陆

    如何使Ubuntu Linux12.04 LTS版可以用root用户登陆 1.  用普通用户登录2.  在终端执行sudo -s,然后输入当前登录的普通用户密码,进入到root用户模式3.  执行ge ...

  6. js数组sort方法

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. codeblocks编码设置

    注意编码统一,即文件编码和编译时的编码统一即可. codeblock13.12下: 文件编码: setting -> editor ->general setting -> othe ...

  8. 《C++ Primer Plus》第16章 string类和标准模板库 学习笔记

    C++提供了一组功能强大的库,这些库提供了很多常见编程问题的解决方案以及简化其他问题的工具string类为将字符串作为对象来处理提供了一种方便的方法.string类提供了自动内存管理动能以及众多处理字 ...

  9. Java中过滤器和拦截器的区别

    1.拦截器是基于java反射机制的,而过滤器是基于函数回调的. 2.过滤器依赖于servlet容器,而拦截器不依赖于servlet容器. 3.拦截器只对action起作用,而过滤器几乎可以对所有请求起 ...

  10. Andoid数据存储之SQLite数据库

    SQLite是一个嵌入式的并且是一个轻量级的数据库: SQLite数据库支持大部分SQL语法, 允许使用SQL语句操作数据库, 其本质是一个文件, 不需要安装启动: SQLite数据库打开只是打开了一 ...