当前位置: 首页 > 面试题库 >

Java函数参数是否总是按值传递?

慕意致
2023-03-14
问题内容

只是一个关于如何在Java中传递参数的快速问题…

...
            如果((index = stdout.indexOf(pattern))!= -1){
                整洁(stdout,索引+ pattern.length());
                返回true;
            } else if(((index = stderr.indexOf(pattern))!= -1){
                整洁(stderr,索引+ pattern.length());
                返回true;
...

    私人void tidy(StringBuffer buffer,int i){
        logger.info(“截断缓冲区:” +缓冲区);
        缓冲区=新的StringBuffer(buffer.substring(i));
        logger.info(“ Buffer now:” + buffer);
    }

在这种情况下,stdout和stderr(用作tidy()中的参数)的值是否会更改为新的StringBuffer(buffer.substring(i))?我的假设是,它们将作为对象变量(对象指针)始终按值传递吗?


问题答案:

您错报了这里发生的事情-对象引用按值传递(创建了引用的副本),因此调用tidy时 不会 修改stdout和stderr 。执行的第2行时,由它们构成的
副本 将被修改tidy

Java中的参数传递对许多人来说是造成混乱的根源。这是一个很好的解释。



 类似资料:
  • 我一直认为Java使用按引用传递。 然而,我看到一篇博客文章声称Java使用传递值。 我想我不明白他们的区别。 原因是什么?

  • 问题内容: 数组不是Java中的原始类型,但它们也不是对象,因此它们是按值还是按引用传递?它是否取决于数组包含的内容,例如引用或原始类型? 问题答案: 。如果是Array(只不过是Object),则数组引用按值传递。(就像对象引用按值传递)。 当你将数组传递给其他方法时,实际上是复制对该数组的引用。 通过该引用对数组内容进行的任何更改都会影响原始数组。 但是,将引用更改为指向新数组不会更改原始方法

  • 本文向大家介绍详解python函数传参是传值还是传引用,包括了详解python函数传参是传值还是传引用的使用技巧和注意事项,需要的朋友参考一下 首先还是应该科普下函数参数传递机制,传值和传引用是什么意思? 函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进行通信的方法问题。基本的参数传递机制有两种:值传递和引用传递。 值传递(passl-by-value)过程中,被调

  • 本文向大家介绍Python函数中参数是传递值还是引用详解,包括了Python函数中参数是传递值还是引用详解的使用技巧和注意事项,需要的朋友参考一下 在 C/C++ 中,传值和传引用是函数参数传递的两种方式,在Python中参数是如何传递的?回答这个问题前,不如先来看两段代码。 代码段1: 看了代码段1的同学可能会说参数是值传递。 代码段2: 看了代码段2,这时可能又有人会说,参数是传引用,那么问题

  • 问题内容: 我尝试使用以下方法更改默认参数值: 而所有的SQL预编译器给我的都是这个错误: 消息102,级别15,状态1,过程my_sp,第8行’(’附近的语法不正确。 我已经创建了过程。(我不确定这是否相关。)我使用的是空默认值,以后再检查它,但这似乎不合适。我可以一行完成吗? 更新:我不打算使用MSDN对存储过程参数的描述: [= default]是参数的默认值。如果定义了默认值,则可以在不为