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

如果我做对象a = b,然后b.change()也会改变吗?

姬弘文
2023-03-14
问题内容

如果我有

public class Bike{
    private int speed;

    public void setSpeed(int speed){
        this.speed=speed;
    }

   public int getSpeed(){
        return speed;
    }

然后,如果我创建Bike a=new Bike();执行

Bike b=a;
b.setSpeed(12);

自行车的速度也会a改变吗?如果没有,那有什么办法吗?


问题答案:

是的,它将改变。Java Assignment操作仅创建对该对象的新 引用 。换句话说写类似

Object objectA = objectB

不会 复制对象中的所有值。objectA和objectB都指向该类的相同 实例

如果要复制对象的所有值,则应查看克隆



 类似资料:
  • 在vue3中, 如果我按上面的写法,将currentOptional赋值到了myOptionalList中后, 清空currentOptional,发现myOptionalList也会被清空 我知道这是引用传递的问题,解决方法是进行深拷贝, 但是我有点疑惑,我记得vue2中好像不存在这种问题啊, 是我记错了吗

  • 问题内容: 我以为我知道Python,直到今晚。做这样的事情的正确方法是什么?这是我的代码: 基本上,我想知道,而不是该步骤,我将如何正确地制作列表或字典的副本,以便更改时不会随之更改? 问题答案: 您正在体验的是引用的概念。Python中的所有对象都有一个引用,当您将一个名称分配给两个名称和时,这将导致两者并指向 _同一_对象。 随着名单,你可以创建一个新的列表是一个 副本, 另一个使用。 有关

  • 问题内容: 我刚刚有人问我一个问题。 问 -Java是否支持多重继承? 我 -不 问-Java中的每个类都扩展了类Object(类Object除外),如果我们从外部扩展了一个类,例如 那么你可以说A类扩展了B类和Object类,这意味着它是多重继承。那么怎么说Java不支持多重继承呢? 我 -实际上,类B扩展了类Object,因此,当你在类A中扩展类B时,类A间接扩展了类Object。这是多级继承

  • 对象1:new StringBuilder() 对象2:new String("a") 对象3:常量池中的"a" 对象4:new String("b") 对象5:常量池中的"b" 深入剖析:StringBuilder中的toString(): 对象6:new String("ab") 强调一下,toString()的调用,在字符串常量池中,没有生成"ab" 附加题 String s1 = new

  • 问题内容: 我已经看了这个答案,它说明了如何: 在新的内存模型下,当线程A写入易失性变量V,而线程B从V读取时,现在保证了在写入V时A可见的任何变量值对B可见。 因此,给出示例: 尽管(仅)不易变性,但是否保证线程b看到(从-1到1)的更改? 如果是这样的话,给定一系列更改是为了使另一个线程可见,那么除了最后一个可变变量之外,是否要对其他任何变量进行更改有没有目的? 问题答案: 是的,保证对b 的

  • 问题内容: 这是我的第一个问题,我开始学习Python。之间有什么区别: 和 在下面的示例中编写时,它显示不同的结果。 和 问题答案: 在中,在将右侧的表达式赋给左侧之前对其求值。因此,它等效于: 在第二个示例中,运行时已更改的值。因此,结果是不同的。