相关疑难解决方法(0)

Java通过引用传递

这2个代码有什么区别:

代码A:

Foo myFoo;
myFoo = createfoo();
Run Code Online (Sandbox Code Playgroud)

哪里

public Foo createFoo()
{
   Foo foo = new Foo();
   return foo;
}
Run Code Online (Sandbox Code Playgroud)

比.代码B:

Foo myFoo;
createFoo(myFoo);

public void createFoo(Foo foo)
{
   Foo f = new Foo();
   foo = f;
}
Run Code Online (Sandbox Code Playgroud)

这2个代码之间有什么区别吗?

java terminology parameter-passing pass-by-reference pass-by-value

30
推荐指数
2
解决办法
3万
查看次数

java数组按引用传递不起作用?

我认为几乎所有语言都包括java传递数组作为参考(可修改)

但不知何故,它在这里不起作用.并且testArray仍然是1,2,3,大小为3

如果我将结果[i] = 2更改为[1] = 2,那就太奇怪了 这行得通 .它确实通过引用传递

这段代码有什么问题?

最后,我有一个=结果; (更新a).结果从堆栈中删除了.这就是为什么一个仍然得到原来的?

我很迷惑.

谢谢

class Test
{
   public static void main(String[] args)
   {

      int[] testArray = {1,2,3};
      equalize(testArray, 6);

      System.out.println("test Array size :" + testArray.length);
      for(int i = 0; i < testArray.length; i++)
         System.out.println(testArray[i]);
   }

   public static void equalize(int[] a, int biggerSize)
   {
      if(a.length > biggerSize)
         throw new Error("Array size bigger than biggerSize");

      int[] result = new int[biggerSize];
     // System.arraycopy(a, 0, result, 0, a.length);
     // int array default value should …
Run Code Online (Sandbox Code Playgroud)

java

28
推荐指数
3
解决办法
4万
查看次数

从一个数组到另一个数组的奇怪副本值

当我在Java中查看代码示例时,我看到了一个奇怪的代码:

public class Application {
     public static void main(String[] args) {
          String[] x = {"A"};
          String[] y = x;
          x[0] = "B";
          System.out.print(x[0] + " " + y[0]);
     }
}
Run Code Online (Sandbox Code Playgroud)

我不明白,为什么结果"B B"是正确的?当我创建并初始化数组x和y并且指定数组x的零元素等于B时,我认为答案必须是"B A".

java

3
推荐指数
1
解决办法
88
查看次数

Java中的赋值运算符

class App{   
    int[] a;

    private void firstFunction(){
        int[] b = {1, 2, 3, 4};
        a = new int[4];
        a = b;
    }

    private void secondFunction(){
        for(int i=0; i<a.length; a++) System.out.println(a[i]);
    }
}
Run Code Online (Sandbox Code Playgroud)

双方ab都朝着同一个内存指针.当b超出范围时,应该释放分配的内存并且a应该变为空,对吧?或者它是基于引用计数方法,b被删除但内存仍然存在?

java arrays pointers memory-management

0
推荐指数
2
解决办法
125
查看次数