Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 这个引用变量发生了什么? 公共类反向{ 公共静态void main(字符串[]args){ 字符串[]辛普森={“荷马”、“佛兰德斯”、“Apu”}; 反向(辛普森一家); System.out.println(辛普森[0]+“”+辛普森[1]+“” +“+simpsons[2]); }//末端总管 公共静态无效反向(字符串[]列表) { String[]temp=新字符串[list.length]; 对于(int i=0;i_Java - Fatal编程技术网

Java 这个引用变量发生了什么? 公共类反向{ 公共静态void main(字符串[]args){ 字符串[]辛普森={“荷马”、“佛兰德斯”、“Apu”}; 反向(辛普森一家); System.out.println(辛普森[0]+“”+辛普森[1]+“” +“+simpsons[2]); }//末端总管 公共静态无效反向(字符串[]列表) { String[]temp=新字符串[list.length]; 对于(int i=0;i

Java 这个引用变量发生了什么? 公共类反向{ 公共静态void main(字符串[]args){ 字符串[]辛普森={“荷马”、“佛兰德斯”、“Apu”}; 反向(辛普森一家); System.out.println(辛普森[0]+“”+辛普森[1]+“” +“+simpsons[2]); }//末端总管 公共静态无效反向(字符串[]列表) { String[]temp=新字符串[list.length]; 对于(int i=0;i,java,Java,,因为您无法在被调用方法中更新调用方的引用(更改是本地的),并且数组是不可变的。只需返回新引用并在调用方中更新它即可 public class Reverse { public static void main(String[] args) { String [] simpsons = {"Homer", "Flanders", "Apu"}; reverse(simpsons); System.out.println(simpsons[0] + " " + simps

,因为您无法在被调用方法中更新调用方的引用(更改是本地的),并且数组是不可变的。只需返回新引用并在调用方中更新它即可

public class Reverse {

public static void main(String[] args) {
    String [] simpsons = {"Homer", "Flanders", "Apu"};
    reverse(simpsons);
    System.out.println(simpsons[0] + " " + simpsons[1] + " "
            + " " + simpsons[2]);


} //End main

public static void reverse(String[] list)
{
    String[] temp = new String[list.length];
    for (int i =0; i<list.length; i++)
    {
        temp[i] = list[list.length-i-1];
    }
    //System.arraycopy(temp, 0 , list, 0, list.length);
    list = temp;;
}

}    
当我运行它时,我得到了预期的输出

simpsons = reverse(simpsons);
或者,在进一步考虑后,您可以高效地执行
reverse()
阵列-

Apu Flanders  Homer
publicstaticvoidreverse(字符串[]列表){
对于(int i=0;i

java中的方法参数是局部作用域,因此,尽管变量是对传入列表的引用,但持有引用的变量是对反向方法的局部引用,对temp的引用只在局部作用域内


更好的实现是交换last和first、last-1、first+1等。通过这种方式,您可以修改传递的数组,也不需要第二个临时数组,只需要一个数组类型的临时变量。

这里的两个答案都非常有帮助。非常感谢各位。
Apu Flanders  Homer
public static void reverse(String[] list) {
  for (int i = 0; i < list.length / 2; i++) {
    String t = list[list.length - i - 1];
    list[list.length - i - 1] = list[i];
    list[i] = t;
  }
}