gpt4 book ai didi

java - 将对象引用或基本类型作为参数传递时,void 方法的行为如何

转载 作者:行者123 更新时间:2023-12-01 07:26:12 26 4
gpt4 key购买 nike

我的类有 void 方法。

我的问题是,这些方法是如何执行的。由于我的 stringBuilderAppend() 是一个 void 方法,但是当我调用此方法时,它返回附加在该方法内的值,并且我正在对其他两个方法(即 stringAppend() 和 addNumbers() )进行相同的检查,它们是不返回任何东西。

  public class VoidMethodChecker {
public static void main(String... a){
StringBuilder stringBuilder = new StringBuilder("first StringBuilder ");
stringBuilderAppend(stringBuilder);

String string = "first String ";
stringAppend(string);

int number = 0;
addNumber(number);


/* stringBuilderAppend method prints "first StringBuilder second StringBuilder"
* why does stringBuilder() returning the appended value. (my stringBuilder() is void method)
* as other two method does not appending*/

System.out.println(stringBuilder); // it prints "first StringBuilder second StringBuilder"

System.out.println(string); // it prints "first String"
System.out.println(number); // it prints "0"
}

private static void stringBuilderAppend(StringBuilder stringBuilder) {
stringBuilder.append("second StringBuilder");
}

private static void addNumber(int number){
number = 120;
}

private static void stringAppend(String string){
string += "second String";
}
}

谢谢

最佳答案

stringBuilderAppend:该方法未返回任何内容。您正在传递一个对象并在方法体内修改其状态。当您在调用方法中保留对同一对象的引用时,您会看到对该对象所做的更改。这是您需要理解的面向对象的基本概念。

addNumber:您正在传递一个分配给参数number 的原始整数。该参数只不过是一个仅在方法主体中可见的变量。如果您为该变量分配一个新值,调用者将看不到任何内容。如果您在修改变量之前将新的 StringBuilder 分配给变量 (stringBuilder = new StringBuilder()),则在 stringBuilderAppend 中也会发生同样的情况。

stringAppend:与addNumber基本相同。 string += "second String"string = string + "second String" 相同,因此您要为变量分配一个新值。

关于java - 将对象引用或基本类型作为参数传递时,void 方法的行为如何,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24279986/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com