Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于JAVA中的引用赋值和值赋值 案例1_Java - Fatal编程技术网

关于JAVA中的引用赋值和值赋值 案例1

关于JAVA中的引用赋值和值赋值 案例1,java,Java,输出:不同 案例2 输出:相同 有人能给我解释一下这些计划的结果吗? 第一种情况创建两个不同的对象,每个对象在内存中都有自己的引用/实体。同一类中的实例,但无论如何都是不同的对象 在第二种情况下,将相同的对象引用分配给新的狗实例:它们都引用相同的对象 操作符比较对象的引用。在第二种情况下,它们都引用相同的狗 这适用于对象,而不是原语;对于原语,将比较值本身 Java规范 如果相等运算符的操作数都是引用 类型或空类型,则操作为对象相等。A. 如果无法转换类型,则会发生编译时错误 通过强制转换将

输出:不同

案例2 输出:相同

有人能给我解释一下这些计划的结果吗?

  • 第一种情况创建两个不同的
    对象
    ,每个对象在内存中都有自己的引用/实体。同一类中的实例,但无论如何都是不同的对象
  • 在第二种情况下,将相同的
    对象
    引用分配给新的
    实例:它们都引用相同的
    对象
操作符比较对象的引用。在第二种情况下,它们都引用相同的

这适用于
对象
,而不是原语;对于原语,将比较值本身


Java规范

如果相等运算符的操作数都是引用 类型或空类型,则操作为对象相等。A. 如果无法转换类型,则会发生编译时错误 通过强制转换将一个操作数转换为另一个操作数的类型 (§5.5). 两个操作数的运行时值必须是 不平等

在运行时,如果操作数值都为null或都引用同一对象或数组,则==的结果为真;否则,结果是 为假。


这个问题很模糊。请提供更多细节并提出具体问题。您可能希望修改本指南:另外,在发布任何代码之前,请先介绍您的问题。您是否可以尝试用自己的话解释一下
oldDog=aDog
行的作用?“内存地址”通常是在讨论JVM时引入的一个误导性概念;Java文档通常只是简单地使用“相同/相同的对象”。@chrylis谨慎的光学同意,来自c世界,这在某种程度上是误导的。我更新了答案,希望现在更干净。谢谢你的评论!
public static void main(String[] args) {
    Dog aDog = new Dog()
    Dog oldDog = new Dog()
if(aDog== oldDog) {
  System.out.println("Same");
} else {
  System.out.println("Different");
}

}
public static void main(String[] args) {
    Dog aDog = new Dog();
    Dog oldDog = aDog;

if(aDog== oldDog) {
  System.out.println("Same");
} else {
  System.out.println("Different");
}

}