相关疑难解决方法(0)

Java是"通过引用传递"还是"传递价值"?

我一直认为Java是传递引用的.

但是,我看过一些博客文章(例如,这个博客)声称它不是.

我不认为我理解他们所做的区别.

解释是什么?

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

6270
推荐指数
80
解决办法
189万
查看次数

数组是通过值传递还是通过Java引用传递?

可能重复:
Java是"传递引用"吗?

数组在Java 中不是原始类型,但它们也不是对象,它们是通过值还是通过引用传递的?它取决于数组包含的内容,例如引用或基本类型吗?

java arrays

164
推荐指数
5
解决办法
18万
查看次数

在java中交换对象

我已经研究过java是通过引用传递但是当我执行下面的代码时,字符串在主方法中没有交换为什么?

static void swap(String s1, String s2){
    String temp = s1;
    s1=s2;
    s2=temp;
}

public static void main(String[] args) {
    String s1 = "Hello", s2 = "world";
    swap(s1, s2);
    System.out.println(s1 + s2);
}
Run Code Online (Sandbox Code Playgroud)

java pass-by-reference

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

不变和传递价值

我有以下代码,它有
一个可变的Person类,String和一个修改String和Person实例的方法

    class Person{

int a = 8;

public int getA() {
    return a;
}

public void setA(int a) {
    this.a = a;
}

@Override
public String toString() {
    return "Person [a=" + a + "]";
}

  }
Run Code Online (Sandbox Code Playgroud)

-

public class TestMutable {
public static void main(String[] args)
{
    Person p = new Person();
    p.setA(34);


    String s = "bar";

             modifyObject(s, p);   //Call to modify objects

    System.out.println(s);
    System.out.println(p);

}



private static void modifyObject(String str, Person p)
{

        str = "foo";
        p.setA(45); …
Run Code Online (Sandbox Code Playgroud)

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

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

将ArrayList作为参数传递

首先让我说我不能在这里放任何代码,因为我的笔记本电脑上的互联网不能工作,所以我通过手机发布这个.好吧问题是我说有两个类:第一和第二类.第一类有一个ArrayList属性,它从类2中调用void方法并将其ArrayList作为参数传递.现在该方法初始化另一个方法ArrayList并使其等于我传递的参数并对该新方法进行更改ArrayList.有趣的是,即使我作为参数传递的原始ArrayList也在改变.可能的原因是什么?

java arrays arraylist

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

Java:如果在线程中使用的Runnable设置为null,会发生什么?

说我做以下......

// MyRunnable是我声明的类,它实现了Runnable.

MyRunnable r = new MyRunnable();
Thread t = new Thread(r);
t.start();

r = null;
Run Code Online (Sandbox Code Playgroud)

将r设置为null有什么意义,就像我在上面的代码片段中一样?

java multithreading runnable

7
推荐指数
2
解决办法
1330
查看次数

通过引用/值传递 - 简单的例子

我知道这个问题已经解决了很多次 - 但我的Java/C++知识太弱了我几乎无法理解答案:-( ...我真正喜欢的只是一个非常简单的例子.

在C++中,我可以编写以下内容:

void func()
{
  int x = 3;
  add_one(x);
  // now x is 4.
}
void add_one(int &var)
{
  var++;
}
Run Code Online (Sandbox Code Playgroud)

我现在想看到的是用java实现相同效果的最简单方法.

java

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

'void'方法何时影响参数,何时影响原始对象?

我是编程以及本网站的新手,所以如果我搞砸了,请原谅我.我有一点时间搞清楚如何在这里正确发布我的代码.

package tester;
import java.util.*;
public class Mainclass2 {
    public static void main(String[] args) {

        int y = 3; 
        int[] x = {1, 2, 3, 4};

        editnumbersArray(x);
        editnumbersNotArray(y);

        System.out.println(x[2]); **//now this was changed from 3 to 9...**
        System.out.println(y);    //but this one went unchanged.

    }

    //this accepts 'x[]' into the 'a[]' parameter.
    public static void editnumbersArray(int[] a){
        a[2] = 9;  **//<---why does this one CHANGE the actual x[2] instead of just a[2]?**
    }

    //this accepts 'y' into the 'a' parameter.
    public …
Run Code Online (Sandbox Code Playgroud)

java parameters methods return-value void

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

Equated Java Arrays中的奇怪之处:引用与指针

有一个问题,了解下面的代码正在发生什么.阵列的行为c,并d为我所期望的那样.但是,这是怎么回事与ab?(我也尝试使用普通的标量变量,在任何一种情况下都不会发生任何意外.)

输出将复制到RH注释.

import java.util.Arrays;

public class ArraysParadox {

    public static void main(String[] args) {

        int[] c = {1, 2, 3};
        int[] d = {6, 5, 4, 3};

        System.out.print("c:       ");
        System.out.println(Arrays.toString(c)); // c:       [1, 2, 3]

        System.out.print("d:       ");
        System.out.println(Arrays.toString(d)); // d:       [6, 5, 4, 3]

        System.out.println("--- swap ---");
        int[] tmp = c;
        c = d;
        d = tmp;    // <----- Magic?

        System.out.print("c' (=d): ");
        System.out.println(Arrays.toString(c)); // c' (=d): [6, 5, 4, 3]

        System.out.print("d' …
Run Code Online (Sandbox Code Playgroud)

java arrays pointers

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

在字节数组中存储对象引用

我有一个字节数组和一个对象引用.

    byte[] data = new byte[128];

    Block b = new Block();
Run Code Online (Sandbox Code Playgroud)

我想在"data"数组的最后2(或4)个字节中存储引用b .

请注意:我不想序列化对象并存储在字节数组中.我需要存储一个引用新块的指针(引用).

编辑

我的Block类如下

    public class Block {
        byte[] data ;

        public Block(){
            data = new byte[128];
        }
}
Run Code Online (Sandbox Code Playgroud)

基本上,数据数组将使用126个字节来存储字符串,并使用最后两个(或4个)字节来存储对另一个块的引用.它的链接列表.

我本可以使用Block类的不同定义[通过在类本身中包含对Block的引用]来完成它.但是问题语句指出只有最后2个字节的约束应该用作对另一个块的引用.从其他帖子我开始知道在jvm(32位)中,引用的大小为4个字节.因此我认为它只能使用最后4个字节来完成

来自问题陈述的片段

块的最后2个字节用于指向下一个块.假设文件是​​8块大小,那么第4块的最后2个字节将指向第5块,第5块的最后2个字节指向第6块,依此类推.

java memory arrays byte object-reference

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