我希望这不是重新发布的帖子。我无法找到任何能回答我问题的内容,所以我决定这样做。
比如说我有一个
String [] arrayS = new String [2];
我为字符串数组分配了单词
arrayS[0] = Hello;
arrayS[1] = World;
现在我有一个String []方法。
public static String [] change(String [] sArray, String newWord){
//Do Stuff
return sArray;
}
因此,当我返回方法时,无论是否有赋值运算符,我仍然得到相同的结果。 实施例...
//This result
String newWord = Hi;
arrayS = change(arrayS, newWord); // With assignment operator.
for(String word:arrayS)
System.out.println(word);
//Is the same as this result
String newWord = Hi;
change(arrayS, newWord); // No assignment operator.
for(String word:arrayS)
System.out.println(word);
有什么理由为什么会这样?我一直认为你返回时必须有一个赋值操作符。但是当我打印出arrayS时,它给了我同样的功能。
答案 0 :(得分:1)
您实际上并没有返回对象,而是返回对象的引用。
public static String [] change(String [] sArray...
表示该方法接受对String[]
的引用,并返回对String[]
的引用。这也意味着,即使这些引用按值传递,您对本地sArray
进行的任何修改都会将其反映到对象本身。{/ p>
赋值运算符与您需要执行的操作之间没有直接关联。如果该方法返回change
,则表示它可以返回与传递的String[]
不同的内容,否则根本没有理由返回任何内容,只会使代码的可读性降低。 / p>
例如,在执行类似
的操作时,返回值可能有意义sArray
但是在你的情况下没有任何意义,你可以在其中重新分配一个值,使一切变得更加混乱。
值得注意的是,这些注意事项并不适用于原始类型,它是通过值传递的值。