当前位置: 首页 > 面试题库 >

如何使Java分配指向一个对象而不是进行复制?

黎震博
2023-03-14
问题内容

在课堂上,我有:

private Foo bar;
public Constructor(Foo bar)
{
    this.bar = bar;
}

除了可以从参数中提供的对象创建bar的副本之外,还可以在构造函数中包含指向bar的指针,以便更改原始bar会更改此对象中的字段吗?

另一种放置方式:

int x = 7;
int y = x;
x = 9;
System.out.print(y); //Prints 7.

可以进行设置,以便打印y打印9而不是7?


问题答案:

您的最后一个示例以这种方式工作,因为 int 是基元,它是按值复制的。在第一个示例中,“ this.bar ”将保存对 bar
的引用(某种指针)的副本。因此,如果您(在内部)更改了原始栏,则更改将反映在您的班级中。试试吧。



 类似资料:
  • 根据这个答案,https://stackoverflow.com/a/12020435/562222,将一个对象分配给另一个对象只是复制引用,但让我们看看以下代码段: 运行它可以提供:

  • 这是读取普通可复制对象字节的常见方法 问题不在于严格别名,< code>char*可以给任何东西起别名。问题在于[expr.add]中的这段话 当具有整数类型的表达式被添加到指针或从指针中减去时,结果具有指针操作数的类型。如果表达式指向具有元素的数组对象的元素,则表达式和(其中具有值)指向(可能是假设的)元素if;否则,行为未定义。同样,表达式指向(可能是假设的)元素if;否则,行为未定义。 其中

  • 我有一个,带有几个属性,如,,等。 它的所有属性都有getter和setter。 我得到一个

  • 我有一个类赋值,我需要将一个目标排序到一个二叉树节点中,给定一个根,我需要将它与根进行比较,如果目标小于根的值,则将目标作为左子,或者如果目标大于根的值,则将目标作为右子。 我必须使用给定的方法头和参数,我的代码是这样编写的: 返回以下错误: java:109:错误:二进制运算符“<”的操作数类型不正确 我还尝试了compareTo方法,通过尝试类似于 返回以下错误: binarySearchTr

  • 问题内容: 我试图例如仅获取对象bob的ID列表,而不是bob的列表。可以使用HQL请求,但是我想知道是否可以使用条件? 一个例子 : 问题答案: 我认为您可以使用Projections做到这一点,例如

  • 您好,感谢您能提供的任何帮助。 最重要的是,我已经重新安装了java和maven,并多次重启了我的计算机和命令行。