`

参数传递的过程

 
阅读更多

在JAVA里面,对于方法的参数传递,不管是原生数据类型还是引用类型,一律是传值:pass by value

只是在传递原生数据时,值是具体的值,而传递引用类型时,值是这个引用对象的地址。

 

java 代码
  1. package com.test;   
  2.   
  3. public class ParamTest {   
  4.   
  5.     public void changeInt(int a)   
  6.     {   
  7.         a = 3;   
  8.     }   
  9.     public void changePoint(Point point)   
  10.     {   
  11.         //此处将改变引用对象内存地址参数对应的对象的地址中的值   
  12.         point.x = 5;   
  13.         point.y = 6;   
  14.     }   
  15.     public void changeString(String str)   
  16.     {   
  17.         //String类型是个不可改变的final类型,此时,参数str将指向新的String pool中值为"abc"的对象,因此,原来的实参str的所指向的内存地址中的值并未被改变   
  18.         str = "abc";   
  19.     }   
  20.        
  21.     public static void main(String[] args)   
  22.     {   
  23.         int a = 1;   
  24.         ParamTest pt = new ParamTest();   
  25.         //传递的是原生数据(其值是原生数据的数据“1”,而不是原生数据的地址)   
  26.         pt.changeInt(a);   
  27.         System.out.println(a);//1   
  28.            
  29.         Point point = new Point(1,2);          
  30.         ParamTest pt2 = new ParamTest();   
  31.         //传递的是引用类型(其值是对象的内存地址)   
  32.         pt2.changePoint(point);   
  33.         System.out.println(point.x);//5   
  34.         System.out.println(point.y);//6   
  35.            
  36.         String str = "xyz";   
  37.         ParamTest pt3 = new ParamTest();   
  38.         //传递的是引用类型(其值是String pool中值为"xyz"的对象的内存地址)   
  39.         pt3.changeString(str);   
  40.         System.out.println(str);//xyz   
  41.            
  42.     }   
  43.        
  44. }   
  45.   
  46. class Point   
  47. {   
  48.     int x;   
  49.     int y;   
  50.     public Point(int x,int y)   
  51.     {   
  52.         this.x = x;   
  53.         this.y = y;   
  54.     }   
  55. }
分享到:
评论

相关推荐

    C语言函数参数传递过程教学方法研究.pdf

    C语言函数参数传递过程教学方法研究

    net中WinForm参数传递过程

    net中WinForm参数传递过程 .net中在多个form中如何使用参数

    你了解u-boot与linux内核间的参数传递过程?.docx

    你了解u-boot与linux内核间的参数传递过程?.docx

    Java零基础-参数传递-1.md

    读者将学习Java中方法调用时的参数传递方式,并分别介绍基本类型和引用类型在参数传递过程中的特点和区别。 能学到什么: 学习Java中方法调用时的参数传递方式。 理解基本类型和引用类型在参数传递过程中的特点和...

    Java零基础-参数传递-2.md

    读者将学习Java中方法调用时的参数传递方式,并重点探讨基本类型和引用类型在参数传递过程中的特点和区别。此外,我们还将介绍可变参数和返回值的使用方法。 能学到什么: 学习Java中方法调用时的参数传递方式。 ...

    mybatis 动态sql及参数传递

    参数传递 单个参数传递 多个参数传递 传入单个实体(JavaBean/Map) 传入多个实体 传入集合 使用场景 在实际开发过程中,我们往往需要编写复杂的SQL语句,拼接稍有不注意就会导致错误,Mybatis给开发者提供了动态SQL,...

    用实例分析Python中method的参数传递过程

    主要介绍了用实例分析Python中method的参数传递过程,包括instancemethod和staticmethod等实例,需要的朋友可以参考下

    微信小程序 动态修改页面数据及参数传递过程详解

    主要介绍了微信小程序 动态修改页面数据及参数传递过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    VC编程时CPU中参数的传递的方法与总结

    该压缩包括一个记事本文件,一个Word文件和一个VS2017的工程,本项目是通过CPU中指针,结构体,数组的传递,详细讲解了CPU参数传递过程中分配内存,释放内存和使用的相关问题。

    函数参数传递

    函数参数传递

    VB参数传递方式判别与解题应用

    VB过程中使用的参数分为实参和形参,简单的讲,在过程定义中给定的参数是形参,而在过程调用语句中给定的参数是实参。...对参数传递方式的正确判别是过程学习中的一个难点,也是等级考试中的一个考点

    java参数传递

    这里详细的说明了,java参数传递的过程,引用传递,值传递

    C++指针参数传递内存详解

    用图示深度剖析c++指针参数传递内存时的详细过程,打破你以往对函数指针参数传递的误解(编译器总是要为函数的每个参数制作临时副本)。

    Python 网络服务 droopy 模块源文件

    内容概要:droopy 模块源文件 适用人群:有一定 Python 基础的人群 使用场景:用于文件分析,仅限于文件..._() 方法有 12 个参数,比 droopy 的多出一个,在参数传递过程中导致出错,故加上参数保证传递过程不出问题。

    Struts2中的参数传递

    我们知道,Struts2完成参数传递处理工作的基础是...2. 在参数传递的过程中,做恰当的类型转化,保证页面上的字符串能够转化成各 式各样的Java对象 接下来,通过四个不同的角度,来具体讲述Struts2在这两个方面的工作。

    C#控制台程序之间参数传递

    从一个控制台程序启动另一个控制台程序,并传入参数字符串作为目标控制台程序的参数,在目标程序中的main函数中用正则表达式解析该字符串。

    计算方法的一个用例程序

    是计算方法的一个程序,用C写的,可以直接用C调用.

    silverlight参数传递方法

    该文档详细讲述了silverlight中参数的传递方法和过程

Global site tag (gtag.js) - Google Analytics