相关疑难解决方法(0)

java - 通过引用模糊调用

我熟悉java中的引用概念,但看到这段代码后我很困惑

public class App 
{
    public static void main( String[] args )
    {
        Test t1 = new Test(1);
        Test t2 = new Test(8);
        App.doSomething(t1, t2);
        System.out.print(t1.a);
        System.out.print(t2.a);
    }
    public static void doSomething(Test t1, Test t2){
        System.out.print(t1.a++);
        System.out.print(t2.a++);
        t1 = new Test(999);
        t2 = new Test(888);
    }
}
Run Code Online (Sandbox Code Playgroud)

打印:

1
8
2
9
Run Code Online (Sandbox Code Playgroud)

为什么主函数中"t1.a"和"t1.b"的值不变为888和999?

java pass-by-reference

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

JAVA可变范围

我正在查看一些旧问题进行测试,但我遇到了一个非常简单的问题,但这不是我的预期.

public class Exampractice {
  public static void f(int x, int[] y, int[] z) {
    x = 2;
    y[0] = x;
    z = new int[5];
    z[0] = 555;
  }
  public static void main(String[] args) {
    int x = 111;
    int[] y = {222, 333, 444, 555};
    int[] z = {666, 777, 888, 999};
    f(x, y, z);
    System.out.println(x);
    System.out.println(y[0]);
    System.out.println(z[0]);
  }
}
Run Code Online (Sandbox Code Playgroud)

该问题询问以下代码的结果是什么.我得到以下结果:

111 
2 
666 
Run Code Online (Sandbox Code Playgroud)

我理解为什么x是111,因为局部变量覆盖所有其他变量,y [0] = 2,因为代码说它等于x,这是2,但我迷失了为什么z [0] = 666,因为它已在f中重新排列类.

java

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

Java:如何将整数和字符串存储在数组中并在另一个类中检索值?

我有一个模型:fase.java,带有整数和字符串+ getter 和 setter:

public class Fase implements Serializable {
private Integer age;
private String name;
}
Run Code Online (Sandbox Code Playgroud)

我想将整数和字符串存储在数组或数组列表中。我现在用这个:

public String[] getAllValues(){
String[] values = {age.toString(), name};
return values;
Run Code Online (Sandbox Code Playgroud)

然后在 dataServiceImpl.java 中,我使用以下命令检索数据:

user.getFase().getAllValues()[0]; 
Run Code Online (Sandbox Code Playgroud)

并检索年龄。

这是可行的,但我有的不仅仅是年龄和姓名,并且正在考虑是否可以将 Fase.java 中的所有内容放入一个 Array/ArrayList 中,因为它们是 Integer 和 String,然后在 dataServiceImpl.java 中检索它?

Fase.java 中是这样的:ArrayList <Objects> f3Values = new ArrayList <Objects>();

或者Fase [] f3Array = new Fase[34];

然后使用以下命令在 dataServiceImpl.java 中检索它:ArrayList<Fase3.Fase3Array> f3List = new ArrayList<Fase3.Fase3Array>(); 并使用类似:user.f3List[0];?

java arrays oop arraylist object

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

OCJP的误解

我准备参加OCJP考试,我有一个棘手的问题.我不知道为什么正确的答案是下一个:"B.300-300-100-100-100"问题听起来像这样:

1.    class Foo {

2.        private int x;

3.        public Foo(int x) {
4.            this.x = x;
5.        }

6.        public void setX(int x) {
7.            this.x = x;
8.        }

9.        public int getX() {
10.            return x;
11.        }
12.    }

13.    public class Gamma {

14.       static Foo fooBar(Foo foo) {
15.            foo = new Foo(100);
16.            return foo;
17.        }

18.        public static void main(String[] args) {
19.            Foo foo = new Foo(300);
20.            System.out.println(foo.getX() …
Run Code Online (Sandbox Code Playgroud)

java

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

将对象和原始数据作为Java中的参数传递有什么区别?

我对传递对象和原始数据作为Java中的参数之间的区别感到有点困惑.我在这里读了一篇文章,解释说当你传递原始数据时,你复制那些数据然后传递它,但是如果传递一个对象,那么你就会传递一个对象引用.我还阅读了这篇讨论,解释说Java中没有传递引用.那么上面两个传递之间的真正区别是什么以及为什么Java以不同方式处理它们?提前致谢.

java parameters primitive

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

改变私人变量

几个月后我开始学习Java课程,并且我正在尝试制作一个简单版的口袋妖怪游戏.到现在为止一切都很顺利,但现在我遇到了麻烦.

我的地图有障碍存储在Array(私有)中的类中,并使用get方法在其他类中使用Array.不知何故,这些其他类在第一个类中更改了Array.

这怎么可能?

java private

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

为什么函数不能改变其参数对象的地址/参考值?

我了解到在Java和C中,您可以分配指针,将指针传递给方法,跟随方法中的指针并更改指向的数据.但是,您无法更改指针指向的位置.

我认为由于它的传递引用功能,我可以在C++中看到不同的行为,但我的代码似乎同意上述声明......

void reassign(string & a);
int main()
{
    string x = "abcd";
    cout <<"x is " << x <<" at " << &x <<endl;    //"x is abcd at 0x7bc7ebd5b720"
    reassign(x);
    cout <<"x is " << x <<" at " << &x <<endl;    //"x is efgh at 0x7bc7ebd5b720"

}

void reassign(string & a)
{
    a = string("efgh");
}
Run Code Online (Sandbox Code Playgroud)

由于"string()"构造一个新字符串,为什么"重新分配"函数不会改变原始字符串的地址?

c++ reference parameter-passing pass-by-reference

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

链接列表和指针说明

在Cracking the Coding Interview Linked List问题中:编写代码以从未排序的链表中删除重复项,解决方案是

public static void deleteDups (LinkedListNode n){
  Hashtable table = new Hashtable();
  LinkedListNode previous = null;
  while(n!=null){
      if(table.containsKey(n.data)){
          previous.next = n.next;
      } else {
          table.put(n.data, true);
          previous = n;
      }
      n = n.next;
  }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是为什么不n = n.next改变传递给函数的链表,但是做previous.next = n.nextprevious = n确实改变了传入的链表?

java linked-list

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

包装类是通过值传递还是通过引用传递?

我知道java是通过引用传递的,但仅适用于Java对象.但是为什么它不适用于Java Wrapper类?包装类如Integer,Float,Double是通过引用传递还是通过值传递?因为每当我在方法中传递此类的对象并且更改某些值时,但在该方法之外我没有获得更新的值.

java

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

存储对象的引用

我想在某个类中存储对变量的引用,并在此类中对其进行操作.操作应该修改原始变量.特别是下面的代码应该打印1而不是0.

class Test {
    private Long metric;

    public Test(Long m) {
        this.metric = m;
        ++this.metric;
    }
}

class Ideone
{
    public static void main (String[] args) throws java.lang.Exception
    {
        Long metric = 0L;
        Test test = new Test(metric);
        System.out.println(metric);
    }
}
Run Code Online (Sandbox Code Playgroud)

如何实现这种行为?

java

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