当前位置: 首页 > 知识库问答 >
问题:

关于向方法传递值的混乱?[副本]

乐宜民
2023-03-14

我真的很困惑值是如何传递给一个函数的。我无法弄清楚当我们把它传递给函数时,什么类型的值会被改变。

示例1-向函数传递字符串(引用类型)-

public static String word = new String("Hello World");

public static void main(String[] args)
{
    System.out.println("Before: " + word);
    UpdateValue(word);
    System.out.println("After: " + word);
}

public static void UpdateValue(String x)
{
    x = "Hi World";
}

输出:

Before: Hello World
After: Hello World

示例2-向函数传递String[]数组-

public static String[] words = new String[] {"Hello", "Everyone"};

public static void main(String[] args)
{
    System.out.println("Before: " + Arrays.toString(words));
    UpdateValue(words);
    System.out.println("After: " + Arrays.toString(words));
}

public static void UpdateValue(String[] x)
{
    x[0] = "Hi";
}

输出:

Before: [Hello, Everyone]
After: [Hi, Everyone]
    null

共有1个答案

赵嘉赐
2023-03-14

两者都作为引用传递。方法中的局部变量(最初)指向与调用方(main)相同的对象。

下面是事情的经过。

字符串是不可变的。在方法中重新分配字符串时,将创建一个新对象,并更新本地引用以指向新对象。原始对象仍然存在,main中的引用仍然指向它。

我是第二个例子,对数组的引用是以相同的方式复制的。本地引用指向与main中相同的数组。但这一次不更新数组引用。相反,数组中的一个string引用被更新为指向一个新的string对象。

 类似资料:
  • 我看到一段让我难以理解的代码,将其简化并放在这里: 模型类被定义为具有公共方法: 我的问题是: 对于

  • 因此,我试图在Laravel框架内与旧的文件上传做斗争,但有点迷失了方向。我已经设法让上传工作,所以文件上传并保存到一个随机字符串名的资产文件夹。 这是表格: 这是路线: 这是AccountController内部的方法: 我现在试图启用,以推动字符串名称到数据库,也与上传它的用户相关联,并显示为他们的个人资料图像?Ay指针会很棒! 我在数据库中创建了一行名为文件的文本类型......我不确定在这

  • JAVA中关于变量赋值的机制(值传递机制)   1.如果变量是基本数据类型,此时赋值的是数据的实际值,即实参传递给形参的是实参的值   2.如果变量是引用数据类型,此时赋值的是保存数据的地址值,即实参传递给形参的是实参的地址

  • 问题内容: 一个讨论是关于将空值传递给方法。 它代表了不同的处理方式: 我更喜欢断言方法,但是我不喜欢断言默认情况下处于关闭状态的事实。 该书最后指出: 在大多数编程语言中,没有很好的方法来处理调用者意外传递的null。因为是这种情况,所以合理的方法是默认情况下禁止传递null。 它实际上并没有涉及如何实施此限制? 无论哪种方式,您中的任何人都有强烈的意见。 问题答案: 在这里,使用断言和引发异常

  • 本文向大家介绍java中文传值乱码问题的解决方法,包括了java中文传值乱码问题的解决方法的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了java中文传值乱码问题,以及解决方法,供大家参考,具体内容如下 一般编码格式设置: 1.可以经过两次编码处理,即设置字符集后,在插入前解码字符集,也是最有效的方式 设置字符集: 解码字符集: 2.直接处理: userName = new Stri

  • 在elasticsearch文档中查找bool查询,请参见以下链接:https://www.elastic.co/guide/en/elasticsearch/reference/1.4/query-dsl-bool-query.html 它没有说包含结构。如果我只是按照他们的方式使用bool,那是完全错误的。我需要用一些查询/筛选/筛选查询的愚蠢组合来围绕这个问题。我不确定在Elastic中形成