java中类的构造函数的参数是同一个类的对象?

可以解释一下图片中的题目吗?

没什么问题啊,main函数中首先使用第一构造函数构造出实例c1 = new Complex(10,15),再使用第二构造函数构造出实例c2 = new Complex(c1),在第二构造函数中,将实例c1的re和im分别赋值给实例c2的re和im,实现将c1的属性值复制给c2。
总之,构造函数的参数可以是任何对象。追问

那为什么c3==c2是false呢

追答

这个就是真正意义上的面向对象了,以及对“==”的理解,你看着c3和c2长得一模一样,拥有相同的值,但是他们是同一个对象的不同实例,他们在内存中是不同的东西,而==比较的就是两个实例在内存中的地址,只有像c3 = c1这种方式让两个实例在内存中地址也相等,==才会为true。所以在比较两个对象是否相等时,不能简单地使用==比较,最好是重写equals()方法,使用它进行比较。你可以再看下下面我写的例子,其中s4和s5比较特殊,这种字符串的定义,是在java的JVM的栈中直接将地址指向"1",所以s4和s5是==的。

追问

谢谢谢谢

温馨提示:内容为网友见解,仅供参考
第1个回答  2019-10-21
两个对象。。。
相似回答