• 参数传递(值传递与引用传递)


    按值传递和按引用传递。按值传递意味着当将一个参数传递给一个函数时,函数接收的是原始值的一个副本。因此,如果函数修改了该参数,仅改变副本,而原始值保持不变。按引用传递意味着当将一个参数传递给一个函数时,函数接收的是原始值的内存地址,而不是值的副本。因此,如果函数修改了该参数,调用代码中的原始值也随之改变。

    1、对象是按引用传递的
    2、Java 应用程序有且仅有的一种参数传递机制,即按值传递(引用传值传递的是原始值的内存地址,其实也是一种按值传递)
    3、按值传递意味着当将一个参数传递给一个函数时,函数接收的是原始值的一个副本
    4、按引用传递意味着当将一个参数传递给一个函数时,函数接收的是原始值的内存地址,而不是值的副本

    复制代码
     1 public class ParamterE2 {
     2     
     3     public static class ParamterE3{
     4         public String name="xiaotiaosi";
     5     }
     6     
     7     public static void run(ParamterE3 paramterE3,String a,int b){
     8         ParamterE3 paramterE=paramterE3;
     9         paramterE.name="xiaohua111";
    10         a="girl";
    11         b=1;
    12     }
    13  
    14     public static void main(String[] args) {
    15         ParamterE2 paramterE2=new ParamterE2();
    16         ParamterE3 paramterE3=new ParamterE3();
    17         String a="boy";
    18         int b=0;
    19         paramterE2.run(paramterE3,a,b);
    20         System.out.println(paramterE3.name+" "+a+" "+b);
    21     }
    22 }
    复制代码

    程序运行的结果为:xiaohua111 boy 0

    原始对象内的成员变量name的值改变,原始String类型的变量a 和原始int类型的变量b值没有发生改变。

    说明:

    1.对象就是传引用
    2.原始类型就是传值(boolean 、char、byte、short、int、long、float、double)
    3.String类型因为没有提供自身修改的函数,每次操作都是新生成一个String对象,所以要特殊对待。可以认为是传值。

    注:通过查资料发现String类型比较特殊,在Java中,String是一个引用类型,但是在作为参数传递的时候表现出来的却是基本类型的特性。
    查过相关资料后我觉得是两个原因导致的,一个是String实际上操作的是char[],可以理解为String是char[]的包装类。二是给String变量重新赋值后,实际上没有改变这个变量的值,而是重新new了一个String对象,改变了新对象的值,所以原来的String变量的值并没有改变。

  • 相关阅读:
    Mbps、Kbps、bps、kb、mb区别和换算
    Python导入模块方法
    C# WinForm 程序免安装 .NET Framework(XP/win7/win10环境运行)
    生成缩略图
    WCF 的优势和特点
    不要在using语句中调用WCF服务
    pb getchild获取DropDownDW子窗体后进行取值
    Bootstrap后台管理模板调研
    PB调用C#编写的DLL
    PowerBuilder与嵌入浏览器交互
  • 原文地址:https://www.cnblogs.com/yulei126/p/6757558.html
Copyright © 2020-2023  润新知